編譯第乙個hello檔案, 首先建立hello.cu
#include
using namespace std;
intmain()
執行nvcc hello.cu -o hello
,./hello
得到nvcc編譯得到的可執行檔案並執行
上面沒有用到任何gpu特性,只是個主機程式,下面編寫我們第乙個裝置程式,修改上面的**得到新的**
#include
#include
using namespace std;
__global__ void
hellofromgpu
(void
)int
main()
執行同樣的編譯步驟,得到結果在這裡插入**片
hello world from cpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
hellow world from gpu
可以看到 cpu執行了1次,gpu執行了10次·,這是因為有十個執行緒執行,特別注意cudadevicereset這個函式,沒有這個函式printf是沒法輸出的。
cuda的程式設計結構:cuda抽象了硬體細節:執行緒組層次結構,記憶體層次結構,障礙同步。1. 分配gpu記憶體
2. 從cpu記憶體中拷貝資料到gpu記憶體。
3. 呼叫cuda核心函式完成運算
4. 將資料烤回到cpu記憶體
— 《cuda c權威指南》
《CUDA C程式設計權威指南》 2 6 習題
1.在檔案sumarraysongpu timer.cu中,設定block.x 1 023,重新編譯並執行。與執行配置為block.x 1 024的執行結果進行比較,試著解釋其區別和原因。2.參考檔案sumarraysongpu timer.cu,設定block.x 256。新建乙個核心,使得每個執...
《CUDA C程式設計權威指南》 1 5 總結
隨著計算機架構和並行程式設計模型的發展,逐漸有了現在所用的異構系統。cuda平台幫助提高了異構架構的效能和程式設計師的工作效率。cpu gpu的異構系統在高效能計算領域已經成為主流。這種變化使並行設計範例有了根本性轉變 在gpu上執行資料並行工作,而在cpu上執行序列和任務並行工作。作為完整的gpu...
《CUDA C程式設計權威指南》 2 6節習題
2.6 習題 1.在檔案sumarraysongpu timer.cu中,設定block.x 1 023,重新編譯並執行。與執行配置為block.x 1 024的執行結果進行比較,試著解釋其區別和原因。2.參考檔案sumarraysongpu timer.cu,設定block.x 256。新建乙個核...