基于GPU的矢量求和运算
来源:互联网 发布:原唱变伴奏软件 编辑:程序博客网 时间:2024/05/17 05:57
#include <iostream>#include <cuda_runtime_api.h>const int N = 10 ;__global__ void add(int *a , int *b , int *c){ int tid = blockIdx.x ;//blockIdx是一个内置变量,计算该索引处的数据 if (tid < N) { c[tid] = a[tid] + b[tid] ; }}void main(){ int a[N] , b[N] , c[N] ; int *dev_a , *dev_b , *dev_c ; cudaMalloc((void **)&dev_a , N * sizeof(int)) ; cudaMalloc((void **)&dev_b , N * sizeof(int)) ; cudaMalloc((void **)&dev_c , N * sizeof(int)) ; for (int i = 0 ; i < N ; i++) { a[i] = -i ; b[i] = i * i ; } //将数组a,b的值复制到GPU cudaMemcpy(dev_a , a , N * sizeof(int) , cudaMemcpyHostToDevice) ;//将输入数据复制到设备中 cudaMemcpy(dev_b , b , N * sizeof(int) , cudaMemcpyHostToDevice) ; cudaMemcpy(dev_c , c , N * sizeof(int) , cudaMemcpyHostToDevice) ; add<<<N , 1>>>(dev_a , dev_b , dev_c) ;//尖括号中的一个参数表示设备在执行核函数时使用的并行线程块的数量,第二个参数表示cuda运行时在每个线程块中创建的线程数量 //将数组c从GPU复制到cpu cudaMemcpy(c , dev_c , N * sizeof(int) , cudaMemcpyDeviceToHost) ;//cudaMemcpyDeviceToHost指定参数复制回主机 //显示结果 for (int i = 0 ; i < N ; i++) { std::cout<<a[i]<<"\t"<<b[i]<<"\t"<<c[i]<<std::endl ; } //释放GPU上分配的内存 cudaFree(dev_a) ; cudaFree(dev_b) ; cudaFree(dev_c) ;}
0 0
- 基于GPU的矢量求和运算
- [菜鸟每天来段CUDA_C]GPU上实现任意长度的矢量求和
- 《GPU高性能编程CUDA实战》—— 《笔记一》——使用线程实现GPU上的矢量求和
- 用CUDA在GPU熵对任意矢量长度求和
- 【CUDA并行编程之三】Cuda矢量求和运算
- 【CUDA并行编程之三】Cuda矢量求和运算
- 对任意长度的矢量求和
- 矢量的运算表示方法
- 基于SVG的矢量绘图
- 基于GPU的CUDA
- GPU可编程渲染的矢量点要素符号三维可视化
- 多面性面积的矢量运算法
- 5.UIBezierPath(创建基于矢量的路径)
- 基于GPU的RayCast算法
- 基于GPU的优化处理
- 基于GPU的优化处理
- 基于GPU的优化处理
- 基于GPU的粒子系统
- LCD驱动流水帐记录
- Android Fragment使用Toolbar
- Angularjs1.x 中的 service,factory,provider,constant,value
- BASIC-12十六进制转八进制 (用java超时的原因)
- django+python+apache+生产服务器 部署
- 基于GPU的矢量求和运算
- Edit Control实现文件拖拽
- 常见面试之机器学习算法思想简单梳理
- LZW Data Compression Algorithm
- Exception
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- Android adb环境配置
- c语言中数组中的地址和指针的关系
- 物联网 IEEE 802.15.4协议概述