两个 RTX2070 super 显卡 可不可以通过 nvlink交换机 进行P2P通信 呢? (答案: 可以)
以前转载了一篇文章: https://www.cnblogs.com/devilmaycry812839668/p/12370685.html
对于里面的结果总感觉有所怀疑,于是斥巨资购入两个 技嘉 rtx2070super 显卡, (至于为啥不弄两个2080ti呢,因为才贵搞不定呢),然后又购入了一款七彩虹的RTX下的nvlink hub 也就是 nvlink 交换机。
环境如下:
操作系统:Ubuntu 18.04
主板:华硕z470-e
cpu:10700k
独立显卡:两个 技嘉2070super
nvlink hub: 七彩虹 (3 slots款)
查看显卡工作情况:
一切正常。
===========================================================
不安装nvlink情况:
上面结果显示在不使用nvlink桥接器的情况下,Ubuntu系统环境中 两个 rtx2070super显卡无法实现P2P通信。
===========================================================
安装nvlink情况:
上面结果显示在使用nvlink桥接器的情况下,Ubuntu系统环境中 两个 rtx2070super显卡 可以实现P2P通信。
注:安装nvlink桥接器后,系统启动此时nvlink桥接器的工作灯是亮的(七彩虹的nvlink是有灯的,红色的),如果等没有亮说明该nvlink桥接器没有正常工作,此时需要确认一下nvlink桥接器安装的是否牢靠,有没有把插槽插到底。
网上查询到有个开启 TCC 计算模式的命令:
nvidia-smi -i 0 -dm TCC
可以看到,这此时这两个显卡开启TCC模式均失败,查资料发现rtx, gtx 显卡不支持TCC模式,只有泰坦之类的专业显卡才可以打开TCC模式,而且开启TCC模式需要这块显卡没有在执行显示任务才可以。
===========================================================
考虑到网上大部分利用nvlink桥接器的都是在windows环境下,于是改换在windows系统下进行测试:
开机进入系统后,打开NVIDIA的控制面板:
开启 SLI 功能, 如上图所示。
打开资源管理器,查看是否实现两个显卡同时工作:
发现成功可行,两个显卡利用率相同,并且利用率的波形变化图也相近似。
使用 nvidia-smi 命令查看:
发现两个显卡确实同时工作,实现了SLI功能,否则的话会有一个显卡利用率为 0 。
但是 由于不太会用 vs2019, 没有在windows平台上成功编译出 simpleP2P.exe 和 p2pBandwidthLatencyTest.exe 这两个P2P测速程序,因此这里就没有windows环境下的实测数值,具体P2P速度可以参考linux环境下的实测数值。(当然也就无法判断在windows环境下实现P2P功能是否需要开启sli,个人观点这两个功能应该是独立的,也就是说不开启sli也可以使用P2P功能)
-----------------------------------
原来以为在linux环境下要想使用nvlink桥接器组P2P需要至少三个独立显卡,两个相同的显卡组成P2P提供给计算任务使用,第三个显卡进行图像显示之用,实践后发现两个相同的支持sli的独立显卡就可以组成P2P, 当然在linux驱动中我们无法设置sli交火,也就是在linux系统中虽然两个显卡进行了nvlink桥接但是只能实现P2P功能而不能实现sli功能,因为linux驱动中并不能设置sli功能,两个显卡不能同时协同的进行显示任务,但是两个显卡在nvlink连接下可以协同进行计算任务。在windows环境下,要想实现P2P功能是否必须实现sli功能就不得而知了(个人观点可能windows系统下即使不开启sli功能也是可以进行P2P功能的,毕竟linux系统下没有sli功能也是可以P2P功能的),毕竟windows系统支持sli功能而linux系统不支持(linux下N卡的sli功能应该是不支持的,linux系统的NVIDIA控制面板中没有sli设置的选项)
linux系统和window系统下 nvlink 最大的不同,个人观点是window是环境下可以实现sli,也就是两个显卡同时负担显示任务,而在两个系统环境下计算任务应该都是相似的都可以实现P2P功能。
在 linux系统下,nvlink桥接器实现P2P功能,此时打开多个视频播放任务, 显卡工作如下:
发现, linux环境下,没有sli功能的nvlink桥接虽然实现了P2P功能但是不能实现sli功能,两个显卡只有主显卡进行显示任务,副显卡基本就没有工作,利用率为 0 。
而在 windows环境下 实现sli功能的nvlink桥接器,主副显卡同时为显示任务工作,利用率基本相同,不存在空闲显卡。
在本文所搭建的环境中,执行 p2pBandwidthLatencyTest 测速程序:
可以看到,PCIE的实际带宽 红色1部分 单向6GB/s, 红色3部分, 双向10.4GB/s , 与实际PCIE3.0*8的理论单向8GB/s ,双向16GB/s 还是有一定距离的。
但是通过NVLINK的P2P通信实测 单向24GB/s , 双向 48GB/s , 其表现还是不错的,虽然比显存内部带宽380GB/s的带宽还是差距很大的,但是比PCIE3.0*8以及*16速度要快不少,当然如果你这里使用的是专业级别显卡NVLINK的带宽可以达到300GB/s 甚至 600GB/s的带宽速度,这样就完全可以把多个显卡的内存当做是在一个显卡内部那样进行调用而不会有明显带宽瓶颈,本文主要是测试目的,由于资金限制也就只能进行消费级别的显卡测试。
下面的 bandwidthTest 测速程序也证明了 主机和GPU的访问带宽和GPU内部的访问带宽:
---------------------------------------
注:
PCIE3.0*16速度是多少?
PCIE3.0*16 通道单方向速度为16GB/s ,由于是全双工工作所以是两个方向的速度之和,也就是16GB/s * 2 = 32GB/s , 所以说PCIE3.0*16的全双工工作的速率为32GB/s 。(每个通道是两个方向的,双工工作所以是16GB/s*2)
频率 8 GT/s= 1GBps
编码效率为 128/130 bit
双工效率 2
通道数量 16
所以是 1* (128/130)* 2 *16 =31.5 GB/s ~32GB/s
从NVIDIA给出的官方数据可以了解到,RTX 2080Ti显卡支持两条NVLink通道,双向带宽可达100GB/s,而RTX 2080只支持一条通道,带宽为50GB/s。即便是一条NVLink通道,也要比主板PCI-Ex16的32GB/s的带宽数值大得多,如此大的带宽可以确保两块显卡之间的数据交换无碍,理论上可以让两块显卡都发挥出全部性能,实现1+1=2的效果。(此段源于 http://www.yxdown.com/hardware/346994.html)
一个通道的NVLINK是50GB/s(全双工,两个方向的情况),也就是说一条通道单方向的NVLINK速率为25GB/s 。
PCIE3.0*16 的速率是32GB/s (全双工,两个方向的情况) , 也就是说PCIE3.0*16单方向的的速率为16GB/s 。
RTX2080Ti 支持两条NVLINK通道,双向带宽为100GB/s, 单向带宽50GB/s, 而 RTX2080, RTX2070super 只支持一条通道,双向带宽为50GB/s, 单向通道为25GB/s 。
从上文的图中:
可以知道实际过程中2070super单方向的带宽实测为22.53GB/s , 虽然与理论的25GB/s有一定距离但是还算可以接受。
根据 http://www.gpus.cn/gpus_list_page_techno_support_content?id=30
中的两个2080ti P2P实测速率单方向为44.8GB/s , 比理论的单方向带宽 50GB/s 也是存在一定距离, 不过正好是本文2070s的实测带宽的22.53GB/s的大致两倍,这也正好符合双通道和单通道的倍数之差。
文章 https://kheresy.wordpress.com/2019/03/05/nvidia-nvlink-on-geforce-rtx/
给出下面的测试结果:(两个 RTX 2080 Ti 显卡在nvlink下的表现)
p2pBandwidthLatencyTest.exe 测试
上图 1部分结果是单方向情况下 不利用P2P功能的时候 显卡间的带宽为 6.6GB/s 和 9.47GB/s , 显存自身的带宽为500GB/s 多一些。
上图 2部分 是单方向下 利用P2P功能显卡间的带宽为 46GB/s左右,和 rtx2080ti nvlink单方向理论带宽50GB/s 接近。
上图 3 部分 是双方向下 不利用P2P功能时候 显卡间带宽为 7.27GB/s 和 11.42GB/s。
PCIE3.0*16的理论单向带宽为16GB/s, 双向带宽为32GB/s, PCIE3.0*8的理论带宽为单方向8GB/s, 双方向16GB/s , 根据上图 1部分和3部分 可以大胆猜测显卡的插槽PCIE3.0的倍数应该是*8的。
上图4部分 是双方向 利用P2P功能的时候显卡间的带宽 大约为 90GB/s 和 rtx2080ti nvlink双方向理论带宽100GB/s 接近。
-------------------------------------------------------------
对于文章 https://zhuanlan.zhihu.com/p/46061343
NVLink工作在GeForce RTX 2080上和Quadro GP100上有区别吗?
中所说的有些内容并不是很认同, 上面这篇文章出现的比较早, 在本次测试中也多次参考这篇文章, 以下说一说自己不认同的地方和认同的地方:
不认同的地方:
无法打开GeForce RTX显卡的TCC模式,这意味着它们将不能“点对点”通信,而这是使用全功能NVLink的前提。-------首先TCC模式主要是指关闭了图形显示功能,一般都是泰坦等专业的计算显卡才可以开启的,但这并不意味着RTX显卡不能支持P2P通信, 经过上面的实测发现RTX显卡也是可以支持P2P功能的。
认同的地方:
RTX显卡即使支持P2P功能,显卡之间通信的带宽也大大受限。-------RTX显卡的P2P带宽确实没有专业显卡的P2P带宽大,不过但是还是可以的。
这篇文章给出了下面的测试结果:
根据本文的实测我们知道 2080ti的P2P带宽为单向理论值50GB/s,实测为44.81GB/s, 2070super的P2P带宽理论单向带宽为25GB/s, 实测为22.53GB/s, 和专业显卡比起来还是可以凑合的, 而比PCIE3.0*16的理论单向带宽16GB/s 还是高上不少的,而且现在很多消费级别的主板两个显卡同时插上只能到达PCIE*8的带宽,这个带宽的理论值为单向8GB/s, 可以看到即使是2080, 2070super这样的单通道P2P显卡的实测带宽也是 PCIE*8的理论带宽的将近3倍(22.53GB/s, 8GB/s, 单方向)
而且 还有一点要说的就是 那篇文章有个 地方有些问题,那就是如果显卡不开TCC模式(当然RTX显卡不支持TCC模式),那么就不需要亮机卡,因为你的RTX显卡在进行P2P通信的同时由于不支持TCC模式所以仍然可以执行图形显示的任务, 也就是说用RTX显卡组成P2P通信是可以的,而且不需要亮机卡,重要的事情说三遍,不需要亮机卡,不需要亮机卡,不需要亮机卡(RTX显卡的情况下)。
在官方资料上可以看到: https://www.nvidia.cn/design-visualization/nvlink-bridges/
使用nvlink桥接器的话,两个显卡之间的速度分别可以为:
双向带宽: 单向带宽:
50GB/s 25GB/s
100GB/s 50GB/s
160GB/s 80GB/s
200GB/s 100GB/s
RTX2080Ti的双向带宽理论为100GB/s, RTX2080 和 RTX2070super 的理论双向带宽为50GB/s 。虽然比不了速度最高的显卡的200GB/s双向nvlink带宽,但是也不主板上的PCIE3.0*16 双向带宽32GB/s, PCIE3.0*8双向带宽16GB/s 要好上很多了, 当然这种P2P的通信模式虽然速率上去了但是还有一个就是每个显卡的显存是固定的而且远远小于主机内存, 两个显卡不访问主机内存的情况下两个显卡之间所能交换的数据量就是显存大小,这里2070super 为8G, 而我这主机内存最高可以安装128GB, 虽然主机内存和显存的交换要走PCIE要慢一些但是主机内存大,即使NVLINK速度再快显存的大小都难以匹敌主机内存,这样的话使用P2P通信的场景还是很有局限性的。
在 https://www.expreview.com/64042-8.html
NVIDIA为专业显卡、计算卡设计了全新的NVLink,而2016年发布的Tesla P100是首款搭载NVLink的产品,单个GPU具有160GB/s的带宽,相当于PCIe 3.0 ×16带宽的5倍。去年GTC 2017上发布的TeslaV100搭载的NVLink 2.0更是将GPU带宽提升到了300G/s(六通道),都快是PCIe 3.0 ×16的10倍。
--------------可以知道,原来TeslaV100 可以实现300GB/s的双通道带宽,确实速度很快,不过价格应该也是不菲呀。
---------------------------------------------------------
Quadro RTX 8000 显卡具体情况呢,下面文章给出了描述:
https://www.zhihu.com/question/364933644/answer/965561950
NVIDIA NVLink™
使用高速互联技术连接2块GPU,以将显存容量扩展至96GB,并以高达100GB/秒的数据传输速度实现更高性能。
多 GPU 可扩展性
QUADRO RTX 8000 NVLINK HB 桥接器
----------------------------------
posted on 2020-07-07 23:00 Angry_Panda 阅读(4719) 评论(1) 编辑 收藏 举报