C++ and Beyond 2011
August 7-10, 2011
Banff, Alberta, Canada
A followup to last fall's sold-out event with Scott
Meyers and Andrei Alexandrescu. I'll be giving all new talks debuting at
C&B, which will appear here soon. For now, let me just guarantee that
they'll focus on high performance material you've never seen before, and
exquisitely Exceptional C++0x...
Machine Architecture: Things Your Programming Language Never Told You
(Google video) (pdf slides)
September 19, 2007
Northwest C++ Users Group,
Seattle, Washington, USA
Programmers are routinely surprised at what simple code actually does and how expensive it can be, because so many of us are unaware of the increasing complexity of the machine on which the program actually runs. This talk examines the “real meanings” and “true costs” of the code we write and run especially on commodity and server systems, by delving into the performance effects of bandwidth vs. latency limitations, the ever-deepening memory hierarchy, the changing costs arising from the hardware concurrency explosion, memory model effects all the way from the compiler to the CPU to the chipset to the cache, and more -- and what you can do about them.
Know When to Use an Active Object Instead of a Mutex
Dr. Dobb's Report, September 2010.
article: "Let’s say that your program has a shared log file object.
The log file is likely to be a popular object; lots of different
threads must be able to write to the file; and to avoid corruption,
we need to ensure that only one thread may be writing to the file at
any given time. Quick: How would you serialize access to the log
file? Before reading on, please think about the question and pencil
in some pseudocode to vet your design. More importantly, especially
if you think this is an easy question with an easy answer, try to
think of at least two completely different ways to satisfy the
problem requirements, and jot down a bullet list of the advantages
and disadvantages they trade off. Ready? Then let’s begin."
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software,
Dr. Dobb's Journal, 30(3), March 2005.
The biggest sea change in software development since the OO revolution is knocking at the door, and its name is Concurrency. This is the widely-cited landmark article that first coined the term "concurrency revolution" to describe the turn to parallel hardware and its impact on the future of software.
Software and the Concurrency Revolution (with Jim Larus),
ACM Queue, September 2005.
The concurrency revolution is primarily a software revolution. Soon all new machines will be multicore, and the difficult problem is programming this hardware so that mainstream applications benefit from the continued exponential growth in CPU performance.