Microchip Technology Inc.

固件工程技术顾问

Vincent Haché

越来越多的数据中心和其他高性能计算环境开始使用GPU,因为GPU能够快速处理深度学习和机器学习应用中生成的大量数据。不过,就像许多可提高应用性能的新型数据中心创新一样,这项创新也暴露出新的系统瓶颈。在这些应用中,用于提高系统性能的新兴架构涉及通过一个PCIe®结构在多个主机之间共享系统资源。

PCIe标准(特别是其基于树的传统层级)会限制资源共享的实现方式(和实现程度)。不过,可以实现一种低延时的高速结构方法,这种方法允许在多个主机之间共享大量GPU和NVMe SSD,同时仍支持标准系统驱动程序。

PCIe结构方法采用动态分区和多主机单根I/O虚拟化(SR-IOV)共享。各PCIe结构之间可直接路由点对点传输。这样便可为点对点传输提供最佳路由,减少根端口拥塞,并且更有效地平衡CPU资源的负载。

传统上,GPU传输必须访问CPU的系统存储器,这会导致端点之间发生存储器共享争用。 当GPU使用其共享的存储器映射资源而不是CPU存储器时,它可以在本地提取数据,无需先通过CPU传递数据。这消除了跳线和链路以及由此产生的延时,从而使GPU能够更高效地处理数据。

PCIe的固有限制

PCIe主层级是一个树形结构,其中的每个域都有一个根联合体,从该点可扩展到“叶子”,这些“叶子”通过交换网和桥接器到达端点。链路的严格层级和方向性给多主机、多交换网系统带来了成本高昂的设计要求。

图1——多主机拓扑

以图1所示的系统为例。要符合PCIe的层级,主机1必须在交换网1中有一个专用的下行端口,该端口连接到交换网2中的专用上行端口。它还需要在交换网2中有一个专用的下行端口,该端口连接到交换网3中的专用上行端口,依此类推。主机2和主机3也有类似的要求,如图2所示。

图2——每个主机的层级要求

即使是基于PCIe树形结构的最基本系统,也需要各交换网之间有三个链路专用于每个主机的PCIe拓扑。而且,由于主机之间无法共享这些链路,因此系统会很快变得极为低效。

此外,符合PCIe的典型层级只有一个根端口,而且尽管“多根I/O虚拟化和共享”规范中支持多个根,但它会使设计更复杂,并且当前不受主流CPU支持。结果会造成未使用的PCIe设备(即端点)滞留在其分配到的主机中。不难想象,这在采用多个GPU、存储设备及其控制器以及交换网的大型系统中会变得多么低效。

例如,如果第一个主机(主机1)已经消耗了所有计算资源,而主机2和3未充分利用资源,则显然希望主机1访问这些资源。但主机1无法这样做,因为这些资源在它的层级域之外,因此会发生滞留。非透明桥接(NTB)是这种问题的一个潜在解决方案,但由于每种类型的共享PCIe设备都需要非标准驱动程序和软件,因此这同样会使系统变得复杂。更好的方法是使用PCIe结构,这种结构允许标准PCIe拓扑容纳多个可访问每个端点的主机。

实施方法

系统使用一个PCIe结构交换网(本例中为Microchip Switchtec® PAX系列的成员)在两个独立但可透明互操作的域中实现:即包含所有端点和结构链路的结构域以及每个主机专用的主机域(图3)。主机通过在嵌入式CPU上运行的PAX交换网固件保留在单独的虚拟域中,因此,交换网将始终显示为具有直连端点的标准单层PCIe设备,而与这些端点出现在结构中的位置无关。

图3——每个结构的独立域

来自主机域的事务会在结构域中转换为ID和地址,反之,结构域中通信的非分层路由也是如此。这样,系统中的所有主机便可共享连接交换网和端点的结构链路。交换网固件会拦截来自主机的所有配置平面通信(包括PCIe枚举过程),并使用数量可配置的下行端口虚拟化一个符合PCIe规范的简单交换网。

当所有控制平面通信都路由到交换网固件进行处理时,数据平面通信直接路由到端点。其他主机域中未使用的GPU不再滞留,因为它们可以根据每个主机的需求动态分配。结构内支持点对点通信,这使其能够适应机器学习应用。当以符合PCIe规范的方式向每个主机提供功能时,可以使用标准驱动程序。

操作方法

为了解这种方法的工作原理,我们以图4中的系统为例,该系统由两个主机(主机1采用Windows®系统,主机2采用Linux®系统)、四个PAX PCIe结构交换网、四个Nvidia M40 GPGPU和一个支持SR-IOV的Samsung NVMe SSD组成。在本实验中,主机运行代表实际机器学习工作负载的通信,包括Nvidia的CUDA点对点通信基准测试实用程序和训练cifar10图像分类的TensorFlow模型。嵌入式交换网固件处理交换网的低级配置和管理,系统由Microchip的ChipLink调试和诊断实用程序管理。

图4:双主机PCIe结构引擎

四个GPU最初分配给主机1,PAX结构管理器显示在结构中发现的所有设备,其中GPU绑定到Windows主机。但是,主机上的结构不再复杂,所有GPU就像直接连接到虚拟交换网一样。随后,结构管理器将绑定所有设备,Windows设备管理器将显示GPU。主机将交换网视为下行端口数量可配置的简单物理PCIe交换网。

一旦CUDA发现了四个GPU,点对点带宽测试就会显示单向传输速率为12.8 GBps,双向传输速率为24.9 GBps。这些传输直接跨过PCIe结构,而无需通过主机。如果运行用于训练Cifar10图像分类算法的TensorFlow模型并使工作负载分布在全部四个GPU上,则可以将两个GPU释放回结构池中,将它们与主机解除绑定。这样可以释放其余两个GPU来执行其他工作负载。与Windows主机一样,Linux主机也将交换网视为简单的PCIe交换网,无需自定义驱动程序,而CUDA也可以发现GPU,并在Linux主机上运行P2P传输。性能类似于使用Windows主机实现的性能,如表1所示。

表1:GPU点对点传输带宽

下一步是将SR-IOV虚拟功能连接到Windows主机,PAX将此类功能以标准物理NVM设备的形式提供,以便主机可以使用标准NVMe驱动程序。此后,虚拟功能将与Linux主机结合,并且新的NVMe设备将出现在模块设备列表中。本实验的结果是,两个主机现在都可以独立使用其虚拟功能。

务必注意的是,虚拟PCIe交换网和所有动态分配操作都以完全符合PCIe规范的方式呈现给主机,以便主机能够使用标准驱动程序。嵌入式交换网固件提供了一个简单的管理接口,这样便可通过成本低廉的外部处理器来配置和管理PCIe结构。设备点对点事务默认情况下处于使能状态,不需要外部结构管理器进行额外配置或管理。

总结

PCIe交换网结构是一种能够充分利用CPU巨大性能的绝佳方法,但PCIe标准本身存在一些障碍。不过,可以通过使用动态分区和多主机单根I/O虚拟化共享技术来解决这些难题,以便可以将GPU和NVMe资源实时动态分配给多主机系统中的任何主机,从而满足机器学习工作负载不断变化的需求。

声明:本站转载此文目的在于传递更多信息,并不代表赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容,本网站对此声明具有最终解释权。

华清见远 pcie网卡驱动_使用PCIe交换网结构在多主机系统中优化资源部署相关推荐

  1. intel x520网卡驱动_手工编译linux桌面内核(二)——硬件驱动的配置 下篇

    前言: 前面的方法讲完了,接下来我们来看看实例(我自己电脑的配置). 这里我只打算列出几项重要的驱动配置来,其它的请自行查阅gentoo wiki! 再次强调,这是我自己电脑的硬件驱动配置,不可能完全 ...

  2. esxi 7.0 封装瑞昱网卡驱动_小科普 | 无线网卡怎么选?

    从电话线到光纤入户,有线网络的体验改变了我们的生活方式,但我们的行动空间也往往被这么一根线牵制,无线便给了我们更多自由.那么无线网卡,有什么讲究呢? ▌类型 从类型上来看,无线网卡大致可以分为三种:U ...

  3. mellanox 网卡驱动_收购Mellanox之后 NVIDIA发布全球首款25G安全智能网卡

    都说N卡网速快,现在,NVIDIA网卡真的来了-- 4月27日,NVIDIA正式完成了对Mellanox(迈络思)的收购,成交价70亿美元,约合人民币496亿元,得到了后者丰富的高性能网络解决方案. ...

  4. 在群晖synoboot.img引导文件中加入网卡驱动_群晖DS1819+使用记录

    2019.03.07 发现最近的黑裙实在很不稳定,加上对数据的安全性的要求,下了个狠心入了个群晖DS1819+(八盘位),可以加两个DX517拓展到18盘位. 就是下面这货 硬盘:8T*5 RAID6 ...

  5. 服务器网卡驱动_教你星际蜗牛C款i211网卡服务器咋装Windows sevs2012R2服务器下

    原文作者:诸葛东流 说明 把i211网卡驱动解决,其它驱动都好解决了,用驱动软件可以联网更新驱动:再就是无线WIFI开启设置. 装Windows sevse 2012 R2服务器装机篇 现在说说,无线 ...

  6. 暗影精灵5怎么更新网卡驱动_笔记本怎么更新无线网卡驱动

    相信大家平时在操作电脑的时候都会定期的更新一下系统补丁,升级硬件驱动.那么要怎样更新无线网卡驱动程序呢?这里小编就来给大家说说笔记本更新无线网卡驱动程序的正确方法,大家不妨来看看啊~ 最近有很多朋友问 ...

  7. 嵌入式linux pcie网卡配置,[嵌入式linux]PCIe 热拔插(rescan)

    linux下可通过/sys/bus/pci/devices/0000\:[bus number]\:[device number].[function number]/ 目录下的节点进行热拔插操作. ...

  8. 服务器网卡驱动如何修复,阿信博客-deepin装好系统后无法识别网卡问题修复-安装网卡驱动...

    安装deepin系统后,可能是因为网卡比较新.系统并没有是配出网卡驱动,导致无法联网.解决方法是安装对应的网卡驱动. 在官网上下载好对应的驱动,注意我用的是2.5G Ethernet LINUX dr ...

  9. 2012 r2 万能网卡驱动_老旧台式机也可升级WiFi6和蓝牙5.1,仅安装百元网卡即可...

    大部分的家用电脑都会选择台式机,最主要是台式机无论是价格还是性能,都要优于同配置的笔记本.现在主流的主板都会内置无线网卡模块,但是对于游戏用户来说,还是比较喜欢通过网线连接,最主要的原因还是部分无线网 ...

最新文章

  1. 知识图谱学习笔记-命名实体识别
  2. html文本分类输出,构建中文网页分类器对网页进行文本分类
  3. JNDI(datasource)在tomcat,JBOSS下的spring+quartz配置
  4. 论文浅尝 | 面向简单知识库问答的模式修正强化策略
  5. 市面上热门的咖啡网站管理系统 v3.0
  6. apache配置php后访问localhost出现403错误
  7. 上午的工作多以学习为主
  8. Redis详解(七)——Redis主从同步高可用架构
  9. webstorm主题设置
  10. 方案分享丨基于海思Hi3519智能 IP 摄像机解决方案
  11. c语言setw,在C++中,setw(int n)
  12. Qt摄像头热插拔实现
  13. Educational Codeforces Round 47 (Rated for Div. 2) D ---- Relatively Prime Graph
  14. MICCAI-iseg2017挑战赛小结与婴儿脑组织分割总结
  15. AEJoy —— 详解 AE 如何将 png 序列帧导出为 SVGA 动画文件
  16. python中的sort排序加换行_python中sort()排序的方法
  17. 加入计算机网络协会申请书,大学生退出协会申请书
  18. 电子作业票系统:消除安全管理漏洞,科技赋能企业业务洞察
  19. mac上卸载Anyconnect后 重新安装失败
  20. GameFramework篇:Font texture for dynamic font MainFont is missing. Please reimport the Font. All dyna

热门文章

  1. 支付宝花呗提前还款————附操作图片
  2. php 改数字 例如10000变成1万
  3. Android面试:ActivityA与ActivityB相互跳转对应生命周期变化
  4. 急刹车是否踩离合器?别犹豫,踩。
  5. 【python】使用pushplus实现警报微信提醒,提供代码和详细注释
  6. 【MATLAB100个实用小技巧】——界面设计(33-43)
  7. 微信WeChat多开
  8. 解决:steps/make_fbank.sh: line 132: run.pl: command not found
  9. 新版Q绑查询HTML源码
  10. 面试时问你对该公司有什么想法如何回答?