基本信息
原出版社: Elsevier
[作譯者介紹]
上架時間:2012-5-17
開本:16開
頁碼:271
版次:1-1
所屬分類: 計算機 > 程式設計 > OpenCL
作者簡介
Benedict R. Gaster是一位致力於研究下一代異構處理器編程模型的軟體架構師,具體研究新一代處理器(同時包含CPU和GPU加速器)進行並行編程的高層次抽象。他對OpenCL的設計做出了廣泛的貢獻,並在Khronos Group(科納斯組織)的開放標準聯盟中代表AMD。他因為類型系統的可擴展標記和變數的研究成果而獲得計算機科學博士學位。
Lee Howes已經在AMD工作兩年多,目前的研究集中於未來異構計算的編程模型。他的研究舉在於如何以聲明方式表示疊代域到數據的映射,用通俗易懂的方式向開發人員說明複雜的架構概念和最佳化技術,這兩者都通過編程模型的改進和教育來實現。他因為這一領域的研究成果而獲得倫敦帝國學院計算機科學的博士學位。
David Kaeli獲得羅格斯大學電氣工程專業的學士和博士學位,雪城大學計算機工程專業的碩士學位。他是東北大學工程學院本科課程的副院長兼歐洲經委會學院的全職教授,東北大學計算機系統結構研究實驗室主管(NUCAR負責人)。在1993年加入東北大學之前,他曾在IBM工作12年。在這12年當中,後7年在T. J. Watson研究中心(位於紐約市Yorktown Heights)工作。作為合著者發表了200多篇經過嚴格評審的文獻。他的研究範圍很廣,包括微架構到後端編譯器和軟體工程。他指導了GPU計算領域方面的很多研究項目。目前,他擔任計算機系統結構IEEE技術委員會主席。他是IEEE會士和ACM成員。
Perhaad Mistry目前在東北大學攻讀博士學位。他獲得孟買大學電子工程專業學士學位和東北大學計算機工程專業碩士學位。他目前是東北大學計算機系統結構實驗室的一員,導師是David Kaeli。他做過很多並行計算項目。他曾為GPGPU平台的物理模擬設計了可擴展數據結構,還針對異構設備實施了醫療重建算法。目前的研究重點在於異構計算分析工具的設計。他正在研究採用諸如OpenCL之類的標準是否能夠用於構建出合適的工具來簡化當下跨大量異構設備運行的並行編程和性能分析。
Dana Schaa擁有加州理工大學聖路易奧比斯波分校計算機工程學士和東北大學電氣和計算機工程的碩士學位,他目前也在東北大學攻讀博士學位。他的研究興趣包括並行編程模型和抽象,特別針對GPU架構。他已經開發了基於GPU實現的幾個醫療成像研究項目,從實時可視化到分散式異構環境的圖像重建。他在2010年娶了一位出色的妻子Jenny,他們與他們可愛的貓一起生活在波士頓。
內容簡介
計算機書籍
《opencl異構計算》提供opencl的第一手資料,詳盡闡述了如何在異構環境下進行並行編程。第1章首先介紹如何在並行系統下編程,定義異構編程需要理解的概念。第2~4章循序漸進地介紹opencl的基本架構。第5章和第6章對這些概念加以擴展,旨在幫助讀者更好地理解。第7~10章提供4個更複雜的案例學習,讓讀者理解到opencl具有廣泛的套用。第11~13章鎖定高級主題展開討論。
本書可幫助學生和研究人員更好地理解通用異構計算(尤其是opencl提供的解決方案),尤其是適合不同經驗水平的學生,可以作為opencl課程的教材或其他課程的參考,例如並行編程課程和高級課程。
作譯者本書提供作譯者介紹
Benedict R. Gaster是一位致力於研究下一代異構處理器編程模型的軟體架構師,具體研究新一代處理器(同時包含CPU和GPU加速器)進行並行編程的高層次抽象。他對OpenCL的設計做出了廣泛的貢獻,並在Khronos Group(科納斯組織)的開放標準聯盟中代表AMD。他因為類型系統的可擴展標記和變數的研究成果而獲得計算機科學博士學位。
Lee Howes已經在AMD工作兩年多,目前的研究集中於未來異構計算的編程模型。他的研究舉在於如何以聲明方式表示疊代域到數據的映射,用通俗易懂的方式向開發人員說明復
目錄
《opencl異構計算》
第1章 並行編程入門 1
引言 1
opencl 1
本書目標 2
並行思維 2
並發編程模型和並行編程模型 6
執行緒和共享記憶體 9
訊息傳遞通信 9
不同的並行粒度 10
數據共享和同步 11
本書結構 11
參考文獻 12
擴展閱讀和相關網站 13
第2章 opencl簡介 15
引言 15
opencl標準 15
opencl 規範 15
kernel和opencl執行模型 16
平台和設備 19
.主機-設備互動 19
執行環境 21
上下文 22
命令佇列 22
事件 23
記憶體對象 23
flush命令和finish命令 26
新建一個opencl程式對象 26
opencl的kernel 27
記憶體模型 29
編寫kernel 31
向量相加實例的完整代碼 32
小結 39
參考文獻 39
第3章 opencl設備架構 41
引言 41
硬體權衡 41
性能隨頻率的提升及其限制 43
超標量執行 44
vliw 44
simd和向量處理 47
硬體多執行緒 48
多核架構 51
集成:片上系統和apu 53
高速快取層次和記憶體系統 54
架構設計空間 55
cpu設計 56
gpu體系結構 60
apu和類apu的設計 63
小結 64
參考文獻 65
第4章 opencl基本實例 67
引言 67
套用實例 67
簡單的矩陣相乘 67
圖像卷積實例 77
小結 85
第5章 opencl的並發與執行模型 87
引言 87
kernel,work_item,workgroup和
執行域 87
opencl同步:kernel,fence和barrier 90
佇列與全局同步 94
opencl記憶體一致性 96
事件 96
命令barrier與marker 108
主機端記憶體模型 109
buffer對象 110
image對象 113
設備端記憶體模型 115
設備端寬鬆的記憶體一致性 116
全局記憶體 117
本地記憶體 119
常量記憶體 121
私有記憶體 122
小結 122
第6章 opencl在cpu/gpu
平台上的實現 123
引言 123
opencl在amd phenom ii x6上的
實現 123
opencl在amd radeon hd6970
gpu上的實現 128
多執行緒和記憶體系統 130
基於clause的simd執行 132
資源分配 137
opencl的記憶體性能 139
opencl全局記憶體 139
本地記憶體——軟體管理的cache 142
小結 148
參考文獻 149
第7章 opencl案例學習1:卷積 151
引言 151
計算卷積的kernel 151
選擇合適的workgroup大小 151
將數據快取到本地記憶體 154
執行卷積 160
小結 161
代碼清單 162
主機端代碼 162
kernel代碼 166
參考文獻 171
第8章 opencl案例學習2:
視頻處理 173
引言 173
獲得視頻幀 173
cpu上的解碼 174
在gpu上解碼視頻 175
在opencl中處理一個視頻 179
在多個視頻上處理多個不同effect 180
事件鏈 180
最終輸出顯示到螢幕 181
opencl/opengl協同工作能力 181
小結 184
第9章 opencl案例學習3:
直方圖 185
引言 185
選擇適量的work-group 185
選擇最優的work-group大小 186
全局記憶體訪存最佳化 187
使用原子操作計算局部直方圖 189
本地記憶體訪存最佳化 190
局部直方圖的規約 192
全局規約 193
完整的kernel代碼 193
性能和小結 196
第10章 opencl案例學習4:
混合粒子模擬 197
引言 197
計算概覽 197
gpu實現 200
創建buffer 200
構造加速結構 201
計算碰撞 201
合成 202
cpu實現 202
負載均衡 203
性能和小結 204
生成均勻格線的kernel代碼 205
粒子模擬的kernel代碼 206
第11章 opencl擴展 211
引言 211
擴展機制概覽 211
設備拆分 214
雙精度 225
參考文獻 233
第12章 opencl的性能剖析和
調試 235
引言 235
基於事件的剖析 236
amd app profiler 238
收集opencl程式軌跡 239
收集opencl gpu kernel性能
計數器 242
amd app kernelanalyzer 243
演示amd app profiler 245
啟動amd app profiler 245
使用應用程式的軌跡數據
以發現性能瓶頸 245
使用gpu性能計數器發現kernel的
性能瓶頸 247
調試opencl應用程式 248
gdebugger概覽 249
使用gdebugger調試並行opencl
應用程式 249
amd printf擴展 251
小結 253
第13章 webcl 255
引言 255
框架設計 256
webcl 實驗性實現 257
firefox擴展 257
連線javascript和opencl 258
webcl動手練習 260
web照片編輯器 264
討論 266
小結 268
參考文獻 268
擴展閱讀和相關網站 269
索引 271