cuda——数组相加(矢量和)
2014-05-04 19:42
330 查看
#include <stdio.h> #define N 65535//数组长度 #define M 128//指定的每个线程块的线程数量 int a ,b ,c ; __global__ void add(int* a,int* b,int* c){ int tid = threadIdx.x+blockIdx.x*blockDim.x;//计算线程索引 while(tid < N){ c[tid] = a[tid]+b[tid]; tid += gridDim.x*blockDim.x; } } int main(){ int i; int *d_a,*d_b,*d_c; for(i = 0;i<N;i++){ a[i] = 0; b[i] = i; } //在GPU上分配内存 cudaMalloc((void**)&d_a,sizeof(int)*N); cudaMalloc((void**)&d_b,sizeof(int)*N); cudaMalloc((void**)&d_c,sizeof(int)*N); //将数组a和b复制到GPU cudaMemcpy(d_a,a,N*sizeof(int),cudaMemcpyHostToDevice); cudaMemcpy(d_b,b,N*sizeof(int),cudaMemcpyHostToDevice); //调用核函数进行运算s add<<<(N+M-1)/M,M>>>(d_a,d_b,d_c); //将数组c从GPU复制到CPU cudaMemcpy(c,d_c,N*sizeof(int),cudaMemcpyDeviceToHost); for(i = N-10;i<N;i++) printf("%d+%d=%d\n",a[i],b[i],c[i]); //释放GPU上的内存 cudaFree(d_a); cudaFree(d_b); cudaFree(d_c); }
相关文章推荐
- CUDA矢量相加
- cuda两数组相加,带数组长度
- CUDA 两个向量相加: 当数组的元素个数大于所开的线程数量的时候的解决办法
- CUDA_矢量相加
- 16位的机器,两个128位的数相加(数组方法)
- CUDA调试 数组传进kernel
- OpenCL例程2-数组相加
- Numpy基础:数组和矢量计算
- 《利用Python进行数据分析·第2版》第4章 NumPy基础:数组和矢量计算个人重点
- 笔试面试算法经典--打印数组中相加和为给定值的二元组及三元组(Java)
- 给出一个数组 求任意个数的数相加的和等于给定数 输出所有满足条件的数
- 第一个基于GPU CUDA的程序--向量相加的并行处理
- leetcode_454. 4Sum II 4个数组求和,返回和为0的所有情况的种数 数组两两相加存在map中
- (五)利用GPU计算整数相加 CUDA
- 运算符重载两数组相加
- 从数组中寻找和的相加数
- 将一个数组分成相加结果最相近的两个数组
- php实现两个数组相加的方法
- 两个数组各个数相加或相乘变成一个矩阵求第K大
- 查找数组中3个相加和为零的元素