cheng_you_know

学而时习之!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最近,实验室老师要求将原来项目代码移植到GPU,就查了下关于GPU编程的资料,就学习了下,看到cuda C是CUDA的GPU编程语言基于标准的C语言,相信移植原来的C代码会比较快。哈哈~~~

GPU采用并行计算思想,超高计算能力要求,在没装显卡驱动的xp系统,就显示一卡一卡的~~

关于配置编程平台这个遇到一点驱动版本问题,花了好几个小时来解决问题。之前用驱动精灵装的NVIDIA的驱动,导致在安装官方的cuda 5.0安装包出问题,问题如下:

25130911-f68c445ad80a40179d760e43789792c6

在按照NVIDIA CUDA GETTING STARTED GUIDE FOR MICROSOFT WINDOWS,检测设备安装和带宽就出问题,当然运行cuda给出的例子,也是有问题的:

[Vector addition of 50000 elements]
Failed to allocate device vector A (error code CUDA driver version is insufficient for CUDA runtime version)!

解决方法:

在控制面板中卸载原来的显卡驱动,然后去官网下载(http://www.nvidia.cn/Download/index.aspx?lang=cn),自己电脑配置显卡的最新驱动,安装重启就OK了。(*^__^*) 嘻嘻~~

下面还是详细说下整个配置过程:

由于cuda5.0 环境变量在安装过程就已经设置好了。

vs2008工程设置:

vc   

VS2008中.cu程序高亮显示

查看VS的安装目录下Microsoft Visual Studio 9.0\Common7\IDE中有没有usertype.dat文件,如果没有,把SDK的安装目录下\NVIDIA GPU Computing SDK 3.2\C\doc\syntax_highlighting\visual_studio_8种的usertype.dat文件拷贝过去即可。

重启VS2008,打开.cu程序,可以看到已经高亮显示了。

5、当然还可以再装第三方软件Visual Assist X来实现语法提示,提高工作效率。

1)下载并安装Visual Assist X;

2)进注册表HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\VisualStudio\9.0\Languages\File

Extensions\下面添加子键.cu ,然后复制.cpp的键值到.cu;
进HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet9 在ExtSource键添加键值.cu,.cuh; (这一步发现有些网友找不到,其实是在里面的,用查找下方便,当然可以一个点进去找

register

3)Visual Assist X Options-》Projects->C/C++ Directories  选Custom和Other include files,添

加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include

(Toolkit安装目录)和C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\CUDA Samples\v5.0\common\inc SDK安装目录)

和C:\Program Files\NVIDIA GPU Computing Toolkit\nvToolsExt\include 

visual assist

上述都已经配置成功:

就可以用下面给个简单代码的例子运行了,最后,祝CUDA之旅愉快!

#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <cuda_runtime.h>

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

int main()
{
    int a, b, c;
    int *dev_c;
    scanf("%d%d", &a, &b);
    cudaMalloc(&dev_c, sizeof(int));
    Calc<<<1, 1>>>(a, b, dev_c);
    cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);
    printf("%d\n", c);
    system("pause");
    return 0;

}
 
posted on 2013-06-23 21:33  cheng_you_know  阅读(1398)  评论(0编辑  收藏  举报