c cuda 指定gpu_《CUDA C编程权威指南》——1.3 用GPU输出Hello World-阿里云开发者社区...
本節書摘來自華章計算機《CUDA C編程權威指南》一書中的第1章,第1.3節,作者 [美] 馬克斯·格羅斯曼(Max Grossman),譯 顏成鋼 殷建 李亮,更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。
1.3 用GPU輸出Hello World
學習一個新編程語言的最好方法就是使用這種新語言來編寫程序。在本節,你將開始編寫在GPU上運行的第一個內核代碼。像其他任何編程語言一樣編寫GPU上的第一個程序是輸出字符串“Hello World”。
如果這是你第一次使用CUDA,在Linux系統中,你可能想使用以下命令來檢查CUDA編譯器是否正確安裝:
通常的結果可能是:
你還需要檢查你的機器上是否安裝了GPU加速卡。對此你可以在Linux系統上使用以下命令:
通常的結果是:
在這個例子中,你安裝了兩個GPU卡(不同的用戶配置可能有所不同,因此顯示結果會有所差異)。現在你要準備好寫你的第一個CUDA C程序。寫一個CUDA C程序,你需要以下幾個步驟:
1.用專用擴展名.cu來創建一個源文件。
2.使用CUDA nvcc編譯器來編譯程序。
3.從命令行運行可執行文件,這個文件有可在GPU上運行的內核代碼。
首先,我們編寫一個C語言程序來輸出“Hello World”,如下所示:
把代碼保存到hello.cu中,然后使用nvcc編譯器來編譯。CUDA nvcc編譯器和gcc編譯器及其他編譯器有相似的語義。
如果你運行可執行文件hello,將會輸出:
接下來,編寫一個內核函數,命名為helloFromGPU,用它來輸出字符串“Hello World from GPU!”。
修飾符__global__告訴編譯器這個函數將會從CPU中調用,然后在GPU上執行。用下面的代碼啟動內核函數。
三重尖括號意味著從主線程到設備端代碼的調用。一個內核函數通過一組線程來執行,所有線程執行相同的代碼。三重尖括號里面的參數是執行配置,用來說明使用多少線程來執行內核函數。在這個例子中,有10個GPU線程被調用。綜上所述,得到代碼清單1-1所示的程序。
函數cudaDeviceRest()用來顯式地釋放和清空當前進程中與當前設備有關的所有資源。如下所示,在nvcc命令行中使用-arch sm_20進行編譯:
開關語句-arch sm_20使編譯器為Fermi架構生成設備代碼。運行這個可執行文件,它將輸出10條字符串“Hello World from GPU”,每個線程輸出1條。
總結
以上是生活随笔為你收集整理的c cuda 指定gpu_《CUDA C编程权威指南》——1.3 用GPU输出Hello World-阿里云开发者社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微星z370黑苹果_记录一下装了第二台黑
- 下一篇: python参数默认值实例_Python