gpu高性能編程cuda實戰

gpu高性能編程cuda實戰是一部2011年經機械工業出版社出版發行的作品,由美國Jason Sanders Edward Kandrot編著後經聶雪軍翻譯完成的。

基本信息

原書名: CUDA by Example:an Introduction to General-Purpose GPU Programming
原出版社: Addison-Wesley Professional
作者: (美)Jason Sanders Edward Kandrot [作譯者介紹]
譯者: 聶雪軍
出版社:機械工業出版社
ISBN:9787111326793
上架時間:2011-2-28
出版日期:2011 年1月
開本:16開
頁碼:201
版次:1-1

內容簡介

cuda是一種專門為提高並行程式開發效率而設計的計算架構。在構建高性能應用程式時,cuda架構能充分發揮gpu的強大計算功能。《gpu高性能編程cuda實戰》首先介紹了cuda架構的套用背景,並給出了如何配置cuda c的開發環境。然後通過矢量求和運算、矢量點積運算、光線跟蹤、熱傳導模擬等示例詳細介紹了cuda c的基本語法和使用模式。通過學習本書,讀者可以清楚了解cuda c中每個功能的適用場合,並編寫出高性能的cuda軟體。
《gpu高性能編程cuda實戰》適合具備c或者c++知識的應用程式開發人員、數值計算庫開發人員等,也可以作為學習並行計算的學生和教師的教輔。

目錄

譯者序

前言
致謝
作者簡介
第1章 為什麼需要cuda 1
1.1 本章目標 2
1.2 並行處理的歷史 2
1.3 gpu計算的崛起 3
1.4 cuda 5
1.5 cuda的套用 6
1.6 本章小結 8
第2章 入門 9
2.1 本章目標 10
2.2 開發環境 10
2.3 本章小結 14
第3章 cuda c簡介 15
3.1 本章目標 16
3.2 第一個程式 16
3.3 查詢設備 20
.3.4 設備屬性的使用 23
3.5 本章小結 24
第4章 cuda c並行編程 26
4.1 本章目標 27
4.2 cuda並行編程 27
4.3 本章小結 41
第5章 執行緒協作 42
5.1 本章目標 43
5.2 並行執行緒塊的分解 43
5.3 共享記憶體和同步 54
5.4 本章小結 68
第6章 常量記憶體與事件 69
6.1 本章目標 70
6.2 常量記憶體 70
6.3 使用事件來測量性能 78
6.4 本章小結 83
第7章 紋理記憶體 84
7.1 本章目標 85
7.2 紋理記憶體簡介 85
7.3 熱傳導模擬 86
7.4 本章小結 101
第8章 圖形互操作性 102
8.1 本章目標 103
8.2 圖形互操作 103
8.3 基於圖形互操作性的gpu波紋示例 108
8.4 基於圖形互操作性的熱傳導 113
8.5 directx互操作性 118
8.6 本章小結 118
第9章 原子性 119
9.1 本章目標 120
9.2 計算功能集 120
9.3 原子操作簡介 122
9.4 計算直方圖 124
9.5 本章小結 133
第10章 流 134
10.1 本章目標 135
10.2 頁鎖定主機記憶體 135
10.3 cuda流 139
10.4 使用單個cuda流 140
10.5 使用多個cuda流 144
10.6 gpu的工作調度機制 149
10.7 高效地使用多個cuda流 151
10.8 本章小結 152
第11章 多gpu系統上的cuda c 154
11.1 本章目標 155
11.2 零拷貝主機記憶體 155
11.3 使用多個gpu 162
11.4 可移動的固定記憶體 166
11.5 本章小結 170
第12章 後記 171
12.1 本章目標 172
12.2 cuda工具 172
12.3 參考資料 176
12.4 代碼資源 178
12.5 本章小結 179
附錄 高級原子操作 180

譯者序

並行計算已成為突破摩爾定理局限性的重要研究方向,而GPU強大的並行計算能力也因此吸引了全球廣泛的研究興趣。然而,在實現通用並行計算時,GPU計算模式存在著一些限制。首先,GPU的設計初衷是為了加速應用程式中的圖形繪製運算,因此開發人員需要通過OpenGL或者DirectX等API來訪問GPU,這不僅要求開發人員掌握一定的圖形編程知識,而且要想方設法將通用計算問題轉換為圖形計算問題。其次,GPU與多核CPU在計算架構上有著很大不同,GPU更注重於數據並行計算,即在不同的數據上並行執行相同的計算,而對並行計算中的互斥性、同步性以及原子性等方面支持不足。這些因素都限制了GPU在通用並行計算中的套用範圍。
CUDA架構的出現解決了上述問題。CUDA架構專門為GPU計算設計了一種全新的結構,目的正是為了減輕GPU計算模型中的這些限制。在CUDA架構下,開發人員可以通過CUDA C對GPU編程。CUDA C是對標準C的一種簡單擴展,學習和使用起來都非常容易,並且其最大的優勢在於不需要開發人員具備圖形學知識。
本書的主要內容是介紹如何通過CUDA C來編寫在GPU上運行的並行程式。本書首先介紹了CUDA架構的套用背景,並給出了如何配置CUDA C的開發環境。然後,本書通過矢量求和運算、矢量點積運算、光線跟蹤、熱傳導模擬、直方圖統計等示例詳細介紹了CUDA C的基本語法和使用模式。在這些示例中還穿插介紹了GPU的各種硬體特性及適用環境,例如常量記憶體、事件、紋理記憶體、圖形互操作性、原子操作、流以及多GPU架構等。
這些示例的構思以及分析過程都很容易理解,它們也是本書最具價值的部分。讀者在閱讀這些內容時要反覆思考,做到融會貫通,舉一反三。只要掌握了這些簡單的示例,更複雜的問題也能迎刃而解。本書適合所有程式設計師閱讀,只需具備基本的C語言知識即可。最後,本書還給出了CUDA C的其他一些參考資源。
參與本書翻譯工作的主要有李楊、吳漢平、徐光景、童勝漢、陳軍、胡凱等。由於譯者的時間和水平有限,翻譯中的疏漏和錯誤在所難免,還望讀者和同行不吝指正。
聶雪軍
2010年於武漢

前言

本書介紹了如何利用計算機中圖形處理器(Graphics Process Unit, GPU)的強大計算功能來編寫各種高性能的套用軟體。雖然GPU的設計初衷是用於在顯示器上渲染計算機圖形(現在仍然主要用於這個目的),但在科學計算、工程、金融以及其他領域中,人們開始越來越多地使用GPU。我們將解決非圖形領域中的問題的GPU程式統稱為通用GPU程式。值得高興的是,雖然你需要具備C或者C++的知識才能充分理解本書的內容,但卻不需要具備計算機圖形學的知識。任何圖形學的基礎都不要!GPU編程只是使你進一步增強現有的編程技術。
在NVIDIA GPU上編寫程式來完成通用計算任務之前,你需要知道什麼是CUDA。NVIDIA GPU是基於CUDA架構而構建的。你可以將CUDA架構視為NVIDIA構建GPU的模式,其中GPU既可以完成傳統的圖形渲染任務,又可以完成通用計算任務。要在CUDA GPU上編程,我們需要使用CUDA C語言。在本書前面的內容中可以看到,CUDA C本質上是對C進行了一些擴展,使其能夠在像NVIDIA GPU這樣的大規模並行機器上進行編程。
我們為經驗豐富的C或者C++程式設計師編寫了本書,這些程式設計師通常較為熟悉C語言,因此能很輕鬆地閱讀或者編寫C代碼。本書不僅將進一步增強你的C語言編程能力,而且還能作為使用NVIDIA的CUDA C程式語言的一本快速入門書籍。你既不需要具備任何在大規模軟體架構上工作的經驗,也不需要有編寫過C編譯器或者作業系統核心的經歷,此外也無需了解ANSI C標準的細枝末節。本書並沒有花時間來回顧C語言的語法或者常用的C庫函式,例如malloc()或者memcpy(),我們假設你對這些概念已經非常熟悉了。
雖然本書的目的並不是介紹通用的並行編程技術,但你在書中仍將學習到一些通用的並行編模式。此外,本書並不是一本詳細介紹CUDA API的參考書,也不會詳細介紹在開發CUDA C軟體時可以使用的各種工具。因此,我們強烈建議將本書與NVIDIA的免費文檔結合起來閱讀,例如《NVIDIA CUDA Programming Guide》和《NVIDIA CUDA Best Practices Guide》等。然而,你不用費工夫去收集所有這些文檔,因為我們將介紹你需要的所有內容。
不會費太多的周折,CUDA C編程領域歡迎你的到來!

相關詞條

熱門詞條

聯絡我們