OpenCL異構(gòu)并行計算:原理、機制與優(yōu)化實踐
定 價:¥79
中 教 價:¥52.14 (6.60折)
庫 存 數(shù): 0
叢 書 名:高性能計算技術(shù)叢書
本書一共分為4個部分:第1章介紹并行計算的沿革與現(xiàn)狀。第2章介紹了OpenCLC語言的相關(guān)語法。第3章到第5章講解了OpenCL運行時接口及其功能。第6章講解了OpenCL更底層的工作機制,并結(jié)合當(dāng)前主流的GPGPU做詳細分析。第7章到第11章則是以四個實際常用算法來介紹如何用OpenCL做加速并行計算。通過閱讀本書,讀者不僅能全面掌握OpenCL的常規(guī)用法,而且還能深入了解OpenCL的運作機制,如何將計算設(shè)備的性能發(fā)揮到極致。這樣就可以充分利用硬件特性來調(diào)整算法,使得計算速度能達到峰值。
目 錄 Contents序一序二前言第1章 異構(gòu)并行計算的過去、現(xiàn)狀和未來 11.1 單核標(biāo)量處理器的困境 31.1.1 單核標(biāo)量處理器如何提高性能41.1.2 為什么單核標(biāo)量處理器性能到達瓶頸61.2 多核并行計算與向量化的出現(xiàn)71.2.1 為什么會有多核 71.2.2 為什么會有向量化 71.2.3 如何利用多核和向量化的能力81.2.4 多核和向量化的難點81.3 異構(gòu)并行計算的崛起 91.3.1 GPGPU的理念 91.3.2 CUDA的崛起 101.3.3 OpenCL橫空出世 101.4 異構(gòu)并行計算的未來(百花齊放)111.5 本章小結(jié) 13第2章 OpenCL的基本介紹 142.1 什么是OpenCL 142.2 OpenCL 平臺模型 152.3 OpenCL 執(zhí)行模型 152.3.1 上下文 162.3.2 命令隊列 172.3.3 內(nèi)核在OpenCL設(shè)備上執(zhí)行 182.4 OpenCL存儲器模型 192.4.1 存儲器區(qū)域 192.4.2 存儲器對象 212.4.3 共享虛擬存儲器 212.5 OpenCL與OpenGL 222.6 OpenCL與CUDA 232.7 本章小結(jié) 23第3章 進入OpenCL的世界(矢量加法) 253.1 構(gòu)建示例 253.1.1 Windows平臺 263.1.2 Linux平臺 283.1.3 OS X平臺 283.1.4 矢量加示例 293.2 獲得OpenCL平臺和設(shè)備及其屬性 363.2.1 OpenCL平臺 363.2.2 OpenCL設(shè)備 403.3 創(chuàng)建上下文和命令隊列513.3.1 創(chuàng)建OpenCL上下文 513.3.2 創(chuàng)建命令隊列 563.4 創(chuàng)建程序?qū)ο蠛蛢?nèi)核對象583.5 程序?qū)ο?593.5.1 創(chuàng)建程序?qū)ο?593.5.2 構(gòu)建程序?qū)ο?613.5.3 查詢和管理程序?qū)ο?63.6 內(nèi)核對象 693.6.1 創(chuàng)建內(nèi)核對象 693.6.2 設(shè)置內(nèi)核參數(shù) 703.6.3 查詢和管理內(nèi)核對象733.7 執(zhí)行內(nèi)核 753.8 編寫內(nèi)核代碼 763.9 OpenCL錯誤處理 783.10 本章小結(jié) 81第4章 OpenCL C語言 824.1 修飾符 824.1.1 地址空間修飾符 824.1.2 函數(shù)修飾符 864.1.3 對象訪問修飾符 884.2 標(biāo)量數(shù)據(jù)類型 884.3 矢量數(shù)據(jù)類型 914.3.1 為什么要有矢量數(shù)據(jù)類型924.3.2 矢量數(shù)據(jù)的使用 934.4 運算符 964.5 工作項布局函數(shù) 994.5.1 維度和工作項 1004.5.2 工作組 1014.6 數(shù)據(jù)拷貝操作 1024.6.1 矢量數(shù)據(jù)拷貝 1024.6.2 異步拷貝和預(yù)取1044.7 浮點函數(shù) 1054.7.1 數(shù)學(xué)函數(shù) 1064.7.2 公共函數(shù) 1094.7.3 幾何函數(shù) 1104.8 整數(shù)函數(shù) 1104.9 關(guān)系函數(shù) 1124.10 雜項矢量函數(shù) 1154.11 同步函數(shù) 1174.12 原子函數(shù) 1194.13 圖像讀/寫函數(shù) 1224.13.1 內(nèi)建圖像讀函數(shù)1224.13.2 內(nèi)建無采樣器圖像讀 函數(shù)1264.13.3 內(nèi)建圖像寫函數(shù)1294.13.4 內(nèi)建圖像查詢函數(shù)1314.14 工作組函數(shù) 1324.15 管道函數(shù) 1344.15.1 內(nèi)建管道讀/寫函數(shù) 1354.15.2 內(nèi)建工作組管道讀/寫函數(shù) 1394.15.3 內(nèi)建管道查詢函數(shù)1404.16 設(shè)備隊列 1404.16.1 Blocks語法 1424.16.2 設(shè)備隊列相關(guān)函數(shù)1434.16.3 子內(nèi)核存儲器可見性1474.16.4 設(shè)備隊列的使用示例1484.17 本章小結(jié) 153第5章 OpenCL存儲器對象 1545.1 緩沖區(qū) 1545.1.1 分配緩沖區(qū)對象1545.1.2 創(chuàng)建子緩沖區(qū)對象1575.2 圖像對象和采樣器對象1605.2.1 圖像對象 1605.2.2 采樣器對象 1665.2.3 圖像旋轉(zhuǎn)示例 1715.3 管道 1755.3.1 創(chuàng)建管道對象 1755.3.2 管道對象查詢 1755.4 存儲器對象數(shù)據(jù)傳輸1765.4.1 主機與設(shè)備間數(shù)據(jù)傳輸1765.4.2 存儲器對象數(shù)據(jù)填充1815.4.3 存儲器對象間數(shù)據(jù)傳輸1845.4.4 存儲器對象映射1875.5 共享虛擬存儲器 1925.5.1 SVM緩沖操作 1925.5.2 SVM類型和特性 1975.5.3 相關(guān)示例 2045.6 存儲器一致性模型 2085.6.1 存儲器次序規(guī)則2145.6.2 原子操作的存儲器次序規(guī)則2175.6.3 柵欄操作的存儲器次序規(guī)則2195.6.4 工作組函數(shù)的存儲器次序規(guī)則2205.6.5 主機端與設(shè)備端命令的存儲器次序規(guī)則2215.6.6 關(guān)于存儲器次序在實際OpenCL計算設(shè)備中的實現(xiàn) 2235.7 本章小結(jié) 230第6章 OpenCL同步及事件機制 2316.1 主機端的OpenCL同步 2326.2 OpenCL 事件機制 2356.2.1 對OpenCL事件的標(biāo)記和柵欄 2446.2.2 內(nèi)核程序中的同步2446.2.3 工作組內(nèi)同步 2456.3 原子操作 2496.3.1 OpenCL 1.2中的原子操作 2496.3.2 OpenCL 2.0中的原子操作 2566.4 局部存儲器與全局存儲器間的異步拷貝2686.5 工作組間同步 2726.6 本章小結(jié) 280第7章 OpenCL與OpenGL互操作2817.1 從一個OpenGL上下文來創(chuàng)建OpenCL上下文 2827.2 OpenCL使用OpenGL共享的緩存對象 2837.3 OpenCL使用OpenGL紋理數(shù)據(jù) 2957.4 OpenCL共享OpenGL渲染緩存 3087.5 從一個OpenCL存儲器對象查詢OpenGL對象信息 3147.6 訪問共享對象的OpenCL與OpenGL之間的同步 3157.7 本章小結(jié) 320第8章 OpenCL到主流GPU處理器的映射3218.1 AMD家族GPU 3218.1.1 AMD Cayman架構(gòu)GPU 3218.1.2 AMD GCN架構(gòu)的GPU 3268.2 NVIDIA CUDA兼容的GPU 3338.2.1 NVIDIA GPU架構(gòu)的執(zhí)行模型 3348.2.2 NVIDIA GPU的全局存儲器 3358.2.3 NVIDIA GPU的局部存儲器 3368.3 ARM Mali GPU架構(gòu) 3368.3.1 硬件架構(gòu) 3378.3.2 存儲器層次 3378.3.3 OpenCL映射 3378.4 本章小結(jié) 338第9章 OpenCL計算二維卷積 3399.1 測試平臺信息 3409.2 AMD X86 CPU串行實現(xiàn) 3419.2.1 簡單實現(xiàn) 3419.2.2 循環(huán)展開優(yōu)化實現(xiàn)3429.2.3 AVX指令集優(yōu)化 3449.2.4 OpenMP 3459.3 簡單OpenCL實現(xiàn) 3479.4 使用常量存儲器優(yōu)化3499.5 使用局部存儲器優(yōu)化3519.6 一個工作項同時計算多個輸出3539.7 本章小結(jié) 355第10章 OpenCL計算矩陣乘法 35610.1 串行實現(xiàn) 35710.1.1 初次實現(xiàn) 35710.1.2 緩存友好的實現(xiàn)35710.1.3 使用AVX指令集實現(xiàn) 35810.2 簡單OpenCL實現(xiàn) 35910.3 使用局部存儲器優(yōu)化36110.4 使用向量加載指令36310.5 一個工作項同時計算多個輸出36510.6 優(yōu)化流水線性能 36810.7 本章小結(jié) 371附錄A OpenCL Query實例 372附錄B 其他主流異構(gòu)并行計算編程環(huán)境簡介 376
<