- #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拷贝回host
- cudaMemcpy(sum,res,sizeof(int)*N,cudaMemcpyDeviceToHost);
- for(int i=0;i<N;i++)
- printf("%d\n",sum[i]);
- cudaFree(a);
- cudaFree(b);
- //for test
- scanf("%d",&sum);
- }
时间: 2024-11-08 20:06:48