VS2012+cuda7.5的环境配置

VS2012+cuda7.5的环境配置:前提需要有NVIDIA的显卡驱动,以及安装dir9.0 dir 11.0

,注意,directX这两个版本都需要,因为升级后的d11对d9中的一些接口进行了修改。本人就是因为没有安装d9而直接安装的d11导致了程序运行错误,找了很久都没解决。

首先,需要准备cuda_7.5.18_windows.exe

下载地址可以通过百度搜索NVIDIA官网,下载cuda这个版本,此版本安装包相比之前的版本有所提高,将cuda SDK也封装进入了安装程序。

第一步,运行,重点是安装设置的选择时记得选择自定义(不要使用默认安装),之后全选所有安装子项目。

在选择安装位置这个界面:有CUDA TOOLKIT,CUDA SAMPLES,CUDA Documentation这三个安装路径的选择,个人推荐使用默认的安装目录。

之后一直安装,成功。

第二步,环境配置,正确安装的CUDA7.5在系统变量下会自动生成两个变量,分别是CUDA_PATH和CUDA_PATH_V7_5,我们需要对系统变量进行一些拓展,以下是变量名和变量的值:

CUDA_LIB_PATH   %CUDA_PATH%\lib\Win32

CUDA_BIN_PATH    %CUDA_PATH%\bin

CUDA_SDK_PATH     C:\ProgramData\NVIDIA Corporation\CUDASamples\v7.5

CUDA_SDK_BIN_PATH    %CUDA_SDK_PATH%\bin\win64

CUDA_SDK_LIB_PATH    %CUDA_SDK_PATH%\common\lib\x64

记得重新启动计算机使变量生效。

第三步:建立vs2012的cuda程序

1创建工程的步骤和创建普通的工程的步骤是一样的。

2源文件中创建CUDA C/C++ File

3之后,右键项目工程名,选择生成自定义,选中CUDA这个文件确定。

4之后,右键工程名,选择属性,在配置属性界面>>VC++目录,

添加两个包含目录:

C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v7.5\include  

C:\ProgramData\NVIDIA Corporation\CUDASamples\v7.5\common\inc

添加两个lib目录:

C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v7.5\lib\x64   

C:\ProgramData\NVIDIA Corporation\CUDASamples\v7.5\common\lib\x64

5右键项目 -> 属性 -> 配置属性 ->连接器 -> 常规 -> 附加库目录,添加以下目录:

$(CUDA_PATH_V7_5)\lib\$(Platform)

6右键项目 -> 属性 -> 配置属性 ->连接器 -> 输入 -> 附加依赖项,添加以下库:

cublas.lib

cublas_device.lib

cuda.lib

cudadevrt.lib

cudart.lib

cudart_static.lib

cufft.lib

cufftw.lib

curand.lib

cusparse.lib

nppc.lib

nppi.lib

npps.lib

nvblas.lib

nvcuvid.lib  

OpenCL.lib

第四步:在配置管理器中将使用的平台修改为64位

第五步:


项目文件右键,选择属性。


常规-》项类型,将项类型修改为CUDA C/C++

(注意,如果这个没有修改,vs2012会找不到函数的入口点,会报错:

无法解析的外部符号 main,该符号在函数 __tmainCRTStartup 中被引用)

第六步: 测试,

给出以下两个测试代码

#include <stdio.h>

#include <iostream> 

//For the CUDA runtime routines (prefixed with "cuda_")

#include <cuda_runtime.h>

 

 

__global__ void Add(int a ,int b,int *c)

{

    *c = a+b;

}

int main()

{

     int c;    

     int *devc;     

     cudaError_t err = cudaSuccess;     

     err =cudaMalloc((void **)&devc,sizeof(int));    

     if (err != cudaSuccess)

     {

        fprintf(stderr, "Failed toallocate device vector A (error code %s)!\n",cudaGetErrorString(err));

        exit(EXIT_FAILURE);

     }

     Add<<<1,1>>>(2,7,devc);

     err =cudaMemcpy(&c,devc,sizeof(int),cudaMemcpyDeviceToHost); 

      if (err != cudaSuccess)

      {

        fprintf(stderr, "Failed toallocate device vector A (error code %s)!\n",cudaGetErrorString(err));

        exit(EXIT_FAILURE);

      }

    printf("2+7=%d\n",c);

    cudaFree(devc);

    system("pause");

    return 0;

}

 

 

//第二个测试代码

/*

#include<stdio.h> 

boolInitCUDA() 

    int count; 

 

    cudaGetDeviceCount(&count); 

 

    if(count == 0) 

    { 

        fprintf(stderr, "There is nodevice.\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 nodevice supporting CUDA 1.x.\n"); 

        return false; 

    } 

 

    cudaSetDevice(i); 

 

    return true; 

 

intmain() 

    if(!InitCUDA()) 

    { 

        return 0; 

    } 

 

    printf("HelloWorld, CUDA has beeninitialized.\n"); 

 

    return 0; 

}  

*/


在完成测试之后,可以发现vs2012编译器并不是支持cuda的.cu或者.cuh格式的文件,以及Visual Assist也不支持,所以要进行相应的修改。

CUDA C/C++关键字和函数高亮显示:

在上面HelloWorldCuda.cu文件中发现CUDA C/C++的关键字__global__等没有高亮显示,而且还有下划曲线。下面进行CUDA C/C++关键字和函数的语法高亮显示,配置Visual AssistX 函数高亮,代码提示等功能。

下面是关于代码高亮的设置。共三个设置

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

这个设置是让VS2010编辑.cu文件时,把.cu文件里的C/C++语法高亮。

设置方法: 在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 Studio10.0\Common7\IDE\目录下  

这里 X:是安装VS2010盘符,这是win7 64位下的路径。

注意:win7 64系统不要复制到这个目录里,复制到这里是不会CUDA关键字高亮的:

X:\Program Files \MicrosoftVisual Studio 10.0\Common7\IDE\
(如果你的win7是32位的,可能正好是上面这个目录,应该会高亮的,这是win7 64位和32位的差别)

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

VS2010需要重启,重启后打开.cu文件,CUDA的关键字应该变成蓝色了。




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:是你的CUDAtoolkit安装盘符。

       这样分别在这三个目录里面的.h文件定义的函数和类型VAssistX会帮我们在编辑文件时候实现高亮和完成代码。如果少包含一个路径,这个目录里的.h定义的函数和类型就不会高亮和提示了。



b) 让Visual AssistX支持.cu文件,也就让Visual AssistX帮我们实现.cu文件高亮和代码完成功能,需要编辑注册表。首先关闭VS2010,点击开始菜单输入regedit打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet11。在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh; 确定后关闭注册表,重新打开vs2010,VisualAssistX开始支持.cu及.cuh文件的语法高亮及代码完成。此时.cu文件的CUDA函数是高亮的,使用函数名符号就会自动提示函数全称,参数类型等信息了。



经过上面的安装,开发程序应该没问题了,但会发现有如下的问题:

1. VS2010显示.cu文件时,有很多CUDA函数下有波浪线

2. 在.cu文件里使用VS2010的“Go to definition”功能查无法找到CUDA函数的定义。

这两个问题的原因是VS2010不认识这些函数,没有指定它们在那个头文件里包含的。解决方法其实是一样的,把CUDA tookit 和CUDA SDK的头文件路径加到VS2010的VC++目录里面。



猜你喜欢

转载自blog.csdn.net/zbzb1000/article/details/52864390
今日推荐