//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

标签: none

评论已关闭