The many-core chip revolution is well underway.  While there are still hurdles to be overcome, the viability and eventual mainstream commercialization of this technology is just around the corner.

 

Commenting on the future of HP’s innovation in a Nov 21, 1011 NY Times article, CEO Meg Whitman sees strength in low-power servers like those used in mobile phones and software to analyze very large sets of data for pattern analysis and prediction.

 

This shift to small, lower watt many-core processing will require “traditional” programmers to utilize frameworks to manage the additional tasks that are required to make their applications rum efficiently on these platforms.

 

So how do we give these programmers the tools they need to become “parallel programmers”?

 

According to Intel's Tim Mattson, one way is to separate them into two groups, each with a set of skills:

  • Subject Matter Programmers (SMPs) – These are coders familiar with higher-level languages and domain-specific expertise who can build an application that fits the user requirements and productivity needs of a target industry or function.
  • Optimization Programmers (OPs) - These are computer and data scientists who can manipulate code at the assembler level.

 

Next, an “upside-down wedding cake” framework must be developed to form the basis of a software environment that can be used to turn an application expressed in design patterns into working code.

 

In order to maintain its integrity, SMPs should not be allowed to modify the underlying framework.  This leaves the OPs with the task of developing and maintaining a single-application independent parallel programming structure.

 

At its highest level, the framework would include structural patterns such as Pipe-and-Filter, Iterative Refinement, and MapReduce.  The goal here is to define the application SW structure and not the underlying computation.

 

The middle tier would consist of computational patterns including Structured Mesh and Spectral  Methods.  Here we define what takes place inside the boxes created using the structural patterns above.

 

The lowest tier – parallel patterns – contain parallel algorithms created with Fork-Join or SPMD.

 

A working example of this approach is the Selective, Embedded, Just-In-Time Specialization (SEJITS) project underway at UC Berkeley http://parlab.eecs.berkeley.edu/research/339 .

 

Part Two of this blog post will focus on what a Many-Core Operating System design should look like in order to optimize the performance of the applications created using the framework discussed in Part One.