越来越多的数据中心和其他高性能计算环境开始使用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资源实时动态分配给多主机系统中的任何主机,从而满足机器学习工作负载不断变化的需求。
2.4g接收器配对的方法
菲律宾计划为区块链开发商和加密货币交易所提供一个稳定安全的区域
5月份北美PCB总出货量,与去年同期相比,增长了11.7%
6N7P胆电路前级
一文了解存储主流配置eMCP
如何使用PCIe交换网结构在多主机系统中优化资源部署
Trunk技术在计算机实验室的应用
调查显示:超过50%美国人准备转向太空探索技术SpaceX星链卫星互联网服务
基于句嵌入进行无监督文本总结的经验
鸿海的中国市场之路:为何收掉台湾电子通路?
9.5.11 新型光刻胶材料∈《集成电路产业全书》
华为旗下投资公司哈勃科技已经投资了13家半导体公司
平安好医生与云知声成立合资公司 打造家庭终端AI医疗服务
突破层层审核 中科曙光可靠性实验室通过CNAS资质认证
晶心科技发布超低功耗N8核心拟取代8051
浅谈物联网技术在医疗领域中的应用分析
海康威视推出“双碳大脑”达到碳中和目的
ESP32的入门指南
频器通讯受到的干扰怎样做可以减少
傅里叶变换和拉普拉斯变换的区别联系