CUDA并行简单加法程序

来源:互联网 发布:红太阳软件 编辑:程序博客网 时间:2024/06/05 14:50
#include<stdio.h>#define N 7__global__ void add(int *a,int *b,int *c){int tid=blockIdx.x;if(tid<N)c[tid]=a[tid]+b[tid];}int main(){int arr1[N],arr2[N];int sum[N];for(int i=0;i<N;i++){arr1[i]=i;arr2[i]=i+1;}int *a;int *b;int *res;cudaMalloc((void**)&res,sizeof(int)*N);cudaMalloc((void**)&a,sizeof(int)*N);cudaMalloc((void**)&b,sizeof(int)*N);    cudaMemcpy(a,arr1,sizeof(int)*N,cudaMemcpyHostToDevice);    cudaMemcpy(b,arr2,sizeof(int)*N,cudaMemcpyHostToDevice);//定义N个并行块执行这个函数add<<<N,1>>>(a,b,res);//把结果从device拷贝回hostcudaMemcpy(sum,res,sizeof(int)*N,cudaMemcpyDeviceToHost);for(int i=0;i<N;i++)printf("%d\n",sum[i]);cudaFree(a);cudaFree(b);//for testscanf("%d",&sum);}

 
原创粉丝点击