CUDA程式設計 最常用的Bug Fixing方法

2021-10-10 18:09:35 字數 1248 閱讀 9864

今天,西安下雪了,2023年的第一場雪,比往年來的早些。依稀記得,2023年剛來西安上學時,第一場雪是12月24日,由於是在平安夜,所以還能記得,一晃都十年了……

在cuda程式設計過程中,最易出錯的部分就是記憶體的相關操作。時常出現的問題是:程式能夠執行,但是其中的kernel函式未能成功執行。這使得排錯相對傳統的c語言程式設計複雜。好在我們依舊可以使用最傳統的方法:使用printf函式列印輸出進行排查bug。但是,printf函式在cuda程式設計過程中,存在侷限性。具體地說,執行在cpu上的**和執行在gpu上的**是非同步的,執行在gpu核函式中的每個執行緒也是非同步的。這使得printf函式的顯示上比較複雜,不是那麼直觀。

這時,我們可以使用專門的錯誤檢查庫函式checkcudaerror(),注意需要包含標頭檔案#include,#include。在cuda程式設計中,最容易出錯的是就是記憶體分配cudamalloc()cudamemcpy()。為了防止記憶體溢位,我們可以首先檢查電腦中關於gpu的一些資訊。這時,我們可以直接使用安裝cuda後自帶的樣例,具體位置在c:\programdata\nvidia corporation\cuda samples\v10.1\1_utilities\devicequery中。我的個人電腦配置如圖1:

在我們進行核函式配置和變數定義時需要注意上述四點。當然,我們還可以使用上述的checkcudaerror來檢查記憶體操作是否正常。

當我們包含標頭檔案#include,#include可能會出現錯誤: 無法開啟包括檔案 helper_cuda.h。這時我們需要在專案中新增目錄,具體操作為:右鍵專案-> 屬性->配置屬性->c/c+±>常規->附加包含目錄:

c:\programdata\nvidia corporation\cuda samples\v10.1\common\inc。這樣我們就可以正常使用checkcudaerror()函式了,關於checkcudaerror()函式的使用,可以自行搜尋官方文件。由於我只是最簡單地使用,我主要參考了cuda自帶的例子,就足夠了。

linux vim最常用的操作

一 開啟檔案 vim 開啟檔案,並定位於第 行 vim 開啟檔案,並定位至最後一行 vim pattern 開啟檔案,定位至第一次被pattern匹配的行的行首 二 關閉檔案 q 退出 wq 儲存並退出 等於 x 等於 編輯模式下 zz q 不儲存強行退出 w 儲存 w 強行儲存 三 模式轉換 編輯...

Vim最常用的命令

www.kaixinlc.com vi file 開啟檔案到最後一行 其它模式 普通模式 esci 在游標前插入 a 在游標後插入 o 在當前行之下新建行 r 替換當前字元 gg 檔案首行 g 檔案末行 x 剪下當前字元 dd 剪下當前行 yy 複製當前行 p 在游標後貼上 p 在游標前貼上 u 撤...

最常用的Linux命令

基礎命令 pwd 顯示當前目錄 ls 檢視當前目錄下的檔案 ls l 檢視詳細資訊 ls a 顯示隱藏檔案 ls lh h human 更加人性化地顯示檔案列表 ls 大小為位元組 cat 檢視檔案內容 more 慢慢檢視檔案,可以用空格和回車 mkdir 建立檔案 mv 把檔案移動到某個目錄 mk...