目录

浅析GPU通信技术(上)-GPUDirect P2P

浅析GPU通信技术(中)-NVLink

浅析GPU通信技术(下)-GPUDirect RDMA

1. 背景

GPU在高性能计算和深度学习加速中扮演着非常重要的角色, GPU的强大的并行计算能力,大大提升了运算性能。随着运算数据量的不断攀升,GPU间需要大量的交换数据,GPU通信性能成为了非常重要的指标。NVIDIA推出的GPUDirect就是一组提升GPU通信性能的技术。但GPUDirect受限于PCI Expresss总线协议以及拓扑结构的一些限制,无法做到更高的带宽,为了解决这个问题,NVIDIA提出了NVLink总线协议。

这个系列文章会对以上GPU通信技术做详细的介绍,旨在帮助开发者更好的利用这些技术对自己的应用做相应的优化。

本篇文章会先介绍一下GPUDirect技术,并着重介绍GPUDirect Peer-to-Peer(P2P)技术。

 2. GPUDirect介绍

2.1 简介

GPUDirect技术有如下几个关键特性:

  1. 加速与网络和存储设备的通信:
  2. GPU之间的Peer-to-Peer Transers
  3. GPU之间的Peer-to-Peer memory access
  4. RDMA支持
  5. 针对Video的优化

下面对最主要的几个技术做分别介绍。

2.2 Shared Memory

2010年6月最先引入的是GPUDirect Shared Memory 技术,支持GPU与第三方PCI Express设备通过共享的pin住的host memory实现共享内存访问从而加速通信。

2.3 P2P

2011年,GPUDirect增加了相同PCI Express root complex 下的GPU之间的Peer to Peer(P2P) Direct Access和Direct Transers的支持。

2.4 RDMA

2013年,GPUDirect增加了RDMA支持,使得第三方PCI Express设备可以bypass CPU host memory直接访问GPU。

3. GPUDirect P2P

3.1 P2P简介

GPUDirect Peer-to-Peer(P2P) 技术主要用于单机GPU间的高速通信,它使得GPU可以通过PCI Express直接访问目标GPU的显存,避免了通过拷贝到CPU host memory作为中转,大大降低了数据交换的延迟。

以深度学习应用为例,主流的开源深度学习框架如TensorFlow、MXNet都提供了对GPUDirect P2P的支持,NVIDIA开发的NCCL(NVIDIA Collective Communications Library)也提供了针对GPUDirect P2P的特别优化。

通过使用GPUDirect P2P技术可以大大提升深度学习应用单机多卡的扩展性,使得深度学习框架可以获得接近线性的训练性能加速比。

3.2 P2P虚拟化

随着云计算的普及,越来越多技术迁移到云上,在云上使用GPUDirect技术,就要解决GPUDirect虚拟化的问题。

这里我们着重讨论下GPUDirect Peer-to-Peer虚拟化的问题

使用PCI Pass-through虚拟化技术可以将GPU设备的控制权完全授权给VM,使得虚拟机里的GPU driver可以直接控制GPU而不需要Hypervisor参与,性能可以接近物理机。

但是同一个虚拟机内的应用却无法使用P2P技术与其它GPU实现通信。下面分析一下无法使用P2P的原因。

首先我们需要知道一个技术限制,就是不在同一个Intel IOH(IO Hub)芯片组下面PCI-e P2P通信是不支持的,因为Intel CPU之间是QPI协议通信,PCI-e P2P通信是无法跨QPI协议的。所以GPU driver必须要知道GPU的PCI拓信息,同一个IOH芯片组下面的GPU才能使能GPUDiret P2P。

但是在虚拟化环境下,Hypervisor虚拟的PCI Express拓扑结构是扁平的,GPU driver无法判断真实的硬件拓扑所以无法开启GPUDirect P2P。

为了让GPU driver获取到真实的GPU拓扑结构,需要在Hypervisor模拟的GPU PCI配置空间里增加一个PCI Capability,用于标记GPU的P2P亲和性。这样GPU driver就可以根据这个信息来使能P2P。

另外值得一提的是,在PCI Pass-through时,所有的PCI Express通信都会被路由到IOMMU,P2P通信同样也需要路由到IOMMU,所以Pass-through下的P2P路径还是会比物理机P2P长一点,延迟大一点。

4. 实测

下面是我们在阿里云GN5实例(8卡Tesla P100)上对GPUDirect P2P延迟做的实测数据。

GPU P2P矩阵如下:

通信延迟对比如下:

我们看到:使能GPUDirect P2P后GPU间通信延迟相比CPU拷贝降低近一半。

下图是在GN5实例上使用MXNet对经典卷积神经网络的图像分类任务的训练性能的加速比:

MXNet在支持P2P的GN5实例上有非常好的单机扩展性,训练性能接近线性加速。

下篇请看《浅析GPU通信技术(中)-NVLink》

浅析GPU通信技术(上)-GPUDirect P2P相关推荐

  1. 浅析GPU通信技术(中)-NVLink总线协议

    1. 背景 上一篇文章<浅析GPU通信技术(上)-GPUDirect P2P>中我们提到通过GPUDirect P2P技术可以大大提升GPU服务器单机的GPU通信性能,但是受限于PCI E ...

  2. 浅析GPU通信技术:NVLink总线技术

    1.  背景 上一篇文章"浅析GPU通信技术:GPUDirect P2P"中我们提到通过GPUDirect P2P技术可以大大提升GPU服务器单机的GPU通信性能,但是受限于PCI ...

  3. 浅析GPU通信技术(中)-NVLink

    目录 浅析GPU通信技术(上)-GPUDirect P2P 浅析GPU通信技术(中)-NVLink 浅析GPU通信技术(下)-GPUDirect RDMA 1.  背景 上一篇文章<浅析GPU通 ...

  4. GPU通信技术-GPUDirect P2P

    GPU-Direct P2P 1.背景 GPU在高性能计算和深度学习加速中扮演着非常重要的角色, GPU的强大的并行计算能力,大大提升了运算性能.随着运算数据量的不断攀升,GPU间需要大量的交换数据, ...

  5. [转]浅析GPU计算——cuda编程

    在<浅析GPU计算--CPU和GPU的选择>一文中,我们分析了在遇到什么瓶颈时需要考虑使用GPU去进行计算.本文将结合cuda编程来讲解实际应用例子.(转载请指明出于breaksoftwa ...

  6. 浅析GPU计算——cuda编程

    在<浅析GPU计算--CPU和GPU的选择>一文中,我们分析了在遇到什么瓶颈时需要考虑使用GPU去进行计算.本文将结合cuda编程来讲解实际应用例子.(转载请指明出于breaksoftwa ...

  7. gpu云服务器运行游戏_在滴滴云 GPU 服务器上使用NVIDIA NGX环境搭建

    1.NGX 简介 NVIDIA NGX是一个新的深度学习技术,将基于AI的加速和增强图像.视频处理的功能直接集成到应用程序中.NVIDIA NGX利用Tensor Core最大限度地提高其运行效率,因 ...

  8. tensorflow gpu利用率为0_训练效率低?GPU利用率上不去?快来看看别人家的tricks吧...

    前言 首先,如果你现在已经很熟悉tf.data+estimator了,可以把文章x掉了╮( ̄▽ ̄"")╭ 但是!如果现在还是在进行session.run(..)的话!尤其是苦恼于G ...

  9. 截断骨干用于检测,YOLO-ReT开源:边缘GPU设备上的高性能检测器

    作者丨happy 编辑丨极市平台 论文链接:https://arxiv.org/pdf/2110.13713.pdf 代码链接:https://github.com/prakharg24/yolore ...

最新文章

  1. CSS基础_Day04
  2. Hdu 4415 Assassin's Creed 【贪心】.cpp
  3. 美女,你这是把腰带当裙子了?
  4. 电脑上mysql数据库无法登录_无法远程登入MySQL数据库的几种解决办法MySQL综合 -电脑资料...
  5. 企业微信加密消息体_微信公众平台开发者中心安全模式消息体加解密实现
  6. jcenter那些事儿
  7. [51nod1206]Picture
  8. thinkphp5.0 session驱动方式问题汇总
  9. 编程语言的动态性(Dart和OC对比)
  10. 历史上水平最高的三十首七律
  11. [案例分享]金融大数据:三大应用场景提升营销收益 (二)
  12. Windows 下有什么软件能够极大地提高工作效率
  13. 《谁说菜鸟不会数据分析 入门篇》学习笔记
  14. 安装宝塔远程工具流程
  15. Eclipse 安装 Jrebel插件
  16. android xmlpullparser 编译出错,将Android支持库更新为23.2.0导致错误:XmlPullParserException...
  17. SEC'' 2018: ACM/IEEE Symposium on Edge Computing 总结(二)
  18. 几款常用幻灯片制作软件对比
  19. PMP如何报考的几个条件
  20. 这个小姐姐的琴房超有意境,你也想拥有吗?

热门文章

  1. java类与接口思维导图_详解java接口基础知识附思维导图
  2. 2022计算机系统大作业——程序人生-Hello’s P2P
  3. Python获取英雄联盟的皮肤原画:新手玩家们都懵了!(一)
  4. 关于下载pdf请求不到数据问题
  5. KDD CUP 99利用决策分类树进行网络异常检测
  6. 网易2018实习生招聘笔试题
  7. ECharts 使用xAxis.axisLine.lineStyle.color设置x坐标轴轴线颜色
  8. 电源线噪声:共模干扰、差模干扰
  9. Bean无法注入,‘sqlSessionFactory‘ threw exception,‘dataSource‘ threw exception大坑
  10. RecyclerView notifyDataSetChanged 导致图片闪烁的原因