The Oracle white paper "Developing Parallel Programs - A Discussion of Popular Models" discusses emerging issues and key trends in the area of parallel software
development, examining several common approaches to the process of parallel programming. Such common industry frameworks, APIs, and standards as Open MultiProcessing (OpenMP), Intel Threading Building Blocks, Apache Hadoop, Message Passing Interface (MPI), and Apple’s Grand Central Dispatch are described and illustrated using a typical programming example.
In the course of the discussion, the white paper explores the outlook for parallel software development, focusing in particular on application development for shared memory multicore systems. The paper introduces two real-world application case studies to highlight some challenging parallel program design issues. Some important tools critical to parallel software design phases also are discussed, along with the pros and cons of each.
The paper takes what at first glance seems an unlikely course, tying the subject of application software development into the subjects of cloud computing (and grid computing) and service-oriented architecture (SOA). The argument demonstrates that the three areas are indeed importantly related, however.
The better part of the paper is given over to considering the shared memory model rather than the distributed computing model, in part because of the increasing availability of multicore machines. A further refinement of the paper's focus lies in its restriction to language enhancement and run-time library models of parallel programming.
Both the case studies presented in the paper examine the difficulty of developing parallel applications, in particular as it involves searches and simulations.
In its concluding section the papers discusses a number of tools that are available for developers to use in various stages of the software development cycle. These include compilation, debugging, performance tuning, and thread analysis.
The authors conclude that fundamental software development skill is the area programmers must adopt as their principal focus, no matter which development model they eventually adopt for their work. That and designing from the outset with a data structure and algorithm chosen for their suitability for parallel execution are essential, they assert.
The paper concludes with a lengthy bibliography that reflects the breadth of the issues discussed.
Parallel Programming with Oracle Developer Tools
The Evolution of Parallel Programming
Multicore Application Programming for Windows, Linux and Solaris
Read More ...