Compilers, Techniques, and Tools for Supporting Programming Heterogeneous Many/Multicore Systems
Pasquale Cantiello, Beniamino Di Martino, Francesco Moscato · 2013
This chapter deals with different programming models for current many/multicore and graphical processing units (GPUs) systems. It reviews the state of the art of compilers and support tools tailored to help programmers both in developing and porting code for many/multicore CPUs and GPUs. The chapter focuses on automatic parallelization compilers, techniques, and tools that do source-to-source transformation of code to convert sequential code into parallel. It presents Code Analyser and knowLedge ModEller for Transformation (CALuMET), a prototype tool implementing a component-based architecture designed to assist the user in the process of software migration by showing extracted knowledge from code and by driving automatic transformation of parallelizable regions of code. The chapter integrates an algorithmic recognizer to find instances of known algorithms in the code, model the extracted knowledge, and drive a source-to-source transformer to convert sequential code to a parallel version by using libraries for GPUs.