出版時(shí)間:2012-12-1 出版社:機(jī)械工業(yè)出版社華章公司 作者:Aaftab Munshi,Benedict R. Gaster,Timothy G. Mattson,James Fung,Dan Ginsburg 頁(yè)數(shù):404 譯者:蘇金國(guó),李璜,楊健康
Tag標(biāo)簽:無(wú)
內(nèi)容概要
OpenCL領(lǐng)域公認(rèn)的權(quán)威著作,由OpenCL核心設(shè)計(jì)人員親自執(zhí)筆,不僅全
面而深刻地解讀了OpenCL規(guī)范和編程模型,而且通過(guò)大量案例和代碼演示了
基于OpenCL編寫(xiě)并行程序和實(shí)現(xiàn)各種并行算法的原理、方法、流程和最佳實(shí)
踐,以及如何對(duì)OpenCL進(jìn)行性能優(yōu)化,如何對(duì)硬件進(jìn)行探測(cè)和調(diào)整。 蒙施、Benedict R.Gaster、Timothy
G.Mattson、James Fung、Dan Giburg所著的《OpenCL編程指南》分為兩大部分:第一部分(1~13章)
,從介紹OpenCL的核心思想和編寫(xiě)OpenCL程序的基礎(chǔ)知識(shí)開(kāi)始,對(duì)枯燥的
OpenCL規(guī)范進(jìn)行了深刻而系統(tǒng)的解讀,旨在幫助讀者全面、正確地理解
OpenCL規(guī)范及其編程模型;第二部分(14~22章),提供了一系列經(jīng)典的案
例,如圖像直方圖、Sobel邊界檢測(cè)過(guò)濾器、并行實(shí)現(xiàn)Dijkstra單源最短路 徑圖算法、Bullet Physics
SDK中的布模擬、用快速傅里葉變換模擬海洋、 光流、OpenCL與PyOpenCL結(jié)合使用,使用OpenCL完成矩陣相乘與稀疏矩陣矢
量乘法等,目的是讓讀者通過(guò)案例熟練掌握編寫(xiě)復(fù)雜并行程序的方法和技巧
?!禣penCL編程指南》的附錄收錄了OpenCL規(guī)范定義的大量函數(shù)、命名常量 和類型,可供程序員開(kāi)發(fā)時(shí)查閱。
作者簡(jiǎn)介
作者:(美國(guó))蒙施(Aaftab Munshi) 譯者:蘇金國(guó) Aaftab Munshi,OpenCL核心設(shè)計(jì)小組的靈魂人物之一,同時(shí)他也是OpenCL、OpenGL ES 1.1、OpenGL ES 2.0規(guī)范的編輯,與DanGinsburg和Dave Shreiner合著了《OpenGL ES 2.0 Programming Guide》。目前他任職于Apple公司。
書(shū)籍目錄
譯者序
序
前言
致謝
第一部分 OpenCL 1.1語(yǔ)言與API
第1章 OpenCL介紹
1.1 什么是OpenCL,或者為什么需要這本書(shū)
1.2 多核的未來(lái):異構(gòu)平臺(tái)
1.3 多核世界中的軟件
1.4 OpenCL的概念基礎(chǔ)
1.4.1 平臺(tái)模型
1.4.2 執(zhí)行模型
1.4.3 內(nèi)存模型
1.4.4 編程模型
1.5 OpenCL與圖形
1.6 OpenCL的內(nèi)容
1.6.1 平臺(tái)API
1.6.2 運(yùn)行時(shí)API
1.6.3 內(nèi)核編程語(yǔ)言
1.6.4 OpenCL小結(jié)
1.7 嵌入式簡(jiǎn)檔
1.8 學(xué)習(xí)OpenCL
第2章 HelloWorld:一個(gè)OpenCL例子
第3章 平臺(tái)、上下文和設(shè)備
第4章 OpenCL C編程
第5章 OpenCL C內(nèi)置函數(shù)
第6章 程序與內(nèi)核
第7章 緩沖區(qū)和子緩沖區(qū)
第8章 圖像和采樣器
第9章 事件
第10章 與OpenCL的互操作
第11章 與Direct3D的互操作
第12章 C++包裝器API
第13章 OpenCL嵌入式簡(jiǎn)檔
第二部分 OpenCL 1.1案例研究
第14章 圖像直方圖
第15章 Sobel邊界檢測(cè)過(guò)濾器
第16章 并行實(shí)現(xiàn)Dijkstra單源最短路徑圖算法
第17章 Bullet Physics SDK中的布模擬
第18章 用快速傅里葉變換模擬海洋
第19章 光流
第20章 用PyOpenCL使用OpenCL
第21章 使用OpenCL完成矩陣乘法
第22章 稀疏矩陣矢量乘法
附錄A OpenCL 1.1小結(jié)
章節(jié)摘錄
版權(quán)頁(yè): 插圖: 再次說(shuō)明,OpenCL并沒(méi)有在宿主機(jī)上規(guī)定內(nèi)存一致性模型。先從離宿主機(jī)最遠(yuǎn)的內(nèi)存(私有內(nèi)存區(qū)域)開(kāi)始考慮,逐步轉(zhuǎn)向宿主機(jī)。私有內(nèi)存對(duì)宿主機(jī)是不可見(jiàn)的。它只對(duì)相應(yīng)的工作項(xiàng)可見(jiàn)。這個(gè)內(nèi)存采用順序編程中很熟悉的加載/存儲(chǔ)內(nèi)存模型。換句話說(shuō),對(duì)私有內(nèi)存的加載和存儲(chǔ)不能重新排序,即除了程序文本中定義的順序外,不能以其他順序出現(xiàn)。 對(duì)于局部?jī)?nèi)存,可以保證一個(gè)工作組中一組工作項(xiàng)能夠看到的值在工作組同步點(diǎn)是一致的。例如,一個(gè)工作組柵欄(work—group barrier)要求在柵欄之前定義的所有加載和存儲(chǔ)必須先完成,工作組中這個(gè)柵欄之后的工作項(xiàng)才能繼續(xù)。換句話說(shuō),柵欄標(biāo)記了一組工作項(xiàng)執(zhí)行中的某一點(diǎn),在這一點(diǎn)可以保證內(nèi)存是一致的,在繼續(xù)執(zhí)行之前處于已知狀態(tài)。 由于局部?jī)?nèi)存只是在一個(gè)工作組內(nèi)共享,所以這對(duì)于定義局部?jī)?nèi)存區(qū)域的內(nèi)存一致性就足夠了。對(duì)于一個(gè)工作組中的工作項(xiàng),在工作組柵欄,全局內(nèi)存也是一致的。不過(guò),盡管這個(gè)內(nèi)存在工作組間共享,但無(wú)法強(qiáng)制執(zhí)行一個(gè)內(nèi)核的不同工作組之間全局內(nèi)存的一致性。 對(duì)于內(nèi)存對(duì)象,OpenCL定義了一個(gè)寬松一致性模型。換句話說(shuō),單個(gè)工作項(xiàng)在內(nèi)存中看到的值不能保證任何時(shí)刻在整個(gè)工作項(xiàng)集中都保持一致。在給定的時(shí)刻,對(duì)于不同的工作項(xiàng),對(duì)OpenCL內(nèi)存對(duì)象的加載和存儲(chǔ)可能以不同的順序出現(xiàn)。這稱為寬松一致性(relaxed consistency)模型,因?yàn)樗鼪](méi)有我們期望的加載/存儲(chǔ)模型那么嚴(yán)格,即并發(fā)執(zhí)行要與串行執(zhí)行的順序完全匹配。 最后一步是定義相對(duì)于命令隊(duì)列中命令的內(nèi)存對(duì)象一致性。在這種情況下,我們使用了釋放一致性的一個(gè)修改版本。與一個(gè)內(nèi)核相關(guān)聯(lián)的所有工作項(xiàng)完成時(shí),這個(gè)內(nèi)核釋放的內(nèi)存對(duì)象的相應(yīng)加載和存儲(chǔ)完成后,內(nèi)核命令才能標(biāo)志為完成。對(duì)于有序隊(duì)列,這足以定義內(nèi)核問(wèn)的內(nèi)存一致性。對(duì)于亂序隊(duì)列,則有兩個(gè)選擇(稱為同步點(diǎn))。第一個(gè)選擇是在特定的同步點(diǎn)(如命令隊(duì)列柵欄)強(qiáng)制一致性。第二個(gè)選擇是通過(guò)事件機(jī)制(將在后面介紹)顯式地管理一致性。這些選擇同樣用于強(qiáng)制宿主機(jī)和OpenCL設(shè)備之間的一致性,也就是說(shuō),內(nèi)存僅在命令隊(duì)列中的同步點(diǎn)是一致的。 1.4.4編程模型 OpenCL執(zhí)行模型定義了一個(gè)OpenCL應(yīng)用如何映射到處理單元、內(nèi)存區(qū)域和宿主機(jī)。這是一個(gè)“以硬件為中心”的模型?,F(xiàn)在我們換個(gè)角度,介紹如何使用編程模型將并行算法映射到OpenCL。編程模型實(shí)際上就是程序員如何考慮他們的算法。因此,這些模型本質(zhì)上比執(zhí)行模型更為靈活。 OpenCL定義了兩種不同的編程模型:任務(wù)并行和數(shù)據(jù)并行??梢钥吹剑€可以考慮一種混合模型:包含數(shù)據(jù)并行的任務(wù)。程序員很有創(chuàng)造性,可以預(yù)期,過(guò)一段時(shí)間可能還會(huì)創(chuàng)建映射到OpenCL基本執(zhí)行模型的另外的編程模型。 數(shù)據(jù)并行編程模型 前面內(nèi)容描述了數(shù)據(jù)并行編程模型的基本思想(見(jiàn)圖1—4)。適合采用數(shù)據(jù)并行編程模型的問(wèn)題都與數(shù)據(jù)結(jié)構(gòu)有關(guān),這些數(shù)據(jù)結(jié)構(gòu)的元素可以并發(fā)更新?;旧希褪菍⒁粋€(gè)邏輯指令序列并發(fā)地應(yīng)用到數(shù)據(jù)結(jié)構(gòu)的元素上。并行算法的結(jié)構(gòu)被設(shè)計(jì)為一個(gè)序列,即對(duì)問(wèn)題領(lǐng)域中數(shù)據(jù)結(jié)構(gòu)并發(fā)更新的序列。
編輯推薦
《OpenCL編程指南》為OpenCL世界帶來(lái)了福音?!禣penCL編程指南》出自資深程序員之手,正是程序員需要的實(shí)用指南。
名人推薦
“歡迎來(lái)到異構(gòu)并行編程的新世界,憑借這本通俗易懂的權(quán)威指南,你將深入了解完整的OpenCL編程模型?!?——Pat Hanrahan,斯坦福大學(xué)教授
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版