About the Book
With contributions from: M. Amini, C. Ancourt, F. Andzembe, V. Arslan, R. Barrere, M. Barreteau, J.-M. Batto, F. Boumezbeur, M. Bourgoin, F. Catthoor, E. Chailloux, H.-P. Charles, J.M. Chauvet, A. Cohen, S. Contassot-Vivier, R. Couturier, B. Creusillet, G.C. de Verdiere, V. Ducrot, J.I. Gomez, D.R.C. Hill, F. Irigoin, J.C. Juega, R. Keryell, J. Koko, J.-L. Lamotte, E. Lenormand, V. Lomuller, F. Magoules, E. Mahe, S. Monot, J. Passerat-Palmbach, T. Saidani, B. Starynkevitch, F. Tahi, D. Tello, S. Tempel, C. Tenllado, V.D. Tran, S. Verdoolaege, S. Vialle and L. Ziane Khodja. Multi-core and many-core platforms lead the computer industry, forcing software developers to adopt new programming paradigms, in order to fully exploit their computing capabilities such as graphics processing units (GPUs). GPU-based application development requires a great effort from application programmers. On one hand, they must take advantage of the massively parallel platform in the problem modeling. On the other hand, the applications have to make an efficient use of the heterogeneous memory system, managing several levels that are software or hardware controlled.
Generally the programmers' methodology consists in evaluating several mapping alternatives, guided by their experience and intuition, which becomes inefficient for software development and maintenance.This volume presents in thirteen chapters some methodologies and design patterns for parallel programing on GPUs, to help programmers make good choices. Each chapter, written by different authors, presents a state-of-the-art of some innovative methods, techniques or algorithms useful for GPU computing. A bibliography is included at the end of each chapter.The main topics considered in the book include: CUDA and OpenCL programming language, parallelizing compilers generating code, dynamic code generation, parallel skeletons, high level data flow models, optimizing source code, and numerical methods. The book includes details of the implementation of the algorithms as well as both academic and real engineering examples.
Table of Contents:
1. Evaluation of State-of-the-Art Parallelizing Compilers Generating CUDA Code for Heterogeneous CPU/GPU Computing,J.C. Juega, S. Verdoolaege, A. Cohen, J.I. Gomez, C. Tenllado and F. Catthoor 2. Data Size and Data Type Dynamic GPU Code Generation,H.-P. Charles and V. Lomuller 3. High Level GPGPU Programming with Parallel Skeletons,M. Bourgoin, E. Chailloux and J.-L. Lamotte 4. Programming GPUs from High Level Data Flow Models,M. Barreteau, R. Barrere and E. Lenormand 5. Optimization methodology for Parallel Programming of Homogeneous or Hybrid Clusters,S. Vialle and S. Contassot-Vivier 6. Program Sequentially, Carefully, and Benefit from Compiler Advances for Parallel Heterogeneous Computing,M. Amini, C. Ancourt, B. Creusillet, F. Irigoin and R. Keryell 7. Using MELT to Improve or Explore your GCC-Compiled Source Code,B. Starynkevitch 8. OpenCL: A Suitable Solution to Simplify and Unify High Performance Computing Developments,J. Passerat-Palmbach and D.R.C. Hill 9. Parallel Preconditioned Conjugate Gradient Algorithm on GPU,F. Andzembe and J. Koko 10. Solving Sparse Linear Systems with CG and GMRES Methods on a GPU and GPU Clusters,R. Couturier and L. Ziane Khodja 11. Bioinformatics of Non-Coding RNAs and GPUs, A Case Study: Prediction at Large Scale of MicroRNAs in Genomes,F. Tahi, V.D. Tran, S. Tempel and E. Mahe 12. Migrating a Big-Data Grade Application to Large GPU Clusters,D. Tello, V. Ducrot, J.-M. Batto, S. Monot, F. Boumezbeur, V. Arslan and T. Saidani 13. Testing Random Numbers: When OpenCL is the Right Choice,J.M. Chauvet and E. Mahe
About the Author :
Frederic Magoules is Professor at Ecole Centrale Paris, leading the High Performance Computing research group at the Applied Mathematics and Systems laboratory.