将并行线程块修改为使用并行线程时的矢量相加
来源:互联网 发布:网络信息安全 书 编辑:程序博客网 时间:2024/05/02 22:31
和上篇代码有略微差异
#include <cuda_runtime_api.h>#include <iostream>using namespace std;const int N = 10 ;__global__ void add(int *a , int *b , int *c){ int tid = threadIdx.x ;//通过线程索引来对数据进行索引 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 ; //在GPU上分配内存 cudaMalloc((void**)(&dev_a) , sizeof(int) * N) ; cudaMalloc((void**)(&dev_b) , sizeof(int) * N) ; cudaMalloc((void**)(&dev_c) , sizeof(int) * N) ; for (int i = 0 ; i < N ; i++) { a[i] = i ; b[i] = i * i ; } //将a,b复制到GPU cudaMemcpy(dev_a , a , sizeof(int) * N , cudaMemcpyHostToDevice) ; cudaMemcpy(dev_b , b , sizeof(int) * N , cudaMemcpyHostToDevice) ; cudaMemcpy(dev_c , c , sizeof(int) * N , cudaMemcpyHostToDevice) ; add<<<1 , N>>>(dev_a , dev_b , dev_c) ;//只有一个线程块 //将c从GPU复制到cpu cudaMemcpy(c , dev_c , N * sizeof(int) , cudaMemcpyDeviceToHost) ; for(int i = 0 ; i < N ; i++) { cout<<"a["<<i<<"]"<<" + b["<<i<<"] = "<<c[i]<<"\n"; } cudaFree(dev_a) ; cudaFree(dev_b) ; cudaFree(dev_c) ; return ;}
0 0
- 将并行线程块修改为使用并行线程时的矢量相加
- android 多线程 - 并行包线程池为例说说线程池的设计需求及使用
- android 多线程 - 并行包线程池为例说说线程池的设计需求及使用
- 深入浅出多线程(5)以并行包线程池为例说说线程池的设计需求及使用
- 深入浅出多线程(5)以并行包线程池为例说说线程池的设计需求及使用
- 指令级并行,线程级并行,数据级并行区别?线程的概念是什么?
- 使用 Rx 的计算和最大化线程处理并行任务
- 【并行计算-CUDA开发】CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解
- 使用线程池ExecutorService实现并行查询
- C# 并行线程探讨
- C# 并行线程探讨
- 异步,线程,并行概念
- 线程——并行
- 并行线程代码
- 用Intel线程构建块进行安全、可伸缩性的并行编程
- GUI线程的异步并行设计
- PHP 线程,进程、并发、并行 的理解
- PHP 线程,进程、并发、并行 的理解
- spark standalone模式安装和语法
- 概率论与数理统计基本信息 - 条件概率,全概率,贝叶斯公式
- codevs 3066 中缀转后缀 ——栈
- SLF4J和Logback日志框架详解
- 【Git学习笔记】将代码托管到GitHub上
- 将并行线程块修改为使用并行线程时的矢量相加
- glsl/es version number
- 关于Android EditText密码显示隐藏切换
- 解决mac下adb devices命令找不到设备
- Nginx+php-fpm SSL不输出$_SERVER['HTTPS']的解决办法
- CSS3实现动画效果教程详解
- python 字典(Directionary)
- 【HDU】 3790 最短路径问题
- 【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库