一、CUDA项目的创建
1、 创建一个Win32 console application 程序 HelloWorldCuda,选择空项目,然后添加一个源文件HelloWorldCuda.cpp, 改名字为HelloWorldCuda.cu。
2、选择Project | Build Customizations…菜单,在对话框中选择CUDA 4.0(CUDA5.0,或者CUDA5.5等,以自己安装的为准),这会添加对CUDA C/C++文件(*.cu)的支持。
3、选择HelloWorldCuda.cu文件,右击选择Property打开属性对话框,在General属性页下,将Item Type改为”CUDA C/C++”
4、 选择HelloWorldCuda工程,右击选择Property打开属性对话框,选择“Linker|General” 属性页,在“Additional Libraries Directories”下添加“ $(CUDA_PATH_V4_0)\lib\$(Platform);”
注意:这个时候,CUDA C/C++已经在属性页中出现了
5、打开“Linker|Input”属性页,在“Additional Dependencies”中添加“cudart.lib;”
6、向HelloWorldCuda.cu中添加一些代码。
#include <stdio.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(i == count)
{
fprintf(stderr, "There is no device supporting CUDA 1.x.\n");
return false;
}
cudaSetDevice(i);
return true;
}
int main()
{
if(!InitCUDA())
{
return 0;
}
printf("HelloWorld, CUDA has been initialized.\n");
return 0;
}
用 Ctrl+F5 运行,通过nvcc编译成功,输出结果。
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin
显示如下:
二、CUDA C/C++关键字和函数高亮显示:
在上面HelloWorldCuda.cu文件中发现CUDA C/C++的关键字__global__等没有高亮显示,而且还有下划曲线。下面进行CUDA C/C++关键字和函数的语法高亮显示,配置Visual AssistX 函数高亮,代码提示等功能。
下面是关于代码高亮的设置。共三个设置
1、 .cu文件中C/C++关键字高亮
这个设置是让VS2010编辑.cu文件时,把.cu文件里的C/C++语法高亮。其他的vs2012、vs2013也是一样的。
设置方法: 在VS2010的菜单 依次点击:“Tools|Options…|Text Editor|File Extension”,在这个界面里: “Editor”下拉框选“Microsoft Visual C++”,在“Extension”文本框输入.cu 点击“Add”按钮 ,重复工作把.cuh 添加为vc++类型,点击确定按钮。 把全部.cu文件关闭,再打开,.cu文件C++关键字就高亮了。如果不行就重启VS2010。但是CUDA的关键字还是黑色的,下一步把CUDA关键自高亮显示。
2、 CUDA关键字高亮
为了让CUDA的关键字,如__device__、dim3之类的文字高亮,需要如下步骤:
把SDK_PATH\C\doc\syntax_highlighting\usertype.dat 复制到X:\Program Files (X86)\Microsoft Visual Studio 10.0\Common7\IDE\ 目录下
这里 X:是安装VS2010盘符,这是win7 64位下的路径。
注意:win7 64系统不要复制到这个目录里,复制到这里是不会CUDA关键字高亮的:
X:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\
(如果你的win7是32位的,可能正好是上面这个目录,应该会高亮的,这是win7 64位和32位的差别)
再次强调:SDK_PATH要换成你安装SDK的实际路径,不要直接使用这个字符串。
VS2010需要重启,重启后打开.cu文件,CUDA的关键字应该变成蓝色了。
有的时候usertype.dat是在你安装盘的CUDAsamples文件里,如安装的是CUDA5.0,CUDA5.5,CUDA6.0。
3、 CUDA 函数高亮,及CUDA函数输入代码提示
实现这个功能就要使用VAssistX了。 首先安装支持VS2010的Visual AssistX, 在CUDA 安装前、后安装都行。需要两步实现需要的功能:
a) 让Visual AssistX支持CUDA函数高亮和代码完成。在VS2010菜单里依次点击: “VAssistX->Visual assist X Options->Projects->C/C++Directories”在这个界面的 “Platform”下拉框选 Custom,在“Show Directories for..“下拉框选 Other include files, 然后在下面的输入框里,新建、添加三个路径,点击确定,三个路径分别如下:
SDK_PATH的\c\common\inc
SDK_PATH的\shared\inc
X:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include
这里SDK_PATH要用你安装的SDK路径代替,X:是你的CUDA toolkit安装盘符。
这样分别在这三个目录里面的.h文件定义的函数和类型VAssistX会帮我们在编辑文件时候实现高亮和完成代码。如果少包含一个路径,这个目录里的.h定义的函数和类型就不会高亮和提示了。
b)让Visual AssistX支持.cu文件,也就让Visual AssistX帮我们实现.cu文件高亮和代码完成功能,需要编辑注册表。首先关闭VS2010,点击开始菜单输入regedit打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10。在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh; 确定后, 关闭注册表,重新打开vs2010,Visual AssistX开始支持.cu及.cuh文件的语法高亮及代码完成。此时.cu文件的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息了。
经过上面的安装,开发程序应该没问题了,但会发现有如下的问题:
1. VS2010显示.cu文件时,有很多CUDA函数下有波浪线
2. 在.cu文件里使用VS2010的“Go to definition”功能查无法找到CUDA函数的定义。
这两个问题的原因是VS2010不认识这些函数,没有指定它们在那个头文件里包含的。解决方法其实是一样的,把CUDA tookit 和CUDA SDK的头文件路径加到VS2010的VC++目录里面。
还有的小伙伴在调试程序的时候,会有很多的warnings,这有的时候是存在的,只要不是error就好,error出现就说明你的程序存在错误。祝各位小伙伴都能学会CUDA的应用。加油!
18 个解决方案
#1
挽尊....
#2
额!~~~ 这个还是不要了吧!
#3
#4
#5
嘿嘿,看来大家都会了不少呀!
#6
有什么问题可以提出来,我可以解答一下! 谢谢小伙伴们的支持!
#7
CUDA函数高亮以后,有利于很好的编程,还有介绍的那个软件,很有用的哟!
#8
根本找不到 syntax_highlighting这个文件夹呀,环境配置弄了快一个星期了,彻底崩溃啊,大神救救我吧
#9
win7 64bit + cuda 6.0
使用向导生成的项目能正确运行,以及sample 中的程序deviceQuery也能运行,但是asyncAPI就编译出错。后来经过多次试验,锁定目标,发现一旦包含 <helper_***.h>的程序就会出现以下错误:
d:\安装目录\VS2010\VC\include\xlocale(263): error : namespace "std" has no member "collate"
d:\安装目录\VS2010\VC\include\xlocale(263): error : expected a ";"
d:\安装目录\VS2010\VC\include\xlocale(266): error : identifier "_Coll_fac" is undefined
d:\安装目录\VS2010\VC\include\ostream(62): error : too few arguments in function call
。。。。。。。
还有很多警告如下:
d:\安装目录\VS2010\VC\include\xstring(168): warning : controlling expression is constant
。。。。。。。。
简直了,都要疯了,大神,把我就出苦海吧
使用向导生成的项目能正确运行,以及sample 中的程序deviceQuery也能运行,但是asyncAPI就编译出错。后来经过多次试验,锁定目标,发现一旦包含 <helper_***.h>的程序就会出现以下错误:
d:\安装目录\VS2010\VC\include\xlocale(263): error : namespace "std" has no member "collate"
d:\安装目录\VS2010\VC\include\xlocale(263): error : expected a ";"
d:\安装目录\VS2010\VC\include\xlocale(266): error : identifier "_Coll_fac" is undefined
d:\安装目录\VS2010\VC\include\ostream(62): error : too few arguments in function call
。。。。。。。
还有很多警告如下:
d:\安装目录\VS2010\VC\include\xstring(168): warning : controlling expression is constant
。。。。。。。。
简直了,都要疯了,大神,把我就出苦海吧
#10
syntax_highlighting这个文件夹,如果你安装正确的话,是一定有的呀!~~你是不是没有安装好呀!
#12
楼主您好,我用的是CUDA6.5+vs2010,在安装文件里找不到您说的syntax_highlighting文件夹的,是不是因为CUDA版本的问题,能不能传一个您说的那个文件,我的邮箱是476336296@qq.com
#13
从CUDA6.0开始就没有syntax_highlighting这个文件夹了,直接跳过这一步吧,其他的都设置好了貌似已经能高亮了
#14
我也是没有找到syntax_highlighting这个文件夹,按照上面的步骤做完之后,关键字还是没有高亮 global还是黑的 求大神
#15
呃。。。。。高亮了
#16
跪求 linux环境下的
#17
根本都不存在usertype.dat这个文件
我在计算机下搜索的,,,,cuda 6.5
我在计算机下搜索的,,,,cuda 6.5
#18
无语了,,每一个好用的 cuda 6.0以上的配置跟之前的大不一样,,,算了 这个功能就不要了,,,将就着用了吧
#1
挽尊....
#2
额!~~~ 这个还是不要了吧!
#3
#4
#5
嘿嘿,看来大家都会了不少呀!
#6
有什么问题可以提出来,我可以解答一下! 谢谢小伙伴们的支持!
#7
CUDA函数高亮以后,有利于很好的编程,还有介绍的那个软件,很有用的哟!
#8
根本找不到 syntax_highlighting这个文件夹呀,环境配置弄了快一个星期了,彻底崩溃啊,大神救救我吧
#9
win7 64bit + cuda 6.0
使用向导生成的项目能正确运行,以及sample 中的程序deviceQuery也能运行,但是asyncAPI就编译出错。后来经过多次试验,锁定目标,发现一旦包含 <helper_***.h>的程序就会出现以下错误:
d:\安装目录\VS2010\VC\include\xlocale(263): error : namespace "std" has no member "collate"
d:\安装目录\VS2010\VC\include\xlocale(263): error : expected a ";"
d:\安装目录\VS2010\VC\include\xlocale(266): error : identifier "_Coll_fac" is undefined
d:\安装目录\VS2010\VC\include\ostream(62): error : too few arguments in function call
。。。。。。。
还有很多警告如下:
d:\安装目录\VS2010\VC\include\xstring(168): warning : controlling expression is constant
。。。。。。。。
简直了,都要疯了,大神,把我就出苦海吧
使用向导生成的项目能正确运行,以及sample 中的程序deviceQuery也能运行,但是asyncAPI就编译出错。后来经过多次试验,锁定目标,发现一旦包含 <helper_***.h>的程序就会出现以下错误:
d:\安装目录\VS2010\VC\include\xlocale(263): error : namespace "std" has no member "collate"
d:\安装目录\VS2010\VC\include\xlocale(263): error : expected a ";"
d:\安装目录\VS2010\VC\include\xlocale(266): error : identifier "_Coll_fac" is undefined
d:\安装目录\VS2010\VC\include\ostream(62): error : too few arguments in function call
。。。。。。。
还有很多警告如下:
d:\安装目录\VS2010\VC\include\xstring(168): warning : controlling expression is constant
。。。。。。。。
简直了,都要疯了,大神,把我就出苦海吧
#10
syntax_highlighting这个文件夹,如果你安装正确的话,是一定有的呀!~~你是不是没有安装好呀!
#11
你先看看我的这篇帖子
http://bbs.csdn.net/topics/390833048
#12
楼主您好,我用的是CUDA6.5+vs2010,在安装文件里找不到您说的syntax_highlighting文件夹的,是不是因为CUDA版本的问题,能不能传一个您说的那个文件,我的邮箱是476336296@qq.com
#13
从CUDA6.0开始就没有syntax_highlighting这个文件夹了,直接跳过这一步吧,其他的都设置好了貌似已经能高亮了
#14
我也是没有找到syntax_highlighting这个文件夹,按照上面的步骤做完之后,关键字还是没有高亮 global还是黑的 求大神
#15
呃。。。。。高亮了
#16
跪求 linux环境下的
#17
根本都不存在usertype.dat这个文件
我在计算机下搜索的,,,,cuda 6.5
我在计算机下搜索的,,,,cuda 6.5
#18
无语了,,每一个好用的 cuda 6.0以上的配置跟之前的大不一样,,,算了 这个功能就不要了,,,将就着用了吧