Programming Models for Multicore and Many-Core Computing Systems

Abstract

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.

Publication
Programming Multicore and Many-Core Computing Systems