Windows7+cuda 7.5+vs2010

Windows7+cuda 7.5+vs2010


安装环境:

os:windows7

显卡:Quad 600

vs2010

其他版本的安装配置过程类似。


1.查看本机配置,查看显卡类型是否支持NVIDIA GPU选中计算机-->右键属性-->设备管理器-->显示适配器:CUDA GPUs可以查到相应显卡的compute capability;

2.下载对应的cuda toolkit:cuda7.5工具包中已经包含了显卡驱动和sdk了。

CUDA Toolkit本次安装下载了cuda_7.5.18_windows.exe

默认安装路径可能是 例如:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,记这个路径为SDK_PATH.

3.安装cuda toolkit

选择自定义安装,全选,中间会设置三个路径,根据自己的情况设置:

cuda toolkit:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5

cuda samples:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5

cuda document:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5

CUDA工具包安装完成后,我们还需要确认,CUDA是否已经正确安装,我们可以先检查nvcc编译器是否正确安装,在命令提示符窗口中输入:nvcc -V,回车查看是否有版本信息。若出现版本信息,则证明nvcc安装成功,如下图所示:


4.进入C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5文件夹,选择Samples_vs2010.sln进行编译,然后打开C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\bin\win64\Release目录,打开cmd命令行,执行deviceQuery.exe会显示GPU显卡、CUDA版本等相关信息,最后一行显示:Result = PASS;说明安装成功。 注意:ProgramData这个文件是隐藏文件。


5.配置vs 2010

(1)启动vs 2010,选择win32控制台应用程序,空项目,添加cuda源文件


(2)右键项目,生成自定义,选择cuda7.5


(3)右键项目》属性》配置属性》链接器》常规》附加库目录

添加:$(CUDA_PATH_V7_5)\lib\$(Platform)

(4)右键项目》属性》配置属性》链接器》输入》附加依赖项

添加:cudart.lib

(5)右键点击源文件》属性》项类型》cuda c/c++

至此,设置完毕,也可以新建项目时直接选择cuda项目。

6.设置高亮

(1)设置c/c++关键字高亮

设置方法: 在VS2010的菜单 依次点击:“工具|选项|文本编辑器|文件扩展名”,在这个界面里: “编辑器”下拉选“Microsoft Visual C++”,在“Extension”文本框输入.cu 点击“添加”按钮 ,重复工作把.cuh 添加为vc++类型,点击确定按钮。 把全部.cu文件关闭,再打开,.cu文件C++关键字就高亮了。如果不行就重启VS2010。但是CUDA的关键字还是黑色的,下一步把CUDA关键自高亮显示。

(2)设置cuda关键字高亮

1、.cu文件中C/C++关键字高亮

这个设置是为了当编辑.cu文件时,让Visual Studio 2010把.cu文件里的C/C++语法高亮。其他的Visual Studio 2012、Visual Studio 2013也与此类似。
设置方法:

在Visual Studio 2010的菜单栏中,依次点击Tools > Options… > Text Editor > File Extension,在这个界面里的“Editor”下拉菜单中选“Microsoft Visual C++”,在“Extension”文本框里输入.cu,然后点击“Add”。相同的操作,把.cuh添加为“Microsoft Visual C++”。把全部.cu文件关闭,再打开,.cu文件中的C/C++关键字就高亮了。如果不行就重启Visual Studio 2010。但是CUDA的关键字还是黑色的,下一步把CUDA关键字高亮显示。

 

2、CUDA关键字高亮

为了让CUDA中的关键字,如__global__、__device__、dim3等之类的文字高亮,需要如下操作:

把“SDK_PATH\C\doc\syntax_highlighting\usertype.dat”该文件复制到“X:\Program Files (X86)\Microsoft Visual Studio 10.0\Common7\IDE\”目录下

这里“X:”指的是安装Visual Studio 2010的盘符。注意,这是针对WIN7 64位的情况。注意区别,在WIN7 64位系统下,不要复制到“X:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\”这个目录里,复制到这里CUDA关键字是不会高亮的。而如果你的WIN7是32位的,则可能正好是“X:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\”这个目录(因为32位下也只有这个目录),复制到这个目录下应该会高亮的(我没试过)。

再次强调:SDK_PATH要换成你安装SDK的实际路径,不要直接使用这个字符串。

还有种情况是,6.0版本的CUDA安装完成后貌似没有“usertype.dat”这个文件(我的CUDA7.5就是这种情况),这样便无法用上面的方法来操作了。看到网上有人提到,usertype.dat文件里面就是一堆CUDA扩展的关键字,如__global__、__host__、__device__、__constant__、__shared__、gridDim、blockIdx、blockDim、threadIdx、char1、char2等等。这样的话,一个解决方案就是,直接用低版本里的usertype.dat文件,而另外一个解决办法,就是自己直接写一个usertype.dat文件,这样可以随意添加遇到的关键字,方法就是:新建一个txt文档,按一个关键字一行的方式,把所有自己想高亮的关键字手动敲进去,完了把后缀.txt改为.dat即可。

按上述方法将usertype.dat放到指定目录下后,重启Visual Studio 2010,重新打开.cu文件,CUDA的关键字应该就高亮成蓝色的了。 


3、CUDA 函数高亮及CUDA函数输入代码提示

实现这个功能就要使用VAssistX了。首先安装支持Visual Studio 2010的VAssistX。这个可以在CUDA安装前、后安装都行。

让VAssistX支持.cu文件,也就是当编辑.cu文件时,VAssistX帮我们实现高亮和代码完成功能

这个需要编辑注册表了。

首先关闭Visual Studio 2010,然后使用regedit打开注册表,找到如下位置:

HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10

在右边找到“ExtSource”项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh;,确定后关闭注册表,重新打开Visual Studio 2010,VAssistX开始支持.cu及.cuh文件的语法高亮及代码完成。此时.cu文件了的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称、参数类型等信息了。

但是红色波浪线也有可能是ASSIST X的UNDERLINE设置错误造成的,解决方法如下:

在VAssistX菜单栏 > Visual Assist X Options > 展开Advanced > Underlines > 把underlines spelling errors in comments and strings using的勾去掉就行

另外,我设置完之后仍然发现__global__有波浪线,不过相应的包含这两个头文件就行了:

#include "cuda_runtime.h"

#include "device_launch_parameters.h"


(3)设置vassistx

http://ju.outofmemory.cn/entry/97435

7. 跑一个最简单的Cuda程序

好,现在我们先来看一个最简单的Cuda程序。就像你们学习C语言的时候,直接运行里一个打印“Hello,world”的程序之后老师才会开始跟你解释,我们边练边学。


  
  
#include 
      
      
       
       

__global__ void vector_add(const int *a, const int *b, int *c) {
    *c = *a + *b;
}

int main(void) {
    const int a = 2, b = 5;
    int c = 0;

    int *dev_a, *dev_b, *dev_c;

    cudaMalloc((void **)&dev_a, sizeof(int));
    cudaMalloc((void **)&dev_b, sizeof(int));
    cudaMalloc((void **)&dev_c, sizeof(int));

    cudaMemcpy(dev_a, &a, sizeof(int), cudaMemcpyHostToDevice);
    cudaMemcpy(dev_b, &b, sizeof(int), cudaMemcpyHostToDevice);

    vector_add<<<1, 1>>>(dev_a, dev_b, dev_c);

    cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);

    printf("%d + %d = %d, Is that right?\n", a, b, c);

    cudaFree(dev_a);
    cudaFree(dev_b);
    cudaFree(dev_c);

    return 0;
}
      
      

先用nsight创建一个Cuda运行时项目,然后把代码抄进去,运行一下。

如果你喜欢命令行的方式,你可以把代码抄进一个文本里面,命名为vector_add.cu,然后执行命令nvcc vector_add.cu,然后执行编译生成的a.out文件。

没错,nvcc就像gcc一样用,大多数功能都是相同的,至于.cu这个后缀,这仅仅是个为了说明这是个cuda的程序而已。如果顺利的话,你应该会得到这样的结果输出

2 + 5 = 7. Is that right?

没错,得到这样的结果就说明的Cuda程序已经可以正确运行了。

现在,让我们来分析一下,上面的代码究竟做了些什么东西。


  
  
/*
 * 为了方便起见,我甚至把一些出错判断都去掉了。
 * 比如申请内存空间,谁都没法保证内存一定有空间给你申请的不是吗?
 * 之所以这样,是为了方便我们看清楚一个基本的cuda程序的执行流程。
 */
#include 
     
     
      
      

/*
 * 这个是要放在显卡上面跑的函数,除了前面多了一个__global__之外,
 * 这个函数其实很简单不是吗?
 */
__global__ void vector_add(const int *a, const int *b, int *c) {
    *c = *a + *b;
}

int main(void) {
    //这里定义了三个整形变量a,b和c。他们位于主存上。
    const int a = 2, b = 5;
    int c = 0;

    //这里定义了三个整形指针。为什么要用指针?
    //因为这是在显存上申请空间,对于主机来说,它只能也只需要知道一个映射的地址就够了。
    int *dev_a, *dev_b, *dev_c;

    //为三个指针申请显存空间,虽然只是一个int,4个字节的大小。
    cudaMalloc((void **)&dev_a, sizeof(int));
    cudaMalloc((void **)&dev_b, sizeof(int));
    cudaMalloc((void **)&dev_c, sizeof(int));

    //将内存上的数据复制到显存上,这里复制了a和b两个加数。
    cudaMemcpy(dev_a, &a, sizeof(int), cudaMemcpyHostToDevice);
    cudaMemcpy(dev_b, &b, sizeof(int), cudaMemcpyHostToDevice);

    //调用那个要在显卡上面执行的函数。还记得main前面的那个函数么?
    vector_add<<<1, 1>>>(dev_a, dev_b, dev_c);

    //这里把dev_c上面的值复制到内存的变量c上。
    cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);

    //输出结果
    printf("%d + %d = %d, Is that right?\n", a, b, c);

    //释放显存
    cudaFree(dev_a);
    cudaFree(dev_b);
    cudaFree(dev_c);

    return 0;
}
     
     

这就是一个简单的Cuda程序流程,在主机上准备好数据,然后把数据送到显卡,显卡处理好数据后,再把显卡送回到主机内存上。这个例子非常简单,相信如果你写过几个C语言的程序,很容易就看懂这段代码,毕竟有个几个函数,除了过了个cuda前缀之外,和平常使用的没有很多差别。

reference:

[1] http://www.jianshu.com/p/4fc2b3da2e3d

[2] https://bingliu221.gitbooks.io/learn-cuda-the-simple-way/content/chapter2.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值