Litcius/Paper detail

Multicore and GPU Programming: An Integrated Approach

Gerassimos Barlas

202149 citations

Abstract

Multicore and GPU Programming offers broad coverage of the key computing skillsets: multicore CPU programming and manycore massively parallel computing. Using threads, OpenMP, MPI, and CUDA, it teaches the design and development of software capable of taking advantage of today?s computing platforms incorporating CPU and GPU hardware and explains how to transition from sequential programming to a computing paradigm. Presenting material refined over more than a decade of teaching computing, author Gerassimos Barlas minimizes the challenge with multiple examples, extensive case studies, and full source code. Using this book, you can develop programs that run over distributed memory machines using MPI, create multi-threaded applications with either libraries or directives, write optimized applications that balance the workload between available computing resources, and profile and debug programs targeting multicore machines. Comprehensive coverage of all major multicore programming tools, including threads, OpenMP, MPI, and CUDA Demonstrates programming design patterns and examples of how different tools and paradigms can be integrated for superior performance Particular focus on the emerging area of divisible load theory and its impact on load balancing and distributed systems Download source code, examples, and instructor support materials on the book's companion website Table of Contents 1 Introduction 2 Multicore and Parallel Program Design 3 Shared-memory programming: Threads 4 Shared-memory programming: OpenMP 5 Distributed memory programming 6 GPU Programming 7 The Thrust Template Library 8 Load Balancing A Compiling Qt programs B RunningMPI Programs: Preparatory and Configuration Steps C Time Measurement D Boost.MPI E Setting up CUDA F DLTlib

Topics & Concepts

Computer scienceCUDAMulti-core processorProgramming paradigmParallel computingShared memoryGeneral-purpose computing on graphics processing unitsDebuggingComputer architectureOperating systemGraphicsProgramming languageParallel Computing and Optimization TechniquesDistributed and Parallel Computing SystemsAlgorithms and Data Compression