CUDA 7.5 + VS2010安装使用

1.cuda 7.5的安装

cuda 7.5直接去官方网站下载即可

 https://developer.nvidia.com/cuda-downloads

下载完毕之后,双击安装文件,一路点击下一步就行。

2.验证是否安装成功

用VS2010 打开C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\1_Utilities\deviceQuery中的相应工程

点击生成,于是在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\bin\win64\Debug中生成了deviceQuery.exe

在cmd窗口中运行deviceQuery.exe,得到如下窗口:



PASS表示安装成功。

3.在VS2010中创建工程

这部分转自http://www.cnblogs.com/xing901022/archive/2013/08/09/3248469.html

打开VS,新建项目

利用安装好的cuda向导,直接建立工程,里面会自动有一段kernel累加的代码

  View Code

在main函数return之前加入getchar(),停止自动退出,以便观测效果

进入后,点击运行按钮,可能发生LINK错误(如果没有错误,跳过此段

这时进入-》项目-》属性-》通用配置-》输入和输出-》嵌入清单 ---- 修改成,原来可能为“

再次编译,成功运行后,会显示下面的结果

 

恭喜,cuda已经在您的机器上安装成功了。

 

如果是新手,推荐这样新建工程后,在里面修改代码成为自己的工程,配置属性不会出错。

如果想要自己手动配置也可以参考下面的例子。

 

 


 

手动配置VS项目(不推荐)

最后就是VS的配置了(这个是自己手动配置的,有时候容易出现问题,不是很推荐,建议用上面的方法建立项目进行测试

  5.1 启动VS2010

  5.2 新建一个win32的控制台工程,空的。

  5.3 右键源文件文件夹->新建项->选择cuda c/c++->新建一个以.cu结尾的文件

  5.4 右键工程-》生成自定义-》选择cuda生成

  5.5 右键test.cu-》属性-》选择cuda c/c++编译器

  5.6 右键工程-》属性-》链接器-》常规-》附加库目录-》添加目录 $(CUDA_PATH_V5_5)\lib\$(Platform);

  5.7 在链接器-》输入中添加 cudart.lib

 

  5.8 在工具-》选项-》文本编辑器-》文件扩展名-》添加cu \cuh两个文件扩展名

 

至此,编译环境的相关搭建就完成了。

 


 

 

下面提供了一段test.cu的代码,供测试使用:

 

复制代码
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <cuda_runtime.h> 
 4 
 5 #define DATA_SIZE 1024
 6 #define checkCudaErrors(err)  __checkCudaErrors (err, __FILE__, __LINE__)
 7 #define getLastCudaError(msg)  __getLastCudaError (msg, __FILE__, __LINE__)
 8 
 9 int data[DATA_SIZE];
10 
11 ////
12 // These are CUDA Helper functions
13 
14 // This will output the proper CUDA error strings in the event that a CUDA host call returns an error
15 
16 
17 inline void __checkCudaErrors(cudaError err, const char *file, const int line )
18 {
19     if(cudaSuccess != err)
20     {
21         fprintf(stderr, "%s(%i) : CUDA Runtime API error %d: %s.\n",file, line, (int)err, cudaGetErrorString( err ) );
22         return ;        
23     }
24 }
25 
26 // This will output the proper error string when calling cudaGetLastError
27 
28 
29 inline void __getLastCudaError(const char *errorMessage, const char *file, const int line )
30 {
31     cudaError_t err = cudaGetLastError();
32     if (cudaSuccess != err)
33     {
34         fprintf(stderr, "%s(%i) : getLastCudaError() CUDA error : %s : (%d) %s.\n",
35         file, line, errorMessage, (int)err, cudaGetErrorString( err ) );
36         return ;
37     }
38 }
39 
40 // end of CUDA Helper Functions
41 
42 __global__ static void sumOfSquares(int *num, int * result){
43     int sum=0;
44     int i;
45     for(i=0;i<DATA_SIZE;i++) {
46         sum += num[i]*num[i];
47         }
48     *result = sum;
49 }
50 void GenerateNumbers(int *number, int size){
51     for(int i = 0; i < size; i++) {
52         number[i] = rand() % 10;
53         printf("number[%d] is %d\n",i,number[i]);
54     }}
55     
56 int main(){
57 
58         cudaSetDevice(0);
59         cudaDeviceSynchronize();
60         cudaThreadSynchronize();
61 
62         GenerateNumbers(data, DATA_SIZE);
63 
64         int * gpudata, * result;
65         int sum;
66 
67         checkCudaErrors( cudaMalloc((void**) &gpudata, sizeof(int)*DATA_SIZE));
68         checkCudaErrors(cudaMalloc((void**) &result, sizeof(int)));
69         checkCudaErrors(cudaMemcpy(gpudata, data, sizeof(int)*DATA_SIZE,cudaMemcpyHostToDevice));
70 
71         sumOfSquares<<<1, 1, 0>>>(gpudata, result);
72 
73         checkCudaErrors(cudaMemcpy(&sum, result, sizeof(int), cudaMemcpyDeviceToHost));
74 
75         cudaFree(gpudata);
76         cudaFree(result);
77 
78         printf("-----------sum: %d\n",sum);
79 
80         sum = 0;
81         for(int i = 0; i < DATA_SIZE; i++) {
82             sum += data[i] * data[i];
83         }
84         printf("sum (CPU): %d\n", sum);
85 
86         getchar();
87         return 0;
88 }
复制代码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值