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 }
Ubuntu 9.04下CUDA编程起步(2)
内容版权声明:除非注明,否则皆为本站原创文章。