CUDA-C編程權威指南_第1頁
CUDA-C編程權威指南_第2頁
CUDA-C編程權威指南_第3頁
CUDA-C編程權威指南_第4頁
CUDA-C編程權威指南_第5頁
已閱讀5頁,還剩75頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、CUDA-C編程權威指南CUDA-C編程權威指南01技術審校者簡介01技術審校者簡介技術審校者簡介技術審校者簡介021 基于CUDA的異構并行計算021 基于CUDA的異構并行計算1 基于CUDA的異構并行計算1.1 并行計算1.2 異構計算1.3 用GPU輸出Hello World1.6 習題1.5 總結1.4 使用CUDA C編程難嗎1 基于CUDA的異構并行計算1.1 并行計算1.2 異構計LOGO1 基于CUDA的異構并行計算1.1 并行計算1.1.1 串行編程和并行編程1.1.2 并行性1.1.3 計算機架構LOGO1 基于CUDA1 基于CUDA的異構并行計算1.2 異構計算CBA

2、1.2.1 異構架構1.2.2 異構計算范例1.2.3 CUDA:一種異構計算平臺1 基于CUDA的異構并行計算1.2 異構計算CBA1.2.032 CUDA編程模型032 CUDA編程模型2 CUDA編程模型01032.1 CUDA編程模型概述2.2 給核函數計時2.3 組織并行線程020405062.4 設備管理2.5 總結2.6 習題2 CUDA編程模型01032.1 CUDA編程模型概述2.2 CUDA編程模型2.1 CUDA編程模型概述2.1.1 CUDA編程結構012.1.2 內存管理022.1.3 線程管理032.1.4 啟動一個CUDA核函數042.1.5 編寫核函數052.1

3、.6 驗證核函數062 CUDA編程模型2.1 CUDA編程模型概述2.1.1 2 CUDA編程模型2.1 CUDA編程模型概述2.1.7 處理錯誤12.1.8 編譯和執行22 CUDA編程模型2.1 CUDA編程模型概述2.1.7 2 CUDA編程模型2.2 給核函數計時A2.2.1 用CPU計時器計時2.2.2 用nvprof工具計時B2 CUDA編程模型2.2 給核函數計時A2.2.1 用CP2 CUDA編程模型2.3 組織并行線程2.3.1 使用塊和線程建立矩陣索引2.3.2 使用二維網格和二維塊對矩陣求和2.3.3 使用一維網格和一維塊對矩陣求和2.3.4 使用二維網格和一維塊對矩陣

4、求和2 CUDA編程模型2.3 組織并行線程2.3.1 使用塊和2.4 設備管理2 CUDA編程模型2.4.1 使用運行時API查詢GPU信息2.4.2 確定最優GPU2.4.3 使用nvidia-smi查詢GPU信息2.4.4 在運行時設置設備DCAB2.4 設備管理2 CUDA編程模型2.4.1 使用運行時A043 CUDA執行模型043 CUDA執行模型3 CUDA執行模型3.1 CUDA執行模型概述3.2 理解線程束執行的本質3.3 并行性的表現3.6 動態并行3.5 展開循環3.4 避免分支分化3 CUDA執行模型3.1 CUDA執行模型概述3.2 理解3 CUDA執行模型3.7 總

5、結3.8 習題3 CUDA執行模型3.7 總結3.8 習題3.1 CUDA執行模型概述3 CUDA執行模型3.1.1 GPU架構概述3.1.2 Fermi架構3.1.3 Kepler架構3.1.4 配置文件驅動優化3.1 CUDA執行模型概述3 CUDA執行模型3.1.1 3.2 理解線程束執行的本質3 CUDA執行模型3.2.1 線程束和線程塊3.2.2 線程束分化3.2.3 資源分配3.2.6 同步3.2.5 占用率3.2.4 延遲隱藏3.2 理解線程束執行的本質3 CUDA執行模型3.2.1 3 CUDA執行模型3.2 理解線程束執行的本質3.2.7 可擴展性3 CUDA執行模型3.2

6、理解線程束執行的本質3.2.7 3 CUDA執行模型3.3 并行性的表現3.3.1 用nvprof檢測活躍的線程束013.3.2 用nvprof檢測內存操作023.3.3 增大并行性033 CUDA執行模型3.3 并行性的表現3.3.1 用nvp3 CUDA執行模型3.4 避免分支分化3.4.1 并行歸約問題3.4.2 并行歸約中的分化3.4.3 改善并行歸約的分化3.4.4 交錯配對的歸約3 CUDA執行模型3.4 避免分支分化3.4.1 并行歸約3 CUDA執行模型3.5 展開循環013.5.1 展開的歸約023.5.2 展開線程的歸約033.5.3 完全展開的歸約043.5.4 模板函數

7、的歸約3 CUDA執行模型3.5 展開循環013.5.1 展開的歸3 CUDA執行模型3.6 動態并行3.6.1 嵌套執行3.6.2 在GPU上嵌套Hello World3.6.3 嵌套歸約3 CUDA執行模型3.6 動態并行3.6.1 嵌套執行3.054 全局內存054 全局內存4 全局內存014.1 CUDA內存模型概述024.2 內存管理034.3 內存訪問模式044.4 核函數可達到的帶寬054.5 使用統一內存的矩陣加法064.6 總結4 全局內存014.1 CUDA內存模型概述024.2 內存4 全局內存4.7 習題4 全局內存4.7 習題4 全局內存4.1 CUDA內存模型概述4

8、.1.2 CUDA內存模型4.1.1 內存層次結構的優點4 全局內存4.1 CUDA內存模型概述4.1.2 CUDA4.2 內存管理4 全局內存4.2.1 內存分配和釋放4.2.2 內存傳輸4.2.3 固定內存4.2.6 統一內存尋址4.2.5 統一虛擬尋址4.2.4 零拷貝內存4.2 內存管理4 全局內存4.2.1 內存分配和釋放4.24 全局內存4.3 內存訪問模式4.3.1 對齊與合并訪問014.3.2 全局內存讀取024.3.3 全局內存寫入034.3.4 結構體數組與數組結構體044.3.5 性能調整054 全局內存4.3 內存訪問模式4.3.1 對齊與合并訪問04 全局內存4.4

9、核函數可達到的帶寬4.4.1 內存帶寬4.4.2 矩陣轉置問題4 全局內存4.4 核函數可達到的帶寬4.4.1 內存帶寬4065 共享內存和常量內存065 共享內存和常量內存5 共享內存和常量內存5.1 CUDA共享內存概述5.2 共享內存的數據布局5.3 減少全局內存訪問5.6 線程束洗牌指令5.5 常量內存5.4 合并的全局內存訪問5 共享內存和常量內存5.1 CUDA共享內存概述5.2 共5 共享內存和常量內存AB5.7 總結5.8 習題5 共享內存和常量內存AB5.7 總結5.8 習題5 共享內存和常量內存5.1 CUDA共享內存概述5.1.1 共享內存015.1.2 共享內存分配02

10、5.1.3 共享內存存儲體和訪問模式035.1.4 配置共享內存量045.1.5 同步055 共享內存和常量內存5.1 CUDA共享內存概述5.1.15 共享內存和常量內存5.2 共享內存的數據布局A5.2.1 方形共享內存5.2.2 矩形共享內存B5 共享內存和常量內存5.2 共享內存的數據布局A5.2.15 共享內存和常量內存5.3 減少全局內存訪問5.3.1 使用共享內存的并行歸約5.3.2 使用展開的并行歸約5.3.3 使用動態共享內存的并行歸約5.3.4 有效帶寬5 共享內存和常量內存5.3 減少全局內存訪問5.3.1 使5.4 合并的全局內存訪問5 共享內存和常量內存5.4.2 使

11、用共享內存的矩陣轉置5.4.4 使用展開的矩陣轉置5.4.1 基準轉置內核5.4.3 使用填充共享內存的矩陣轉置5.4.5 增大并行性5.4 合并的全局內存訪問5 共享內存和常量內存5.4.2 5 共享內存和常量內存5.5 常量內存AB5.5.2 與只讀緩存的比較5.5.1 使用常量內存實現一維模板5 共享內存和常量內存5.5 常量內存AB5.5.2 與只讀5.6 線程束洗牌指令5 共享內存和常量內存5.6.2 線程束內的共享數據5.6.1 線程束洗牌指令的不同形式5.6.3 使用線程束洗牌指令的并行歸約5.6 線程束洗牌指令5 共享內存和常量內存5.6.2 線程076 流和并發076 流和并

12、發6 流和并發016.1 流和事件概述026.2 并發內核執行036.3 重疊內核執行和數據傳輸046.4 重疊GPU和CPU執行056.5 流回調066.6 總結6 流和并發016.1 流和事件概述026.2 并發內核執行6 流和并發6.7 習題6 流和并發6.7 習題6 流和并發6.1 流和事件概述6.1.1 CUDA流6.1.2 流調度6.1.5 流同步6.1.4 CUDA事件6.1.3 流的優先級6 流和并發6.1 流和事件概述6.1.1 CUDA流6.16.2 并發內核執行6 流和并發6.2.2 Fermi GPU上的虛假依賴關系6.2.4 用環境變量調整流行為6.2.6 默認流的阻

13、塞行為6.2.1 非空流中的并發內核6.2.3 使用OpenMP的調度操作6.2.5 GPU資源的并發限制6.2 并發內核執行6 流和并發6.2.2 Fermi GP6 流和并發6.2 并發內核執行6.2.7 創建流間依賴關系6 流和并發6.2 并發內核執行6.2.7 創建流間依賴關系6 流和并發6.3 重疊內核執行和數據傳輸6.3.1 使用深度優先調度重疊6.3.2 使用廣度優先調度重疊6 流和并發6.3 重疊內核執行和數據傳輸6.3.1 使用深087 調整指令級原語087 調整指令級原語7 調整指令級原語017.1 CUDA指令概述7.2 程序優化指令027.3 總結037.4 習題047

14、 調整指令級原語017.1 CUDA指令概述7.2 程序優7 調整指令級原語7.1 CUDA指令概述CBA7.1.1 浮點指令7.1.2 內部函數和標準函數7.1.3 原子操作指令7 調整指令級原語7.1 CUDA指令概述CBA7.1.1 7 調整指令級原語7.2 程序優化指令7.2.1 單精度與雙精度的比較7.2.2 標準函數與內部函數的比較7.2.3 了解原子指令7.2.4 綜合范例7 調整指令級原語7.2 程序優化指令7.2.1 單精度與雙098 GPU加速庫和OpenACC098 GPU加速庫和OpenACC8 GPU加速庫和OpenACC8.2 cuSPARSE庫8.4 cuFFT庫

15、8.6 CUDA 6.0中函數庫的介紹8.1 CUDA庫概述8.3 cuBLAS庫8.5 cuRAND庫8 GPU加速庫和OpenACC8.2 cuSPARSE庫88 GPU加速庫和OpenACC8.7 CUDA函數庫的性能研究8.8 OpenACC的使用8.9 總結8.10 習題DCAB8 GPU加速庫和OpenACC8.7 CUDA函數庫的性能LOGO8 GPU加速庫和OpenACC8.1 CUDA庫概述A8.1.1 CUDA庫支持的作用域8.1.2 通用的CUDA庫工作流BLOGO8 GPU加速庫8 GPU加速庫和OpenACC8.2 cuSPARSE庫018.2.1 cuSPARSE數

16、據存儲格式028.2.2 用cuSPARSE進行格式轉換038.2.3 cuSPARSE功能示例048.2.4 cuSPARSE發展中的重要主題058.2.5 cuSPARSE小結8 GPU加速庫和OpenACC8.2 cuSPARSE庫08.3 cuBLAS庫8 GPU加速庫和OpenACC8.3.1 管理cuBLAS數據8.3.2 cuBLAS功能示例8.3.3 cuBLAS發展中的重要主題8.3.4 cuBLAS小結8.3 cuBLAS庫8 GPU加速庫和OpenACC8.38 GPU加速庫和OpenACC8.4 cuFFT庫8.4.2 cuFFT功能示例1328.4.1 使用cuFFT

17、 API8.4.3 cuFFT小結8 GPU加速庫和OpenACC8.4 cuFFT庫8.4.8.5 cuRAND庫8 GPU加速庫和OpenACC8.5.1 擬隨機數或偽隨機數的選擇8.5.2 cuRAND庫概述8.5.3 cuRAND介紹8.5.4 cuRAND發展中的重要主題DCAB8.5 cuRAND庫8 GPU加速庫和OpenACC8.58 GPU加速庫和OpenACC8.6 CUDA 6.0中函數庫的介紹8.6.1 Drop-In庫8.6.2 多GPU庫8 GPU加速庫和OpenACC8.6 CUDA 6.0中函8.7 CUDA函數庫的性能研究8 GPU加速庫和OpenACC8.7

18、.2 cuBLAS與MKL BLAS的比較8.7.4 CUDA庫性能小結8.7.1 cuSPARSE與MKL的比較8.7.3 cuFFT與FFTW及MKL的比較8.7 CUDA函數庫的性能研究8 GPU加速庫和OpenA8 GPU加速庫和OpenACC8.8 OpenACC的使用8.8.1 OpenACC計算指令的使用018.8.2 OpenACC數據指令的使用028.8.3 OpenACC運行時API038.8.4 OpenACC和CUDA庫的結合048.8.5 OpenACC小結058 GPU加速庫和OpenACC8.8 OpenACC的使用109 多GPU編程109 多GPU編程9 多G

19、PU編程9.2 多GPU間細分計算9.4 多GPU上的有限差分9.6 總結9.1 從一個GPU到多GPU9.3 多GPU上的點對點通信9.5 跨GPU集群擴展應用程序9 多GPU編程9.2 多GPU間細分計算9.4 多GPU上9 多GPU編程9.7 習題9 多GPU編程9.7 習題9 多GPU編程9.1 從一個GPU到多GPUCBA9.1.1 在多GPU上執行9.1.2 點對點通信9.1.3 多GPU間的同步9 多GPU編程9.1 從一個GPU到多GPUCBA9.1.9 多GPU編程9.2 多GPU間細分計算9.2.2 單主機線程分配工作1329.2.1 在多設備上分配內存9.2.3 編譯和執

20、行9 多GPU編程9.2 多GPU間細分計算9.2.2 單主機9.3 多GPU上的點對點通信9 多GPU編程9.3.2 點對點的內存復制9.3.1 實現點對點訪問9.3.3 統一虛擬尋址的點對點內存訪問9.3 多GPU上的點對點通信9 多GPU編程9.3.2 點9 多GPU編程9.4 多GPU上的有限差分9.4.1 二維波動方程的模板計算019.4.2 多GPU程序的典型模式029.4.3 多GPU上的二維模板計算039.4.4 重疊計算與通信049.4.5 編譯和執行059 多GPU編程9.4 多GPU上的有限差分9.4.1 二維9 多GPU編程9.5 跨GPU集群擴展應用程序019.5.1 CPU到CPU的數據傳輸029.5.2 使用傳統MPI在GPU和GPU間傳輸數據039.5.3 使用CUDA-aware MPI進行GPU到GPU的數據傳輸049.5.4 使用CUDA-aware MPI進行節點內GPU到GPU的數據傳輸059.5.5 調整消息塊大小069.5.6 使用GPUDirect RDMA技術進行GPU到GP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論