Ubuntu 9.04下CUDA编程起步(2)

  26 //初始化
  27 for (int i=0;i<VEC_SIZE;++i)
  28 {
  29 h_A[i]=1.0;
  30 h_B[i]=2.0;
  31 }
  32
  33 //将本地内存的中的数据复制到设备中
  34 float* d_A;
  35 cudaMalloc((void**)&d_A,size);
  36 cudaMemcpy(d_A,h_A,size,cudaMemcpyHostToDevice);
  37
  38 float* d_B;
  39 cudaMalloc((void**)&d_B,size);
  40 cudaMemcpy(d_B,h_B,size,cudaMemcpyHostToDevice);
  41
  42 //分配存放结果的空间
  43 float* d_C;
  44         cudaMalloc((void**)&d_C,size);
  45
  46         //定义16个线程
  47         dim3 dimblock(16);
  48         vecAdd<<<1,dimblock>>>(d_A,d_B,d_C);
  49
  50         //讲计算结果复制回主存中
  51         cudaMemcpy(h_C,d_C,size,cudaMemcpyDeviceToHost);
  52
  53         //输出计算结果
  54         for (int j=0;j<VEC_SIZE;++j)
  55         {
  56                printf("%f\t",h_C[j]);
  57         }
  58
  59         //释放主机和设备内存
  60         cudaFree(d_A);
  61         cudaFree(d_B);
  62         cudaFree(d_C);
  63
  64         free(h_A);
  65         free(h_B);
  66         free(h_C);
  67
  68         return 0;
  69 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpjzw.html