Programming multi-core and many-core computing systems
Programming multi-core and many-core computing systems
Sabri Pllana, Linnaeus University, Sweden
Fatos Xhafa, Technical University of Catalonia, Spain
Provides state-of-the-art methods for programming multi-core and many-core systems
The book comprises a selection of twenty two chapters covering: fundamental techniques and algorithms; programming approaches; methodologies and frameworks; scheduling and management; testing and evaluation methodologies; and case studies for programming multi-core and many-core systems.
Program development for multi-core processors, especially for heterogeneous multi-core processors, is significantly more complex than for single-core processors. However, programmers have been traditionally trained for the development of sequential programs, and only a small percentage of them have experience with parallel programming. In the past, only a relatively small group of programmers interested in High Performance Computing (HPC) was concerned with the parallel programming issues, but the situation has changed dramatically with the appearance of multi-core processors on commonly used computing systems. It is expected that with the pervasiveness of multi-core processors, parallel programming will become mainstream.
The pervasiveness of multi-core processors affects a large spectrum of systems, from embedded and general-purpose, to high-end computing systems. This book assists programmers in mastering the efficient programming of multi-core systems, which is of paramount importance for the software-intensive industry towards a more effective product-development cycle.
- Lessons, challenges, and roadmaps ahead.
- Contains real world examples and case studies.
- Helps programmers in mastering the efficient programming of multi-core and many-core systems.
The book serves as a reference for a larger audience of practitioners, young researchers and graduate level students. A basic level of programming knowledge is required to use this book.
List of Contributors
Part I: Foundations
Chapter1: Multi and Many cores, Architectural Overview for Programmers
Lasse Natvig, Alexandru Iordan, Mujahed Eleyat, Magnus Jahre, and Jorn Amundsen
Chapter 2: Programming Models for Multi Core and Many Core Computing Systems
Ana Lucia Varbanescu, Rob V. van Nieuwpoort, Pieter Hijma, Henri E. Bal, Rosa M. Badia, and Xavier Martorell
Chapter 3: Lock-free Concurrent Data Structures
Daniel Cederman, Anders Gidenstam, Phuong Ha, Håkan Sundell, Marina Papatriantafilou, and Philippas Tsigas
Chapter 4: Software Transactional Memory
Part II: Programming Approaches
Chapter 5: Heterogeneous Programming with OMPSs and its Implications
Eduard Ayguade, Rosa M. Badia, Pieter Bellens, Javier Bueno, Alejandro Duran, Yoav Etsion, Montse Farreras, Roger Ferrer, Jesus Labarta, Vladimir Marjanovic, Lluis Martinell, Xavier Martorell, Josep M. Perez, Judit Planas, Alex Ramirez, Xavier Teruel, Ioanna Tsalouchidou, and Mateo Valero
Chapter 6: Skeleton Programming for Portable Many Core Computing
Christoph Kessler, Sergei Gorlatch, Johan Enmyren, Usman Dastgeer, Michel Steuwer, and Philipp Kegel
Chapter 7: DSL stream programming on multicore architectures
Pablo de Oliveira Castro, Stéphane Louise, and Denis Barthou
Chapter 8: Programming with Transactional Memory
Vincent Gramoli and Rachid Guerraoui
Chapter 9: Object oriented Stream Programming
Frank Otto and Walter F. Tichy
Chapter 10: Software Based Speculative Parallelization
Chen Tian, Min Feng, and Rajiv Gupta
Chapter 11: Autonomic Distribution and Adaptation
Lutz Schubert, StefanWesner, Daniel Rubio Bonilla, and Tommaso Cucinotta
Part III: PROGRAMMING FRAMEWORKS
Chapter 12: PEPPHER: Performance Portability and Programmability for Heterogeneous Manycore Architectures
Siegfried Benkner, Sabri Pllana, Jesper Larsson Träff, Philippas Tsigas, Andrew Richards, George Russell, Samuel Thibault, Cédric Augonnet, Raymond Namyst, Herbert Cornelius, Christoph Keÿler, David Moloney, and Peter Sanders
Chapter 13: FastFlow: Highlevel and Efficient Streaming on Multicore
Marco Aldinucci, Marco Danelutto, Peter Kilpatrick, and Massimo Torquati
Chapter 14: Programming Framework for H.264/AVC Video Encoding in Multi-Core Systems
Nuno Roma, António Rodrigues, and Leonel Sousa
Chapter 15: Parallelizing Evolutionary Algorithms on GPGPU Cards with the EASEA Platform
Ogier Maitre, Frederic Kruger, Deepak Sharma, Stephane Querry, Nicolas Lachiche, and Pierre Collet
Part IV: Testing, Evaluation and Optimization
Chapter 16: Smart Interleavings for Testing Parallel Programs
Chapter 17: Parallel Performance Evaluation and Optimization
Chapter 18: A Methodology for Optimizing Multithreaded System Scalability on Multi-cores
Neil Gunther, Shanti Subramanyam, and Stefan Parvu
Chapter 19: Improving System Performance through Data Compression
Ozcan Ozturk and Mahmut Kandemir
PART V: Scheduling and Management
Chapter 20: Programming and Managing Resources on Accelerator Enabled Clusters
M. Mustafa Rafique, Ali R. Butt, and Dimitrios S. Nikolopoulos
Chapter 21: An approach for efficient execution of SPMD applications on Multicore Clusters
Ronal Muresano, Dolores Rexachs, and Emilio Luque
Chapter 22: Operating System and Scheduling for Future Multi-core and Many-core Platforms
Tommaso Cucinotta, Giuseppe Lipari, and Lutz Schubert
Fatos Xhafa received his PhD in Computer Science in 1998 from the Technical University of Catalonia (UPC), Barcelona, Spain. Currently, he holds a permanent position of Professor Titular d’Universitat at UPC. He was a Visiting Professor at University of London (UK), 2009-2010, and Research Associate at Drexel University (USA), 2004/2005. He has widely published in international journals, conferences/workshops, book chapters, edited books and proceedings in the field. He is editor in Chief of the International Journal of Grid and Utility Computing, International Journal of Space-based and Situated Computing, Inderscience. He is Editor in Chief of the Elsevier Book Series “Intelligent Data-Centric Systems” and of Springer Lecture Notes in Data Engineering and Communication Technologies. He is a member of IEEE Communications Society, IEEE Systems, Man & Cybernetics Society and Emerging Technical Subcommittee of IoT. His research interests include parallel and distributed computing, massive data processing, collective intelligence, optimization, trustworthy computing, machine learning, etc.