周末早上一大早來實驗室本來說准備看論文的,結果似乎是感冒了,完全沒精神看。
=================分割線1===========================
CUDA之前不知在哪兒看了什么(已經不記得了),一直想搞搞,只是自己電腦一直木有Nvidia的顯卡。
實驗室來用的電腦室HP的workstation正好有個gtx 285,所以就試試啦。
=================分割線2===========================
吐槽下,昨天用vs2010編譯opencv with cuda用了3個小時。
===================正文===========================
先裝好一切要裝的!
1、把各種path加到路徑里面
2、在項目上面點右鍵 選擇 “生成自定義” ,然后就看到有CUDAxxxx的,選上就是了。
3、建立一個.cu文件,然后在上面右鍵,屬性。項類型選擇 CUDA C/C++
4、連接庫里面加上cudart.lib
5、連接器|常規|附加庫目錄 加上 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\lib\Win32 (根據自己的安裝位置來)
6、設置文本編輯器.cu的高亮方案用c++的
一切ok,還不會cuda,網上找了個代碼來編譯一下
#include <stdio.h> #include <cuda_runtime.h> bool initCUDA() { int count; cudaGetDeviceCount(&count); if (count == 0){ fprintf(stderr,"There is no device.\n"); return false; } int i; for(i = 0 ; i < count ; i++){ cudaDeviceProp prop; if (cudaGetDeviceProperties(&prop , i) == cudaSuccess){ if(prop.major >= 1) break; } } if(count == i){ fprintf(stderr ,"There is no device supporting CUDA 1.x\n"); return false; } cudaSetDevice(i); return true; } int main() { if(!initCUDA()){ printf("T_T"); return 0; } printf("CUDA initalized.\n"); getchar(); return 0; }
然后編譯成功!
1>------ 已啟動全部重新生成: 項目: cuda_test, 配置: Debug Win32 ------ 1>生成啟動時間為 2012/9/15 11:15:48。 1>_PrepareForClean: 1> 正在刪除文件“Debug\cuda_test.lastbuildstate”。 1>CudaClean: 1> 1> d:\1957\workspace\cuda_test\cuda_test>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\nvcc.exe" -ccbin "d:\1957\Microsoft Visual Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\cuda.cu.obj" "d:\1957\workspace\cuda_test\cuda_test\cuda.cu" -clean 1> 正在刪除文件“Debug\cuda.cu.deps”。 1>InitializeBuildStatus: 1> 正在創建“Debug\cuda_test.unsuccessfulbuild”,因為已指定“AlwaysCreate”。 1>AddCudaCompilePropsDeps: 1> 已找到“CudaToolkitCustomDir”。 1> 已找到“AdditionalDeps”。 1> 已找到“CompileOut”。 1> 已找到“Include”。 1> 已找到“Keep”。 1> 已找到“KeepDir”。 1> 已找到“NvccCompilation”。 1> 已找到“NvccPath”。 1> 已找到“RequiredIncludes”。 1> 已找到“TargetMachinePlatform”。 1> 已找到“CInterleavedPTX”。 1> 已找到“CodeGeneration”。 1> 已找到“GPUDebugInfo”。 1> 已找到“MaxRegCount”。 1> 已找到“PtxAsOptionV”。 1> 已找到“AdditionalCompilerOptions”。 1> 已找到“Defines”。 1> 已找到“Emulation”。 1> 已找到“HostDebugInfo”。 1> 已找到“FastMath”。 1> 已找到“Optimization”。 1> 已找到“Runtime”。 1> 已找到“RuntimeChecks”。 1> 已找到“TypeInfo”。 1> 已找到“Warning”。 1> 已找到“AdditionalOptions”。 1> 已找到“CommandLineTemplate”。 1>CudaBuild: 1> Compiling CUDA source file cuda.cu... 1> 1> d:\1957\workspace\cuda_test\cuda_test>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "d:\1957\Microsoft Visual Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\cuda.cu.obj" "d:\1957\workspace\cuda_test\cuda_test\cuda.cu" 1> cuda.cu 1> tmpxft_00000ab0_00000000-0_cuda.cudafe1.gpu 1> tmpxft_00000ab0_00000000-5_cuda.cudafe2.gpu 1> cuda.cu 1> tmpxft_00000ab0_00000000-0_cuda.cudafe1.cpp 1> tmpxft_00000ab0_00000000-11_cuda.ii 1> 正在刪除文件“tmpxft_00000ab0_00000000-6_cuda.cpp3.o”。 1>ClCompile: 1> stdafx.cpp 1>Manifest: 1> 正在刪除文件“Debug\cuda_test.exe.embed.manifest”。 1>LinkEmbedManifest: 1> cuda_test.vcxproj -> d:\1957\workspace\cuda_test\Debug\cuda_test.exe 1>FinalizeBuildStatus: 1> 正在刪除文件“Debug\cuda_test.unsuccessfulbuild”。 1> 正在對“Debug\cuda_test.lastbuildstate”執行 Touch 任務。 1> 1>生成成功。 1> 1>已用時間 00:00:05.70 ========== 全部重新生成: 成功 1 個,失敗 0 個,跳過 0 個 ==========