VS專案編譯包含CUDA的靜態庫及在原專案中新增CUDA優化程式碼方法

VS專案編譯包含CUDA的靜態庫及在原專案中新增CUDA優化程式碼方法

一、新增CUDA原始檔到專案

新增原始檔,並且編寫相應的程式碼,需要注意的是,為了呼叫新增的核函式。

個人偏好於在原來的專案中,新增一些呼叫C/C 的介面,這樣原來的專案和新增的CUDA原始檔就只有介面耦合。

在這些介面中,完成CUDA庫的初始化,裝置端變數、全域性儲存器的拷貝等工作,由這些新的函式介面完成核函式的呼叫,

可以避免原來的檔案中包含了cuda庫的相關內容造成編譯方面的問題。

二、設定該原始檔的編譯選項

在專案中找到該原始檔,然後滑鼠右鍵選中,選擇屬性,在配置屬性中:

設定“常規”:從生成中排除“否”

項型別:自定義生成工具

然後在下面的自定義生成工具==>常規分別設定編譯引數等。

其中編譯引數可以對Debug、Release分別如下設定,可以參考系統預設生成的CUDA專案的編譯引數(需要替換輸出和輸入):

(Debug版)

“C:\Program Files\NVIDIAGPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe” –use-local-env –cl-version2010 -ccbin “C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\bin”
-G –keep-dir “Debug” -maxrregcount=0 –machine 32–compile -g -Xcompiler “/MTd/EHsc /nologo/Zi ” -o
$(SolutionDir)\vc10\$(Platform)\$(Configuration)\$(RootNamespace)\te.obj $(SolutionDir)..\source\Lib\CUDA\te.cu

(Release版)

“C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v5.0\bin\nvcc.exe” –use-local-env –cl-version 2010 -ccbin “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin” –keep-dir
“Release” -maxrregcount=0–machine 32 –compile -g -Xcompiler “/MT /EHsc /nologo /Zi ” -o $(SolutionDir)\vc10\$(Platform)\$(Configuration)\$(RootNamespace)\te.obj
$(SolutionDir)..\source\Lib\CUDA\te.cu

輸出(這個路徑和上面程式碼中的路徑要一致,否則會在連結時提示找不到obj之類的連結錯誤):

$(SolutionDir)\vc10\$(Platform)\$(Configuration)\$(RootNamespace)\te.obj

附加依賴項: cudart.lib;

三、設定預設包含路徑和庫路徑

對該專案進行預設包含路徑和庫檔案路徑的設定,包括兩點:

(1) VC 目錄,

包含目錄新增: $(CUDA_LIB_PATH)\..\..\include\;

庫目錄新增:     $(CUDA_LIB_PATH)\..\Win32\;

(2)庫管理器==>常規

附加依賴項:cudart.lib;

附加庫目錄:$(CUDA_LIB_PATH)\..\Win32\;