« Post-ESC Impressions Big endian + Little endian byte order = biendian »

Multicore in the Age of the Unthinkable


Recently, I had the opportunity to read and finish in one weekend, ‘The Age of the Unthinkable’, by Joshua Cooper Ramo.  My attempt at a quick summary:

In the past, world affairs was driven by nation-states and the smaller number of players at this level of granularity mixed with less communication (both frequency and volume) made it possible to strategize, control, and influence this system.  However today, with the volume of change and amount of communication between orders of magnitude more people, this sort of nation-state actor strategy is insufficient and leads to unpredictable and oftentimes the opposite of expected results, e.g. actions to counter terrorism leads to an increase in terrorism.  Ramo posits that to counteract the negative forces in the world requires a strategy that is immune system-like in its response, a creative and multi-pronged approach.


As a computer scientist, I understood the concept of a world too complicated to predict outcomes.  Most computer scientists are exposed to Conway’s Game of Life (http://en.wikipedia.org/wiki/Conway’s_Game_of_Life) very early in our educations.  Another, more esoteric example is trying to predict when a neural network being trained by backpropagation will all of a sudden reach equilibrium.  I recall in both cases looking at these types of programs and just thinking, ‘Wow.  Amazing.’ – Simple actions by a large number of entities creating surprising results.


Now turning this to my work in multicore – I gave a talk last year (http://www.zurich.ibm.com/csc/software2008/domeika.html) where I referred to a thought of my colleague Tim Mattson who compared what the industry is doing in multicore with the Draeger Grocer Store Experiment.  The conjecture is that perhaps we are pursuing too many ‘solutions’ to the problems of multicore software development and as a result are confusing customers.


Putting this all together – I’d like to suggest that all of these potential solutions are needed and inevitable.  Over time, the successful techniques will emerge; customers will move toward and employ the best ones.  Now it would not be fun to be on the side of one of these losing technologies so the question is how can one help encourage their particular technology to win.  This is where a multi-pronged strategy and tactical approach is needed.  Here are some thoughts on some items that are typically thought of as lower priorities compared to the obvious goodness of your particular tech:

  • Ease-of-use – There is a natural tradeoff between ease-of-use and performance.  The level of tradeoff is determined by the programmer’s preference and ability.  That said, bugs, poor documentation, and poor diagnostics are things that can make a technology harder to use than it really should be.
  • Easy to understand – If it’s difficult to explain why your particular technology should be used over another, you’ve got a problem.  It may be the case that only a handful of techies at a customer company understands the details, however being able to distill the pros/cons of a technology is critical.  For example, in 30 seconds, why would you use OpenCL over OpenMP or Pthreads?
  • Education – Customers need outlets to gain knowledge on a particular technology – typically, the more venues available for this learning, be it onsite classes, books, webinars, blogs, etc. … the better.  Psychologically, querying the web and seeing numerous links available with this type of information can be reassuring.
  • Open Standards – Customers frankly like choice.  Open standards tend to foster more choice with regards to implementations.  Is your solution proprietary?  If so, should you consider standardization?   


Best regards,




As an aside, I’d like to recommend a book from a colleague of mine.  Clay Breshears has recently published The Art of Concurrency.  I’ve taught classes on multicore with Clay.  In fact, he was the author of much of the content from which we taught.  I’ve read some of the book and can say that it reads well, explains concepts clearly, and in the end makes understanding concurrency and multicore programming easier.  Congratulations Clay on a well written book.

date Posted on: Thursday, June 18, 2009 at 11:52 am
Category Uncategorized.
You can follow any responses to this entry through the RSS 2.0 feed.

You can leave a response, or trackback from your own site.

Leave a Reply

Domeika’s Dilemma is powered by WordPress
Theme is Coded&Designed by ricdes dot com