GPU Parallel Program Development Using CUDA

Tolga Soyata

買這商品的人也買了...

相關主題

商品描述

GPU Parallel Program Development using CUDA teaches GPU programming by showing the differences among different families of GPUs. This approach prepares the reader for the next generation and future generations of GPUs. The book emphasizes concepts that will remain relevant for a long time, rather than concepts that are platform-specific. At the same time, the book also provides platform-dependent explanations that are as valuable as generalized GPU concepts.

The book consists of three separate parts; it starts by explaining parallelism using CPU multi-threading in Part I. A few simple programs are used to demonstrate the concept of dividing a large task into multiple parallel sub-tasks and mapping them to CPU threads. Multiple ways of parallelizing the same task are analyzed and their pros/cons are studied in terms of both core and memory operation.

Part II of the book introduces GPU massive parallelism. The same programs are parallelized on multiple Nvidia GPU platforms and the same performance analysis is repeated. Because the core and memory structures of CPUs and GPUs are different, the results differ in interesting ways. The end goal is to make programmers aware of all the good ideas, as well as the bad ideas, so readers can apply the good ideas and avoid the bad ideas in their own programs.

Part III of the book provides pointer for readers who want to expand their horizons. It provides a brief introduction to popular CUDA libraries (such as cuBLAS, cuFFT, NPP, and Thrust),the OpenCL programming language, an overview of GPU programming using other programming languages and API libraries (such as Python, OpenCV, OpenGL, and Apple’s Swift and Metal,) and the deep learning library cuDNN.

商品描述(中文翻譯)

《使用CUDA進行GPU平行程式開發》這本書透過展示不同類型的GPU之間的差異來教授GPU程式設計。這種方法使讀者能夠為下一代和未來的GPU做好準備。該書強調的是那些長期保持相關性的概念,而不是特定於平台的概念。同時,該書還提供了與平台相關的解釋,這些解釋和一般的GPU概念一樣有價值。

該書分為三個部分;第一部分通過使用CPU多線程解釋並行性。使用一些簡單的程式來演示將一個大任務分成多個並行子任務並將它們映射到CPU線程的概念。分析了同一任務的多種並行化方式,並從核心和記憶體操作的角度研究了它們的優缺點。

該書的第二部分介紹了GPU的大規模並行性。同樣的程式在多個Nvidia GPU平台上進行並行化,並重複進行相同的性能分析。由於CPU和GPU的核心和記憶體結構不同,結果以有趣的方式不同。最終目標是使程式設計師了解所有好的想法和壞的想法,以便讀者能夠在自己的程式中應用好的想法並避免壞的想法。

該書的第三部分為希望拓寬視野的讀者提供了指引。它簡要介紹了流行的CUDA庫(如cuBLAS、cuFFT、NPP和Thrust)、OpenCL程式語言,以及使用其他程式語言和API庫(如Python、OpenCV、OpenGL和Apple的Swift和Metal)進行GPU程式設計的概述,還包括深度學習庫cuDNN。