码迷,mamicode.com
首页 > 其他好文 > 详细

CUDA学习笔记一

时间:2015-05-16 23:12:45      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:

使用VS2013编译CUDA程序时,可能会遇到以下问题:

1error MSB3721: "D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0\bin\nvcc.exe" -gencode=arch=compute_52,code=\"sm_52,compute_52\" --use-local-env --cl-version 2013 -ccbin "D:\Program Files\Microsoft Visual Studio 12.0\VC\bin\x86_amd64"  -I"D:\Program Files\NVIDIA Corporation\CUDA Samples\v7.0\common\inc" -I"D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0\include" -I"D:\Program Files\NVIDIA Corporation\CUDA Samples\v7.0\common\inc" -I"D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static  -g   -DWIN32 -DWIN32 -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o x64\Debug\kernel.cu.obj "C:\Users\MaoHeng_Lab\documents\visual studio 2013\Projects\CudaTest\CudaTest\kernel.cu"”已退出,返回代码为 2

出现该问题的主要原因是:程序中有语法错误,只要修改掉所有的语法错误,就可以成功编译。

2error MSB3721: "D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0\bin\nvcc.exe" -gencode=arch=compute_52,code=\"sm_52,compute_52\" --use-local-env --cl-version 2013 -ccbin "D:\Program Files\Microsoft Visual Studio 12.0\VC\bin\x86_amd64"  -I"D:\Program Files\NVIDIA Corporation\CUDA Samples\v7.0\common\inc" -I"D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0\include" -I"D:\Program Files\NVIDIA Corporation\CUDA Samples\v7.0\common\inc" -I"D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static  -g   -DWIN32 -DWIN32 -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o x64\Debug\kernel.cu.obj "C:\Users\MaoHeng_Lab\documents\visual studio 2013\Projects\CudaTest\CudaTest\kernel.cu"”已退出,返回代码为 4

对于这个问题我之前调试了很长时间,因为我程序中使用到了CUDA Sample提供的OpenGL,结果编译时总是出现关于GL.hGLU.h中出现错误,其中GL.hGLU.hWindows系统SDK自带文件。可能原因有:

1VS是否include这些文件;

2)检查是否因为x86x64的编译环境不同引起的;

3)很可能因为CUDA自带的OpenGL与系统中的GL.hGLU.h的版本不匹配;

4VSCUDA配置是否合理(VS中属性页面中的配置)

1)、(2)很好核查,对于(3)可能需要下载OpenGL的库再测试。下载GLUT(https://www.opengl.org/resources/libraries/),之后再下载GLEW(http://glew.sourceforge.net/)。最后问题问题是在VSCUDA配置存在问题。以下是修改之后的配置:

 技术分享

其中,IncludePathVS自定义的变量,几乎包含了系统中所有的头文件。一般可直接按照VS自定义的值。

 技术分享

CUDA_PATH_V7_0是自定义环境变量,指向D:\Program Files\NVIDIA GPU Computing\Toolkit\CUDA\v7.0,即安装完CUDAToolKit的目录。NVCUDASAMPLES7_0_ROOTD:\Program Files\NVIDIA Corporation\CUDA Samples\v7.0,即安装完CUDASamples的目录。

 技术分享

最关键的是设置CUDA C++,在这里设置includelib

 技术分享

一定要注意要这是合适的Code Generation,我的显卡是GTX970,支持CUDA5.2,所以在这里我设为compute_52,sm_52。如果支持2.0,则可设置为compute_20,sm_20。当然也可以设置多个,中间使用分号(;)分隔。

 技术分享

在链接处设置lib所在目录,其中看到的CudaToolkitLibDirCUDA安装完VS工具包后自定义的,可以点该选项,弹出编辑,选择宏可以查看,如下所示:

 技术分享

之后写入lib

 技术分享

如果选择静态使用cuda运行时库,填写cudart_static.lib,否则选择动态使用cuda运行时库,填写cudart.lib。因为使用了OpenGL,则需要OpenGL的库:freeglut.libglew64.lib

之后,cuda程序可以编译通过,能够正常运行。

CUDA学习笔记一

标签:

原文地址:http://www.cnblogs.com/breezelee/p/4508785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!