当设备存在多块GPU时,为了高效利用GPU,我们常常需要使用多卡计算。本例中我们使用OpenMP来进行多线程调用多GPU运行,初学者无须详细了解OpenMP,只需知道一两句命令就行。

详细步骤如下:

1、建立一个普通CUDA项目:

2、在项目属性C/C++设置语言:支持openMP

3、在CUDA C/C++中设置预编译命令:-Xcompiler "/openmp"(这一行很重要)

4、设置CUDA C/C++ Host中运行库:为多线程库,如果工程为动态库,则设置为 “Multi-threaded DLL”,这个通常在调用CUDA动态库需要。

5、属性设置完以后,则接下来便使用OpenMP语句 【#pragma omp parallel for num_threads(N)  】进行多GPU调用。详细程序如下:

int subFunction()
{const int arraySize = 5;const int a[arraySize] = { 1, 2, 3, 4, 5 };const int b[arraySize] = { 10, 20, 30, 40, 50 };int c[arraySize] = { 0 };//查询GPU设备数量int deviceCount = 0;cudaGetDeviceCount(&deviceCount);if (deviceCount < 2) {printf("GPU device is less than Two.\n");return -1;}printf("Host CPUs:\t%d\n", omp_get_num_procs());//的使用OpenMP多线程调用多GPU进行计算
#pragma omp parallel for num_threads(deviceCount)for (int i = 0;i < deviceCount; i++) {printf("this is threads:%d Total threads is:%d\n", omp_get_thread_num(), omp_get_num_threads());//调用GPU内核程序addWithCuda(c, a, b, arraySize, 0);}return 0;
}

6、程序运行(由于本机只有一个GPU,多GPU卡具体测试结果就不奉上了)

CUDA 多GPU调用实现相关推荐

  1. 3维线程格 gpu_基于CUDA的GPU并行优化重力三维反演

    重力勘探由于其成本较低.施工方法方便等, 被广泛应用于大尺度的地质异常体勘查.大范围找矿普查.以及小比例尺密度三维地质建模等工作中.目前常用的反演方法有两种, 2.5维联合3维界面反演[和三维物性反演 ...

  2. CUDA学习:GPU硬件连接模型

    CUDA学习:GPU硬件连接模型 一.基本的CPU与GPU连接模型 CPU与GPU之间的连接是通过PCI-Express总线进行连接的.GPU不是一个独立运行的平台而是CPU的协处理器.因此,GPU必 ...

  3. 基于CUDA的GPU并行计算技术实现网课课表编排

    这篇文章是用来填这个坑的:https://blog.csdn.net/xinew4712/article/details/108276264 上篇文末设想的是用天灾和定向改造机制来提高排课运算的效率, ...

  4. cuda和GPU驱动的关系

    参考 https://www.jianshu.com/p/9c98d51e4de3 新系统安装独立显卡驱动https://www.cnblogs.com/mrcangye/p/12349893.htm ...

  5. 基于CUDA的GPU计算PI值

    访问[WRITE-BUG数字空间]_[内附完整源码和文档] 基于CUDA的GPU计算PI值.本项目使用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程分块对性能的影响. ...

  6. 华为鲲鹏服务器安装docker + GPU调用(已实际测试)

    1.安装docker==19.03.9 本教程所用docker及其他安装包可使用如下链接下载: 百度网盘链接-docker,提取码:lj22 链接:https://pan.baidu.com/s/1f ...

  7. CUDA函数库调用问题解决

    CUDA函数库调用问题解决 2013-09-26 13:59 2567人阅读 评论(0) 收藏 举报 分类: cuda(18) C(26) 版权声明:本文为博主原创文章,未经博主允许不得转载. 问题: ...

  8. CUDA之GPU生态系统

    易于编程和性能的巨大飞跃是 CUDA 平台被广泛采用的关键原因之一.CUDA 平台成功的第二大原因是拥有广泛而丰富的生态系统. 与任何新平台一样,CUDA 的成功取决于可用于 CUDA 生态系统的工具 ...

  9. CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起

    目录 1.从硬件看 2.从软件看 3.对应关系 4.SIMT和SIMD 掌握部分硬件知识,有助于程序员编写更好的CUDA程序,提升CUDA程序性能,本文目的是理清sp,sm,thread,block, ...

最新文章

  1. python sklearn.neural_network.MLPClassifier() 神经网络改变模型复杂度的四种方法
  2. sublime text实现函数跳转(window环境)
  3. 回文数的个数、杨辉三角
  4. 留言板小程序开发笔记3
  5. Axure移动端app抽奖转盘+电商圆盘抽奖+商品抽奖+年会抽奖+抽奖动态+Axure通用抽奖转盘组件原型+九宫格方形随机抽奖原型组件+运营活动抽奖转盘
  6. 几何画板课件:圆周角与圆心角关系
  7. 极光IM即时通讯初探
  8. TCL语言学习笔记一
  9. ubuntu从源码编译安装python
  10. 计算机管理中打开移动硬盘磁盘必须格式化,Win10下移动硬盘无法打开提示需要格式化的三种解决方法...
  11. 微型计算机设计总结报告,微机课程设计心得体会范文
  12. linux常用格式化命令,linux格式化命令【使用方案】
  13. android ptp 源码分析,ptp增加豆瓣评分
  14. GRU 详解+实战(生成汪峰感觉的歌词)
  15. 四旋翼飞行器的原理研究和建模
  16. 输入圆锥体的半径和高,并求体积
  17. 教你如何用UltraISO制作U盘系统安装盘(图文教程)
  18. linux 文件的列数,Linux 输出文件列数,拼接文件
  19. 中国原盐产业发展现状分析,原盐主要应用于化工行业「图」
  20. c语言 递归计算P函数

热门文章

  1. 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
  2. html三列布局和两列布局,CSS 常见两列布局、三列布局
  3. vue调用接口修改密码_vue开发前后端分离前端如何调用后端接口?
  4. 快乐大本营中测试声音年龄的软件_海天味极鲜酱油极限挑战宝藏行 终极试炼,极限成员们勇登珠峰大本营...
  5. Eclipse 格式化代码时不换行与自动换行WordWrap插件
  6. python数据可视化-matplotlib之散点图sactter函数详解
  7. 几种web报表打印方案的比较
  8. sudo apt-get install lsb-core
  9. ASP.NET——C#文件夹创建与文件存在判断
  10. etcd-java使用