1. 程式人生 > >Ubuntu下cuda程式設計的基本過程

Ubuntu下cuda程式設計的基本過程

一:執行程式


 按照上一篇文章所述,安裝好cuda軟體以後,就可以使用”nvcc -V“命令檢視所用到的編譯器版本,本人用版本資訊來自:“Cuda compilation tools, release 3.2, V0.2.1221”。

 自己建立一個目錄,在裡面新建 cu 檔案,寫入程式碼,儲存,即可使用終端切換到相應目錄下進行編譯了,編譯命令:nvcc -o filename filename.cu,即可將 .cu 檔案編譯成可執行檔案,如果有語法錯誤,此時將會報錯,如果沒有,其他錯誤將會在執行時報錯,使用 ./filename 執行程式,即可。

二:除錯程式

 如果程式有誤但是沒能看到結果或者相關資訊,不妨加入除錯資訊:nvcc -o filename filename.cu -g
,即可新增除錯資訊,之後使用gdb執行:gdb ./filename 即可進入可執行檔案,輸入命令:r,即可執行具有除錯資訊的程式,看到錯誤結果的相關資訊,再找出錯誤之處,修改再編譯。

三:錯誤查詢

 在CUDA裡面,有很好的查錯函式,本人一般用其中兩個:CUT_CHECK_ERROR(),CUDA_SAFE_CALL(),前者可以接受最近一次 的cudaerror_t異常,且輸出相應的錯誤型別,比如像檢測一個核函式是否正確執行,可以在執行語句之後加 入:CUT_CHECK_ERROR(“Kernel execution failed”);執行時如果出錯,將會報告並且輸出錯誤型別;而後者直接輸出錯誤型別,例如想要知道某複製語句是否成功,可以在將語句改寫 成:CUDA_SAFE_CALL(cudaMemcpy(d_data, data, size, cudaMemcpyHostToDevice));執行時如果出錯,將會直接輸出錯誤型別。


 上述函式使用時必須包含標頭檔案 cutil.h,新增方法見第四點。

四:新增路徑

 如何新增路徑呢?使用 "-I path" 引數輸入,例如想要新增的標頭檔案為 cutil.h,則在 .cu 檔案將其包括進去,檢視其屬性可以知道其位置,為:/home/user/NVIDIA_GPU_Computing_SDK/C/common/inc,那麼編譯的時候命令可以寫成:nvcc -I /home/user/NVIDIA_GPU_Computing_SDK/C/common/inc -o filename filename.cu,這樣編譯器就會找到該檔案並呼叫了,其他路徑的新增類似。

五:利用Makefile程式設計

 建立一個Makefile,然後輸入命令就可以了:

filename : filename.cu
 nvcc -o filename filename.cu

 在終端使用命令:make filename,即可編譯生成可執行檔案,如果有多個 .cu 檔案要編譯,也可以寫在同一個Makefile裡面,改變 “make filename” 中的 “filename” 即可編譯生成不同的可執行檔案。