Here’s a paper I had to write recently regarding multi-core computing. It’s a reflection on a paper entitled “View from Berkeley”.

View From Berkeley is a document outlining the vision of the Universal Parallel Computing Research Center at the University of Illinois and associated justification it’s research. Topics discussed include the current state of multi-core computing, parallel programming models, the foreseen future within those topics (from UPCRC Illinois’ perspective), and the efforts UPCRC Illinois is putting forth regarding research in the field of parallel computing. Parallel computing isn’t a new field; according to Wikipedia IBM introduced the first digital parallel computer in 1954, the 704, which in which Gene Amdahl was one of the principle architects. However, again according to Wikipedia, parallel devices date back to Charles Babbage’s Analytic Engine.

Parallel architectures are really starting to define the modern computing world. Both Intel and AMD, the leading producers of consumer-level super scalar processors, have two-, three-, and four-core architectures on the market. Sun Microelectronics’ UltraSPARC line has scaled up to eight cores and IBM’s PowerPC line isn’t far behind. With industry-changing technologies, however, come industry-changing challenges. The biggest issue, according to View from Berkeley, facing modern parallel computing software — and hardware — developers is the shortcomings of current parallel computing programming models.

Current models are bug-prone and fairly static. They don’t scale well which is specifically crucial considering hardware developers’ primary focus is stuffing more cores on a single die. The problem should be expected however. Programmers have been following the sequential programming model since nearly the inception of digital programming! Thus, according to View from Berkeley UPCRC Illinois has a three-pronged approach to research in this field: Focus on disciplined parallel programming, push a multi-front attack on multi-core programming, and take a human-centric vision of future consumer applications.

This is a hardware- and software-oriented problem. Hardware developers can make hardware faster and more efficient as much as they like – if it’s difficult to program no one will use it. Consumers are eager to take advantage of the latest technology; thus, software developers are often forced work with cumbersome technology.

For instance, consider the release of Sony’s PlayStation 3. The PlayStation 3 was the first computing device to take advantage of IBM’s 7-core CELL processor. At the PlayStation 3’s release the compiler provided by Sony was very buggy and software developers really didn’t like the platform. Many titles were never released to the PlayStation 3 because of this. However, consumers bought PlayStation 3s and expected software for them. Developers were forced to work with the hardware and were very dissatisfied with the hoops they had to jump through.

Hardware and software developers need to work together to produce a new programming model for multi-core environments. This is one of the focuses of UPCRC Illinois’ research – developing effective parallel computing ecosystems for software and hardware developers.

The final consideration regarding this problem is how important is it? Compare this to issues like global warming, eco-friendly energies, or world hunger. I think most would argue that, indeed, the aforementioned problems are much more important from humanities perspective – who’s going to use your technology if everyone dies from starvation?Lucky for us, the scientists of the world (or at least the developed world), there is a lot of money to go around. There are other specializations available to concentrate on those problems. From our perspective, however, advances in computing technology will essentially halt if the multi-core programming paradigm isn’t explored to its fullest and a strong multi-core programming culture isn’t cultivated.