Programming Models for Multicore and Many-Core Computing Systems

This chapter presents a comprehensive set of many-core programming models belonging to three classes: parallelism-centric, hardware-centric and application-centric. To evaluate these models, the chapter introduces four classes of reference features: usability, design support, implementation support and programmability. The chapter discusses three classes of many-core architectures used for high performance computing: general purpose multicore processors (GPMCs), graphical processing units (GPUs) and the Cell Broadband Engine (Cell/B.E.) processor. It also presents a survey of representative multicore programming models for each of the three classes of platforms. The chapter also presents the overall evaluation of all surveyed programming models. It shows that choosing the matching platform(s) and programming model(s) remains an important first step when a new application needs a many-core port. In terms of programmability impact, low-level programming models score pretty bad, models based on sequential code are very productive, and OpenCL is a good alternative in case an application needs to be developed from scratch.

[1]  Rob van Nieuwpoort,et al.  Evaluating multi-core platforms for HPC data-intensive kernels , 2009, CF '09.

[2]  Alejandro Duran,et al.  The Design of OpenMP Tasks , 2009, IEEE Transactions on Parallel and Distributed Systems.

[3]  Ana Lucia Varbanescu,et al.  Building high-resolution sky images using the Cell/B.E. , 2009, HiPC 2009.

[4]  Michael J. Flynn,et al.  Some Computer Organizations and Their Effectiveness , 1972, IEEE Transactions on Computers.

[5]  Yili Zheng Optimizing UPC programs for multi-core systems , 2010 .

[6]  Laxmikant V. Kalé,et al.  Towards a framework for abstracting accelerators in parallel applications: experience with cell , 2009, Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis.

[7]  H. Peter Hofstee,et al.  Introduction to the Cell multiprocessor , 2005, IBM J. Res. Dev..

[8]  Anwar Ghuloum Future Proof Data Parallel Algorithms and Software on Intel Multicore Architecture , 2007 .

[9]  Alejandro Duran,et al.  Extending OpenMP to Survive the Heterogeneous Multi-Core Era , 2010, International Journal of Parallel Programming.

[10]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..