GPU高性能運(yùn)算之CUDA

-
【作 者】主編 張舒 褚艷利
【I S B N 】978-7-5084-6543-2
【責(zé)任編輯】宋俊娥
【適用讀者群】科技
【出版時(shí)間】2009-10-01
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數(shù)】
【千字?jǐn)?shù)】438
【印 張】17.75
【定 價(jià)】¥38
【叢 書】暫無分類
【備注信息】
簡(jiǎn)介
本書特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關(guān)圖書
本書是全國第一本全面介紹CUDA軟硬件體系架構(gòu)的書籍。全面介紹使用CUDA進(jìn)行通用計(jì)算所需要的語法、硬件架構(gòu)、程序優(yōu)化技巧等知識(shí),是進(jìn)行GPU通用計(jì)算程序開發(fā)的入門教材和參考書。
本書共分5章。第1章介紹GPU通用計(jì)算的發(fā)展歷程,介紹并行計(jì)算的歷史、現(xiàn)狀以及面臨的問題;第2章介紹CUDA的使用方法,幫助讀者理解CUDA的編程模型、存儲(chǔ)器模型和執(zhí)行模型,掌握CUDA程序的編寫方法;第3章探討CUDA硬件架構(gòu),深入分析Tesla GPU架構(gòu)與CUDA通用計(jì)算的相互作用;第4章總結(jié)CUDA的高級(jí)優(yōu)化方法,對(duì)任務(wù)劃分、存儲(chǔ)器訪問、指令流效率等課題進(jìn)行探討;第5章以豐富的實(shí)例展示如何使用CUDA的強(qiáng)大性能解決實(shí)際問題。
本書可作為CUDA的學(xué)習(xí)入門和編程參考書,主要面向從事高性能計(jì)算的程序員與工程師,使用GPU加速專業(yè)領(lǐng)域計(jì)算的科研人員,以及對(duì)GPU通用計(jì)算感興趣的程序員。開設(shè)相關(guān)課程的高等院校與科研機(jī)構(gòu)也可選用本書作為教材。
1.精選典型實(shí)用例程,詳解CUDA使用細(xì)節(jié)
2.重視理論結(jié)合實(shí)際,介紹并行程序設(shè)計(jì)方法
3.深入分析硬件架構(gòu),揭示模型與底層映射關(guān)系
4.精心總結(jié)優(yōu)化經(jīng)驗(yàn),解析高性能編程技巧
5.技術(shù)支持:論壇http://bbs.hpctech.com
CUDA是NVIDIA公司于2007年推出的GPU通用計(jì)算產(chǎn)品。CUDA能夠有效利用GPU強(qiáng)勁的處理能力和巨大的存儲(chǔ)器帶寬進(jìn)行圖形渲染以外的計(jì)算,廣泛應(yīng)用于圖像處理、視頻播放、信號(hào)處理、人工智能、模式識(shí)別、金融分析、數(shù)值計(jì)算、石油勘探、天文計(jì)算、流體力學(xué)計(jì)算、生物計(jì)算、分子動(dòng)力學(xué)計(jì)算、數(shù)據(jù)庫管理、編碼加密等領(lǐng)域,并在這些應(yīng)用中對(duì)CPU獲得了一到兩個(gè)數(shù)量級(jí)的加速,取得了令人矚目的成績(jī)。CUDA在產(chǎn)業(yè)界和學(xué)術(shù)界引發(fā)了巨大反響,目前已有Adobe、Autodesk、HP、聯(lián)想、浪潮等國內(nèi)外著名企業(yè)推出了基于CUDA的產(chǎn)品;哈佛、伯克利、清華等大批國內(nèi)外高校也開設(shè)了相關(guān)課程,將CUDA作為一種典型的并行系統(tǒng)來幫助學(xué)生學(xué)習(xí)高性能計(jì)算的原理與應(yīng)用。
多核的CPU和眾核的GPU已經(jīng)成為目前大多數(shù)計(jì)算機(jī)中最重要的兩種處理器。傳統(tǒng)上,GPU只用于處理3D圖像渲染任務(wù),而其他大多數(shù)的任務(wù)都交給了CPU。作為一種通用處理器,CPU的設(shè)計(jì)必須兼顧各種任務(wù)的需要。因此,CPU中大多數(shù)的晶體管都被用于制造龐大的緩存和復(fù)雜的控制邏輯,而運(yùn)算單元占用的面積則并不多。近幾年來,CPU生產(chǎn)廠商已經(jīng)認(rèn)識(shí)到依靠增加單個(gè)核心的緩存尺寸和控制邏輯的復(fù)雜程度對(duì)提高處理器性能已經(jīng)沒有太大幫助,因此紛紛在一塊芯片中集成更多的CPU核心。不過,這樣做只是能夠用更多的晶體管制造一個(gè)處理器,并沒有提高晶體管的利用率。與此同時(shí),由于圖形渲染的并行特性,GPU與生俱來就是一種擁有大量運(yùn)算單元的并行處理器。近幾年來的發(fā)展經(jīng)驗(yàn)表明,一塊高端GPU的單精度浮點(diǎn)處理性能可以達(dá)到一塊同時(shí)期高端桌面CPU的10倍,其顯存帶寬也達(dá)同時(shí)期桌面平臺(tái)的5倍左右。并且,由GPU提供相同的計(jì)算能力,所需要的成本和功耗都要小于基于CPU的系統(tǒng)。
由于傳統(tǒng)GPU硬件架構(gòu)的限制,很難有效利用其資源進(jìn)行通用計(jì)算。NVIDIA推出的CUDA產(chǎn)品則完全扭轉(zhuǎn)了這一局面。與傳統(tǒng)GPU通用計(jì)算開發(fā)方式相比,CUDA編程更簡(jiǎn)單,功能更強(qiáng)大,應(yīng)用領(lǐng)域更廣泛,支持CUDA的硬件性能也更強(qiáng)。CUDA完全改變了PC中的一些游戲規(guī)則,使用GPU計(jì)算無需投入額外的成本,卻可以在一些應(yīng)用中獲得一個(gè)數(shù)量級(jí)的加速。在科學(xué)計(jì)算中,一些過去必須由集群處理的任務(wù),現(xiàn)在也可以由每個(gè)研究人員的桌面PC完成了,這使得科研人員能夠更加自由地將時(shí)間投入到自己的研究中。在超級(jí)計(jì)算機(jī)與集群中,過去往往拆除“多余的”顯卡以節(jié)省功耗,現(xiàn)在的設(shè)計(jì)卻開始采用大量GPU來獲得更加綠色的計(jì)算能力。CUDA的強(qiáng)大性能引發(fā)了一場(chǎng)通用計(jì)算革命,這場(chǎng)革命將極大地改變計(jì)算機(jī)的面貌。
我們很幸運(yùn)地參與了這場(chǎng)GPU通用計(jì)算革命。在2007~2009年間,我們看到國內(nèi)有越來越多的開發(fā)者嘗試將CUDA應(yīng)用到自己感興趣的領(lǐng)域中,在學(xué)術(shù)和產(chǎn)業(yè)領(lǐng)域都取得了令人欣喜的成績(jī)。與此同時(shí),我們也注意到很多程序員在由CPU程序開發(fā)轉(zhuǎn)移到CUDA程序開發(fā)的過程中遇到了一些問題。特別是由于CUDA程序的性能往往和并行算法以及硬件架構(gòu)有很大關(guān)系,初次接觸GPU的程序員往往需要較長(zhǎng)的時(shí)間才能完全掌握CUDA程序的編寫與優(yōu)化。因此,我們結(jié)合自己的學(xué)習(xí)經(jīng)驗(yàn),結(jié)合例子對(duì)CUDA語法進(jìn)行講解,將CUDA編程需要的各種知識(shí)進(jìn)行歸納而編寫了本書。本書既可以作為科研人員與程序開發(fā)人者學(xué)習(xí)CUDA的入門指導(dǎo)和編程優(yōu)化的參考手冊(cè),也可以作為高校相關(guān)課程的教材。
本書的編寫過程耗時(shí)一年,在這一年中我們也和國內(nèi)的其他CUDA程序員共同成長(zhǎng),一起經(jīng)歷了CUDA從稚嫩走向成熟,漸漸發(fā)展壯大的過程。國內(nèi)最開始只有一些高校中的教師學(xué)生在進(jìn)行一些學(xué)術(shù)研究,漸漸地有更多的公司和研究機(jī)構(gòu)以及編程愛好者加入了這一行列,討論的問題也從基本的語法和使用漸漸深入到對(duì)算法、硬件架構(gòu)和優(yōu)化技巧的分析。在這一過程中,我們和國內(nèi)的很多開發(fā)者和機(jī)構(gòu)進(jìn)行合作,并建立了友誼。在此,我們要特別感謝許磊給我們的指導(dǎo)和建議,討論群中的劉偉峰、劉國峰、陳實(shí)富、楊常青等活躍的開發(fā)人員也提出了很多寶貴建議和意見;我們要感謝NVIDIA公司亞太區(qū)技術(shù)經(jīng)理的鄧培智先生,中國區(qū)市場(chǎng)總監(jiān)魏鳴女士,銷售經(jīng)理謝強(qiáng)先生,以及NVIDIA深圳有限公司的Terence horng,Jerry Zhou,Johnny Qiu,Blues Yu,Jerry Jia,Donovan Chen,Sandy Zou等同事的支持;電子科技大學(xué)的竇衡副教授、楊萬麟教授、沈曉峰副教授、況凌博士以及電子工程學(xué)院1201教研室的各位同學(xué),西安電子科技大學(xué)的劉西洋教授、王黎明老師、高海昌老師以及香港浸會(huì)大學(xué)的褚曉文教授在本書的幾位作者攻讀學(xué)位期間給予的指導(dǎo)和支持;浪潮集團(tuán),聯(lián)想集團(tuán),廈門美亞柏科資訊科技有限公司,廣州明夏陽人工智能有限公司,以及中科院的張楠、王龍、張先軼等對(duì)幾位作者在項(xiàng)目上給予了大力支持;感謝CSDN的路宏為我們出版本書四處奔走;感謝中國水利水電出版社的各位為了本書能夠更早出版付出的巨大努力;最后,還要把最誠摯的感謝留給幾位作者的家人。
GPU和CUDA都還在不斷發(fā)展中,本書也很難對(duì)GPU高性能計(jì)算涉及到的所有知識(shí)面面俱到,書中難免存在一些錯(cuò)誤和不足之處,懇請(qǐng)諸位讀者能夠及時(shí)指出,給出寶貴的意見和建議。
張 舒
2009年8月于深圳
第1章 GPU通用計(jì)算 1
1.1 多核計(jì)算的發(fā)展 2
1.1.1 CPU多核并行 3
1.1.2 超級(jí)計(jì)算機(jī)、集群與分布式計(jì)算 4
1.1.3 CPU+GPU異構(gòu)并行 5
1.2 GPU發(fā)展簡(jiǎn)介 8
1.2.1 GPU渲染流水線 8
1.2.2 著色器模型 10
1.2.3 NVIDIA GPU發(fā)展簡(jiǎn)介 11
1.3 從GPGPU到CUDA 12
1.3.1 傳統(tǒng)GPGPU開發(fā) 12
1.3.2 CUDA開發(fā) 13
第2章 CUDA基礎(chǔ) 14
2.1 CUDA編程模型 14
2.1.1 主機(jī)與設(shè)備 14
2.1.2 Kernel函數(shù)的定義與調(diào)用 15
2.1.3 線程結(jié)構(gòu) 16
2.1.4 硬件映射 20
2.1.5 deviceQuery示例 22
2.1.6 matrixAssign示例 26
2.2 CUDA軟件體系 36
2.2.1 CUDA C語言 37
2.2.2 nvcc編譯器 37
2.2.3 運(yùn)行時(shí)API與驅(qū)動(dòng)API 39
2.2.4 CUDA函數(shù)庫 43
2.3 CUDA存儲(chǔ)器模型 44
2.3.1 寄存器 45
2.3.2 局部存儲(chǔ)器 45
2.3.3 共享存儲(chǔ)器 46
2.3.4 全局存儲(chǔ)器 47
2.3.5 主機(jī)端內(nèi)存 52
2.3.6 主機(jī)端頁鎖定內(nèi)存 52
2.3.7 常數(shù)存儲(chǔ)器 57
2.3.8 紋理存儲(chǔ)器 58
2.4 CUDA通信機(jī)制 68
2.4.1 同步函數(shù) 68
2.4.2 Volatile關(guān)鍵字 72
2.4.3 ATOM操作 72
2.4.4 VOTE操作 76
2.5 異步并行執(zhí)行 76
2.5.1 流 79
2.5.2 事件 81
2.6 CUDA與圖形學(xué)API互操作 87
2.6.1 CUDA與OpenGL的互操作 87
2.6.2 CUDA與Direct3D互操作 91
2.7 多設(shè)備與設(shè)備集群 102
2.7.1 CUDA設(shè)備控制 102
2.7.2 CUDA與openMP 114
2.7.3 CUDA與集群 117
第3章 CUDA硬件架構(gòu) 120
3.1 NVIDIA顯卡構(gòu)造簡(jiǎn)介 120
3.1.1 圖形顯卡概覽 120
3.1.2 PCI-E總線 121
3.1.3 顯存 122
3.1.4 GPU芯片 123
3.2 Tesla圖形與計(jì)算架構(gòu) 124
3.2.1 SPA-TPC-SM 126
3.2.2 主流GPU架構(gòu) 129
3.3 Tesla通用計(jì)算模型 131
3.3.1 數(shù)據(jù)與指令的加載 131
3.3.2 warp指令的發(fā)射與執(zhí)行 133
3.3.3 紋理、渲染和存儲(chǔ)器流水線 137
第4章 CUDA程序的優(yōu)化 141
4.1 CUDA程序優(yōu)化概述 141
4.2 測(cè)量程序運(yùn)行時(shí)間 144
4.2.1 設(shè)備端測(cè)時(shí) 144
4.2.2 主機(jī)端測(cè)時(shí) 148
4.3 任務(wù)劃分 148
4.3.1 任務(wù)劃分原則 148
4.3.2 grid和block維度設(shè)計(jì) 150
4.4 存儲(chǔ)器訪問優(yōu)化 152
4.4.1 主機(jī)-設(shè)備通信優(yōu)化 152
4.4.2 全局存儲(chǔ)器訪問優(yōu)化 155
4.4.3 共享存儲(chǔ)器訪問優(yōu)化 160
4.4.4 使用紋理存儲(chǔ)器和常數(shù)存儲(chǔ)器加速 163
4.5 指令流優(yōu)化 163
4.5.1 算術(shù)指令 164
4.5.2 控制流指令 166
4.5.3 訪存指令 166
4.5.4 同步指令 167
4.6 CUDA profiler的使用 167
4.6.1 圖形分析 167
4.6.2 圖表分析 167
4.7 優(yōu)化應(yīng)用舉例 169
4.7.1 矩陣乘法的優(yōu)化 169
4.7.2 并行歸約的優(yōu)化 176
4.7.3 矩陣轉(zhuǎn)置的優(yōu)化 184
第5章 綜合應(yīng)用 190
5.1 基本應(yīng)用 190
5.1.1 雙調(diào)排序網(wǎng)絡(luò) 190
5.1.2 Scan 197
5.1.3 CUBLAS簡(jiǎn)單應(yīng)用 206
5.1.4 CUFFT簡(jiǎn)單應(yīng)用 211
5.2 高級(jí)應(yīng)用 217
5.2.1 共軛梯度法的CUBLAS實(shí)現(xiàn) 217
5.2.2 AC多模式匹配算法的CUDA實(shí)現(xiàn) 227
附錄A 安裝、配置、編譯及調(diào)試 237
附錄B 常見問題與解答 247
附錄C 技術(shù)規(guī)范 249
附錄D C擴(kuò)展 253
附錄E 數(shù)學(xué)函數(shù) 263
附錄F 紋理拾取 272
附錄G 著色器模型 275
- 生活經(jīng)管more>>
- 計(jì)算機(jī)基礎(chǔ)實(shí)訓(xùn)指導(dǎo)
- 用英語介紹中國經(jīng)典小故事
- 新概念英語單詞循環(huán)速記1:14天刻意練
- 新能源場(chǎng)站繼電保護(hù)傳動(dòng)作業(yè)指導(dǎo)書
- 高職院校“德技并修·三育協(xié)同”的育人
- 網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師真題及模考卷精析(適用
- 涼山脫貧地區(qū)鄉(xiāng)村治理研究
- 中國—東盟競(jìng)技體育文化共同體研究
- 數(shù)值分析
- 用英語介紹中國(四六級(jí)版)
- 用英語介紹中國(第二版)
- 基于AI的Java技術(shù)項(xiàng)目實(shí)戰(zhàn)
- 信息處理技術(shù)員真題及模考卷精析(適用
- 系統(tǒng)集成項(xiàng)目管理工程師案例分析一本通
- 信息安全工程師考前沖刺100題(第二版
- 信息系統(tǒng)項(xiàng)目管理師考前沖刺100題(配