小城二虎深入理解 GPU 計(jì)算: CUDA 編程指南
編寫(xiě)GPU函數(shù)以執(zhí)行計(jì)算
為了說(shuō)明GPU編程,這個(gè)應(yīng)用程序?qū)蓚€(gè)數(shù)組的相應(yīng)元素添加到一起,將結(jié)果寫(xiě)入第三個(gè)數(shù)組。清單1顯示了一個(gè)在CPU上執(zhí)行此計(jì)算的函數(shù),用C語(yǔ)言編寫(xiě)。它循環(huán)遍歷索引,計(jì)算循環(huán)的每次迭代一個(gè)值。
清單1數(shù)組添加,用C編寫(xiě)
const ****float *** p是指p是常量指針,指向float常量或者變量,但是可以改變指向;float *** **const **p 代表p可以指向變量,但是聲明指定后就不能再改變
每個(gè)值都是獨(dú)立計(jì)算的,因此可以同時(shí)安全地計(jì)算這些值。要在GPU上執(zhí)行計(jì)算,需要在金屬著色語(yǔ)言(MSL)中重寫(xiě)此功能。MSL是為GPU編程而設(shè)計(jì)的C ++的變體。在Metal中,在GPU上運(yùn)行的代碼稱(chēng)為著色器,因?yàn)闅v史上它們首先用于計(jì)算3D圖形中的顏色。清單2顯示了MSL中的著色器,它執(zhí)行與清單1相同的計(jì)算。項(xiàng)目在文件中定義了此函數(shù)。Xcode構(gòu)建應(yīng)用程序目標(biāo)中的所有文件,并創(chuàng)建一個(gè)默認(rèn)的Metal庫(kù),它嵌入到您的應(yīng)用程序中。將在本示例的后面看到如何加載默認(rèn)庫(kù)。?
標(biāo)簽: