码迷,mamicode.com
首页 > 其他好文 > 详细

CUDA并行简单加法

时间:2015-10-31 21:28:47      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

  1. #include<stdio.h>  
  2. #define N 7  
  3. __global__ void add(int *a,int *b,int *c)  
  4. {  
  5.   
  6.     int tid=blockIdx.x;  
  7.     if(tid<N)  
  8.         c[tid]=a[tid]+b[tid];  
  9.   
  10. }  
  11.   
  12. int main()  
  13. {  
  14.     int arr1[N],arr2[N];  
  15.     int sum[N];  
  16.     for(int i=0;i<N;i++)  
  17.     {  
  18.   
  19.         arr1[i]=i;  
  20.         arr2[i]=i+1;  
  21.     }  
  22.     int *a;  
  23.     int *b;  
  24.     int *res;  
  25.     cudaMalloc((void**)&res,sizeof(int)*N);  
  26.     cudaMalloc((void**)&a,sizeof(int)*N);  
  27.     cudaMalloc((void**)&b,sizeof(int)*N);  
  28.     cudaMemcpy(a,arr1,sizeof(int)*N,cudaMemcpyHostToDevice);  
  29.     cudaMemcpy(b,arr2,sizeof(int)*N,cudaMemcpyHostToDevice);  
  30.     //定义N个并行块执行这个函数  
  31.     add<<<N,1>>>(a,b,res);  
  32.     //把结果从device拷贝回host  
  33.     cudaMemcpy(sum,res,sizeof(int)*N,cudaMemcpyDeviceToHost);  
  34.     for(int i=0;i<N;i++)  
  35.         printf("%d\n",sum[i]);  
  36.     cudaFree(a);  
  37.     cudaFree(b);  
  38.     //for test  
  39.     scanf("%d",&sum);  
  40.   
  41.   
  42. }  

CUDA并行简单加法

标签:

原文地址:http://www.cnblogs.com/honeybusybee/p/4926185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!