CUDA笔记1:环境配置



几年前一直叫嚣着要学习CUDA,却从未开始过,那么就从今天起步。自己对CUDA并行编程的原理似有了解,却从未真正跑过CUDA程序。CUDA编程第一步首先从VS2010+CUDA5.5的配置环境走起。学走路当然少不了前人的搀扶。


1NV官网下载、安装CUDA Toolkit 5.5

默认安装路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5

C:\ProgramData\NVIDIA Corporation\CUDASamples\v5.5

 

2)环境变量设置:

Toolkit安装完后会有两个自动默认的环境变量:

CUDA_PATH =C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v5.5

CUDA_PATH_V5_5 = C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v5.5

为了运行SDK中的示例,还需额外在系统环境变量PATH中添加:

; C:\ProgramData\NVIDIACorporation\CUDA Samples\v5.5\common\lib\Win32

;C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v5.5\bin

;C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v5.5\lib\Win32

;C:\ProgramData\NVIDIACorporation\CUDA Samples\v5.5\common

 

3)测试CUDA安装成功与否:

运行deviceQuery.exebandwidthTest.exeparticles.exe等示例,存放路径:C:\ProgramData\NVIDIACorporation\CUDA Samples\v5.5\Bin\win32\Release

 

4)利用VS向导创建CUDA工程(推荐):

打开VS-新建项目-NVDIA-CUDA5.5,输入项目名称,自动创建一个包含kernel.cu的示例代码,通常可以直接编译运行成功。如果失败,解决方法请参考xingoo博文“手把手教你cuda5.5与VS2010的编译环境搭建”

 

5)创建VC工程,手动配置CUDA环境(稍微复杂不推荐,参考xingoo博文“手把手教你cuda5.5与VS2010的编译环境搭建”):

5.1启动vs2010,创建空的win32控制台程序;

5.2右键源文件夹-新建项-选择cuda c/c++-新建test.cu文件;

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

5.4右键test.cu-属性-常规-项类型-选择cuda c/c++编译器

5.5右键工程-属性-连接器-常规-附加库目录:C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v5.5\lib\Win32

输入:cudart.lib;

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

5.7测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h> 

#define DATA_SIZE 1024
#define checkCudaErrors(err)  __checkCudaErrors (err, __FILE__, __LINE__)
#define getLastCudaError(msg)  __getLastCudaError (msg, __FILE__, __LINE__)

int data[DATA_SIZE];


// These are CUDA Helper functions

// This will output the proper CUDA error strings in the event that a CUDA host call returns an error


inline void __checkCudaErrors(cudaError err, const char *file, const int line )
{
	if(cudaSuccess != err)
	{
		fprintf(stderr, "%s(%i) : CUDA Runtime API error %d: %s.\n",file, line, (int)err, cudaGetErrorString( err ) );
		return ;        
	}
}

// This will output the proper error string when calling cudaGetLastError


inline void __getLastCudaError(const char *errorMessage, const char *file, const int line )
{
	cudaError_t err = cudaGetLastError();
	if (cudaSuccess != err)
	{
		fprintf(stderr, "%s(%i) : getLastCudaError() CUDA error : %s : (%d) %s.\n",
			file, line, errorMessage, (int)err, cudaGetErrorString( err ) );
		return ;
	}
}

// end of CUDA Helper Functions

__global__ static void sumOfSquares(int *num, int * result){
	int sum=0;
	int i;
	for(i=0;i<DATA_SIZE;i++) {
		sum += num[i]*num[i];
	}
	*result = sum;
}
void GenerateNumbers(int *number, int size){
	for(int i = 0; i < size; i++) {
		number[i] = rand() % 10;
		printf("number[%d] is %d\n",i,number[i]);
	}}

int main(){

	cudaSetDevice(0);
	cudaDeviceSynchronize();
	cudaThreadSynchronize();

	GenerateNumbers(data, DATA_SIZE);

	int * gpudata, * result;
	int sum;

	checkCudaErrors( cudaMalloc((void**) &gpudata, sizeof(int)*DATA_SIZE));
	checkCudaErrors(cudaMalloc((void**) &result, sizeof(int)));
	checkCudaErrors(cudaMemcpy(gpudata, data, sizeof(int)*DATA_SIZE,cudaMemcpyHostToDevice));

	sumOfSquares<<<1, 1, 0>>>(gpudata, result);

	checkCudaErrors(cudaMemcpy(&sum, result, sizeof(int), cudaMemcpyDeviceToHost));

	cudaFree(gpudata);
	cudaFree(result);

	printf("-----------sum: %d\n",sum);

	sum = 0;
	for(int i = 0; i < DATA_SIZE; i++) {
		sum += data[i] * data[i];
	}
	printf("sum (CPU): %d\n", sum);

	getchar();
	return 0;
}


6)利用Visual Assist X实现CUDA文件(.cu, .cuh)的高亮显示和代码提示(参考随风秀舞博文VS2010中配置CUDA5.0):

6.1Visual Studio 2010的菜单里依次选择:

“ VAssistX|Visual assistX Options|Projects|C/C++Directories”,在该界面的“Platform”下拉框中选择Custom,在“ShowDirectories for”下拉框中选择Other include files然后在下面的输入框里,新建、添加如下路径,如图:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc

6.2修改注册表:使用Win+R组合键打开运行窗口,键入regedit命令(registeredit的缩写)打开注册表,找到如下位置:HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10。在右边找到ExtSource项目,鼠标右键选修改,在原有文字后添加如下文字:.cu;.cuh;确定后关闭注册表。重新打开Visual Studio 2010Visual Assist X便开始支持.cu.cuh文件的语法高亮及代码完成。


Ok,至此,我可以编译运行别人的CUDA代码了。接下来就是学习CUDA语法,尝试修改现有代码实现特定算法应用了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值