CUDA下载和安装
(安装CUDA之前,应确保电脑具有VS2005以上的版本)CUDA 8.0的下载地址http://docs.nvidia.com/ -CUDA toolkit Documentation-Installation Guides-Installation Guide Windows 检测电脑是否具备CUDA的操作系统以及硬件条件
若具备,进入https://developer.nvidia.com/cuda-downloads 选择电脑操作系统 构架 版本以及安装类型,下载CUDA
下载成功后,在相应路径中出现如下软件开发包程序,点击安装,根据相应的提示安装(我都选择的默认)
安装完成后会在菜单所有程序中有以下的文件夹,其中Samples是有Nvidia专业开发人员以及顶尖开发者编写的,以后学习过程中可以作为很好的参考。
以上例子若可以运行的 话,说明开发环境基本安装成功。CUDA Toolkit主要包含编译器和各种编译工具以及库文件等,另外很重要的是驱动,一些人安装后提示错误是没有支持CUDA的设备存在,此时应避免在安装前有NVIDIA的相关驱动,因此在安装前将NVIDIA的相关驱动卸载,所需要的相关驱动都会在下载的安装包的涵盖。一般认为样例程序可以运行即驱动没有问题。
CUDA的安装成功的检测
CUDA中的deviceQuery.exe和bandWidthTest.exe是检测用到的两个程序。
首先启动cmd.exe(在此应先找到以上两个程序的路径,博主的路径为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\demo_suite)
进来默认的路径是 c:\users\Admistrator 输入两个cd...(有三个点),退到C目录下。并按照以上的路径查找到两个程序。
分别执行两个程序,结果如下
#include
#include
#include
#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>>(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;
}
运行结果如下,证明环境搭建成功