CUDA C学习笔记
//Filename: hello.cu
#include <iostream>
__global__ void add(int a, int b, int *c){
//核函数,将在GPU设备上运行
*c = a + b;
}
int main(void){
//主函数,在主机上运行
int count; //设备个数
cudaDeviceProp prop; //保存设备信息的数据结构
cudaGetDeviceCount(&count);
for(int i=0;i<count;i++){
cudaGetDeviceProperties(&prop,i); //获取设备信息并打印
printf("--- General Information for device %d ---\n",i);
printf("Name: %s\n",prop.name);
printf("Compute capability: %d.%d\n",prop.major,prop.minor);
printf("Clock rate: %d\n", prop.clockRate);
printf("Device copy overlap: ");
if (prop.deviceOverlap)
printf("Enabled\n");
else
printf("Disabled\n");
printf("Kernel execution timeout: ");
if (prop.kernelExecTimeoutEnabled)
printf("Enabled\n");
else
printf("Disabled\n");
printf("--- Memory Information for device %d ---\n",i);
printf("Total global mem: %lld\n",prop.totalGlobalMem);
printf("Total constant Mem: %ld\n",prop.totalConstMem);
printf("Max mem pitch: %ld\n",prop.memPitch);
printf("Texture Alignment: %ld\n",prop.textureAlignment);
printf("--- MP Information for device %d ---\n",i);
printf("Multiprocessor count: %d\n", prop.multiProcessorCount);
printf("Shared mem per mp: %ld\n",prop.sharedMemPerBlock);
printf("Registers per mp: %d\n",prop.regsPerBlock);
printf("Threads in warp: %d\n",prop.warpSize);
printf("Max threads per block: %d\n", prop.maxThreadsPerBlock);
printf("Max thread dimensions: (%d,%d,%d)\n",prop.maxThreadsDim[0],prop.maxThreadsDim[1],prop.maxThreadsDim[2]);
printf("Max grid dimensions: (%d,%d,%d)\n",prop.maxGridSize[0],prop.maxGridSize[1],prop.maxGridSize[2]);
printf("\n");
}
int c;
int *dev_c; //设备指针,用于将在设备上的数据传递给主机,对它的所有操作都要通过CUDA内置函数进行
cudaMalloc((void**)&dev_c,sizeof(int)); //为设备指针分配内存
add<<<1,1>>>(2,7,dev_c); //调用设备函数并读取结果, 第一个参数表示设备在执行核函数时使用的并行线程块的数量
cudaMemcpy(&c, dev_c,sizeof(int),cudaMemcpyDeviceToHost); //从共享内存复制数据
printf("Hello! CUDA C!\n");
printf("2 7 = %d\n", c);
cudaFree(dev_c);
return 0;
}
安装好NVIDIA GPU Computing Toolkit后,将X:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\extras\visual_studio_integration\MSBuildExtensions
下的文件复制到X:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations
中,打开VS2013 x64 兼容工具命令提示,输入以下命令编译以上代码
nvcc hello.cu
评论已关闭