zoukankan      html  css  js  c++  java
  • CUDA3.2 + VS2008编程环境配置

    CUDA(Compute Unified Device Architecture)到目前已经发布到4.2了,建议安装最新的,但是因为笔记本目前只支持cuda3.2,所以我只安装了cuda3.2。

    cuda版本见官网:http://developer.nvidia.com/cuda-toolkit-archive

    首先必须说的:本文题目是cuda3.2+vs2008,其实cuda其他版本和vs其他版本安装是一样的。

    可以用一个工具CUDA-Z检测一下显卡设备是否支持CUDA,这个工具还可以查看显卡设备的一些计算相关属性。

    对了,一定要先将Visual Studio工具安装了,要不怎么玩呢是吧

    1. 安装所需文件

    共需三个文件:CUDA driver、toolKit、SDK

    ①CUDA driver:名字很高级,其实就是显卡驱动,能够在显卡上跑起cuda程序所需的驱动。很多博客文章里说显卡驱动必须和toolKit、SDK的版本一致,其实不是这样的,显卡驱动和toolKit、SDK一致当然可以,显卡驱动版本更高那也是可以的。CUDA driver通常有个版本号,比如260.99,你可以用驱动人生或驱动之家之类的软件查看一下当前的显卡驱动,后5位数字就是版本号,当前安装的驱动如果比要求的驱动版本低,那就要更新驱动了,更新到要求的或比要求高的都是可以的。不建议下载官网的驱动,速度太慢。。。

    ②toolKit:打开http://developer.nvidia.com/cuda-toolkit-32-downloads,找到适合需要的版本下载之

    ③SDK:同样找到需要的sdk下载之

    我win32系统所需的两个工具包如下图:

    安装:按此顺序安装即可     驱动->toolKit->SDK

    2.检测安装是否成功

    三个步骤搞定后,桌面上有个NVIDIA GPU Computing SDK 3.2 Browser快捷方式,打开之,里面有很多示例,随便run一个,比如ocean_FFT,看到有一个模拟海平面的画面出来,说明你的安装成功了。

    安装成功已完成第一步,下面就是如何成功地在VS2008中运用cuda

    3.配置环境变量

    安装好后,会默认配置好系统环境变量,比如CUDA_BIN_PATH、CUDA_INC_PATH、CUDA_LIB_PATH、NVSDKCOMPUTE_ROOT

    这里,只需要在系统变量中Path值中添加一下sdk中的debug和release路径,如下:

    ...;C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\bin\win32\Debug;C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\bin\win32\Release

    4.vs中运用cuda

    sdk中有很多示例的工程文件,假如cuda sdk采用的是默认路径,那么示例在C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\src里面(注意该路径默认如果是隐藏的,就在文件夹选项内设置显示所有文件和文件夹)

    打开VS2008,打开项目,项目选择上面示例中的ocean_FFT,编译运行一下,是否也成功了?不出意外当然是可以运行的,因为这是人家专门做的示例程序,要不能编译运行那估计是你vs的问题。

    5.在项目中用cuda

    上面是用的别人的工程,自己怎么在工程中用cuda呢?网上会有很多人建议使用开勇的CUDA_VS_Wizard,这个工具确实牛逼,在cuda版本还是很低的时候确实是神兵利器,但是现在cuda3.2如果自己建工程也是不需要那么多的手工配置的,因为安装完toolKit后会有VS的生成规则的文件,在工程中加入该文件即可。实施不走如下:

    首先建立一个空的win32控制台应用程序,建完后是什么文件都没有的;

    然后在工程文件内新建一个.txt文件,在里面添加代码(代码在书上或网上抄一段,如果找不到,复制下段代码)

    View Code
     1 /*****第一个CUDA程序*******/
     2 
     3 #include <stdio.h>  //C标准输入输出接口
     4 #include <stdlib.h>
     5 #include <cuda_runtime.h>  //使用runtime API
     6 
     7 //CUDA初始化
     8 bool InitCUDA()
     9 {
    10     int count; 
    11     //传回有计算能力的设备数(≥1),没有回传回1,device 0是一个仿真装置,不支持CUDA功能
    12     cudaGetDeviceCount(&count);
    13 
    14     if(count == 0) //没有cuda计算能力的设备
    15     {
    16         fprintf(stderr,"There is no device.\n");
    17         return false;
    18     }
    19 
    20     int i;
    21     for(i=0;i<count;i++)
    22     {
    23         cudaDeviceProp prop; //设备属性
    24         if (cudaGetDeviceProperties(&prop,i)==cudaSuccess) //取得设备数据,brief Returns information about the compute-device
    25         {
    26             if (prop.major>=1) //cuda计算能力
    27             {
    28                 break;
    29             }
    30         }
    31     }
    32 
    33     if (i==count)
    34     {
    35         fprintf(stderr,"There is no device supporting CUDA 1.x\n");
    36         return false;
    37     }
    38 
    39     cudaSetDevice(i); //brief Set device to be used for GPU executions
    40     return true;
    41 }
    42 
    43 int main()
    44 {
    45     if (!InitCUDA())
    46     {
    47         return 0;
    48     }
    49     printf("CUDA initialized.\n");
    50 }

    然后将.txt文件重命名为.cu文件,在项目中加入该.cu文件

    下面进行项目属性设置

    详细图文设置见http://www.cnblogs.com/Romi/archive/2012/04/20/2459669.html

    项目名右键,选择自定义生成规则,在可用规则文件里面选择CUDA Runtime API Rule(v3.2)

    这时项目属性的配置属性里就多了CUDA Runtime API这个选项,里面已经设置好了不用去管它

    再在配置属性—链接器—常规选项的附加库目录里面,添加$(NVSDKCOMPUTE_ROOT)\C\common\lib和$(CUDA_LIB_PATH)

    在配置属性—链接器—输入选项的附加依赖项里添加cudart.lib  cutil32D.lib

    编译运行。。。显卡支持cuda会出现CUDA initialized.     如果有问题,建议打开sdk中的工程看下别人是怎么设置的,然后用到本项目下

    题外话:如果你是使用开勇的CUDA_VS_Wizard,编译或链接或显示结果出现问题都不要奇怪,因为这个工具用的是cuda2,生成规则要换成v3.2版的,而且链接库的路径名可能不同也要修改,另外,使用该向导写程序不能跟踪调试。

    6.添加Visual Asissit X支持

    上面的.cu文件内的代码没有语法高亮,Visual Asisst X工具可以完成该功能,该部分网上有详细的方案,这里我将步骤摘录下来:

    设置好了后,工程中添加cuda文件就不需要再用txt转了,在添加新项里就有cuda文件(.cu文件)

    最后,祝CUDA之旅愉快!

  • 相关阅读:
    jmeter bean shell断言加密的响应信息(加密接口测试二)
    java ID3算法
    MPI常用函数
    数据结构——单链表
    RBM代码注释c++
    MPI_一个简单的消息传递
    电路测试
    java KNN算法
    [转]矩阵分解在推荐系统中的应用
    java EM算法
  • 原文地址:https://www.cnblogs.com/Romi/p/2459608.html
Copyright © 2011-2022 走看看