周末早上一大早来实验室本来说准备看论文的,结果似乎是感冒了,完全没精神看。
=================分割线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 个 ==========