服务器 频道

提高HPC GPU的灵活性 且看戴尔之道

  【IT168 专稿】图形处理单元(GPU)大概是HPC领域最热门的潮流之一。它们可以大幅提升系统的性能,同时降低功耗。不过,由于对于应用程序开发和工具集而言,GPU计算的技术仍在发展当中,GPU系统就需要尽可能地灵活。

  本文主要介绍戴尔在怎样提高GPU计算的灵活性,以及戴尔为建立GPU系统而开发的基本产品。

  戴尔的总体方案

  我认为,灵活性是戴尔针对GPU计算解决方案采取的总体方案的核心。目的在于,开发灵活的硬件配置,以便各组件可以混合搭配,以满足应用程序和用户的要求,那样需求出现变化时,没必要使用叉车铲掉(换掉)硬件(我们通常称之为“叉车式升级”)。

  戴尔在创建灵活GPU计算解决方案时寻求的一种主要方案就是,把GPU与主机服务器分开来。由于出现了性能优良的PCI-Express(PCIe)网络、PCIe交换芯片(PLX公司是个典例)以及交换产品的低延迟,使用PCIe网络时给性能带来的影响即便有,也是非常小。最近这些业界进展让我们得以使用PCIe交换芯片,把GPU与主机节点分开来,而交换芯片负责两者之间的通信。这种分离立即可以大幅提升灵活性和适应性。

  比如说,你不必改变GPU,立即就可以升级或改动计算节点。比如说,如果英特尔推出了一款新的CPU,要求你升级计算节点,就不必扔掉GPU或者从现有节点取出GPU,试法塞入新的GPU。你还可以购买更多的计算节点,共享计算节点之间的GPU资源(后面介绍了这一步怎么做)。

  你还可以反过来做——如果技术变化了,可以升级、改动或添加GPU,这一切不必改动计算节点。

  也许最重要的好处是,你可以在需要时,添加或改动与每个计算节点相连的GPU的数量。别忘了:GPU应用程序和工具在发展当中,更成熟的应用程序常常每路PCIe x16连接使用不止一个GPU。把GPU与主机节点分开来,意味着应用程序首次编写后,可以为某些计算节点提供每条PCIe x16插槽一个GPU,因为主机和GPU之间的数据传输其实可能会给PCIe总线带来压力。一旦应用程序减小了对PCIe总线的依赖,之后就可以为计算节点提供两个GPU,在该节点上运行两套应用程序(每个CPU上各运行一套)。最后,一旦应用程序在多个GPU上运行,就可以为计算节点提供4个或更多GPU。

  如果采用CPU/GPU相结合的配置(比如内置GPU采用的那种配置),应用程序不断发展时,几乎不可能做到为计算节点添加GPU。如果采用这种配置,GPU数量是固定的;要改变GPU的数量,唯一的办法是购买更多GPU,打开机箱后塞进去(前提是机箱里面有空间,又能满足这些GPU的电源和冷却要求)。但是采用固定的配置,它所能处理的GPU数量也是固定的,就是这样。但如果把主机节点与GPU分开来,我们就能调整分配给特定计算节点的GPU的数量,从而在应用程序运行时,提供最合理的硬件配置。

  主机节点与GPU分开来的另一个优点体现在电力和冷却上。技术团队在设计节点时,大量时间用在了如何设计才能获得非常好的的气流和温度分布。这也意味着,电源系统是针对典型的用电模式而设计的;这几乎总是意味着节点处于负载状态下(拥有闲置的HPC节点其实不再是HPC)。但是如果你要设计里面到底有没有GPU不一定的节点,这意味着你的耗电量、热负载和气流可能具有的值广泛得多。这通常意味着,从电力和冷却的角度来看,节点不够高效。如果把CPU与GPU分开来,可以为主机节点(CPU)和GPU设计出经过优化的电力和冷却系统。

  CPU与GPU分开来具有的最后一个优点是,能够为主机节点和GPU提供冗余电源。GPU有强大的计算能力,但也需要大量电力——通常是每块卡225W。功率最大的实际电源系统约1400W(市面上有一些1600W电源系统,但比较新颖。)典型的2插座主机节点可以使用200W-600W(甚至更高)的电源,那样只留下约800W供GPU使用。这意味着,在不超出单个电源系统最大功耗的情况下,充其量在一个主机节点里面可以使用四个GPU。一旦超过这个值,就没有任何电源冗余性可言。为了重新获得冗余性,就要添加更多个电源系统,这意味着电源方面可能不是最优化,另外需要为电源系统留出更多的空间和更畅通的气流,因而限制了机箱的大小、增加了成本。

  把所有这些硬件塞入到一个节点很困难;你会发现许多制造商在使用内置GPU的主机系统里面没有冗余电源系统,正是由于里面没有空间,或者没有气流。把昂贵的GPU和主机节点组合到一个机箱中,又不使用冗余电源系统,这会严重阻碍性能方面的潜力,那是由于系统可能会出现停机。

  所以,把GPU与主机节点分开来让主机节点得以保留企业级主机节点中很常见的冗余电源系统,又为GPU提供了冗余电源。

  如果你喜欢,可以将GPU与主机节点分开来的优点看作是保护投资。你不想购买这样的系统:当应用程序或工具发展时,要求换掉现有硬件。此外,如果CPU或GPU技术发生变化——总是在变化,你再次面临“叉车式”升级。把GPU与主机节点分开来,可以适应不断变化的应用程序,并保护硬件投入,避免成本非常高昂的叉车式升级。

  那么,戴尔如何做到GPU与CPU分开来?戴尔又有哪些系统让我可以保护GPU方面的投入?

  戴尔系统介绍

  戴尔GPU配置系统(Dell GPU Configurations)旨在大大极高灵活性,同时让用户可以选择主机节点。为此,戴尔设计了PowerEdge C410x PCI-Express 扩展机箱(http://www.dell.com/us/business/p/poweredge-c410x/pd?refid=poweredge-c410x&s=bsd&cs=04&baynote_bnrank=0&baynote_irrank=0&~ck=baynoteSearch)。


▲戴尔PowerEdge C410x

  这是3U高的机箱,最多可容纳16块PCIe G2热交换卡(我们称之为“sled”),每块卡有一个PCIe G2 x16接口。通过机箱上的PCIe x 16连接器,最多可以连接8个外部主机。另外,可以为一个x16连接器最多分配8块热交换卡,允许两个主机每个可以访问8个插槽。

  机箱配备4个1400W热插拔电源系统,提供了N+1的最大冗余性和3600W的总功率。它还有板载BMC(基板管理控制器)、IPMI 2.0功能和一个专用管理端口。

  该机箱里面没有CPU,只有PCIe插槽。我的一个朋友称之为提供给GPU的“食宿”。目前,它支持英伟达M2050和M2070,但并不仅限于GPU,因为C410x有普通的PCIe插槽,另外许多卡也得到支持,包括InfiniBand主机通道适配器(HCA)卡、光纤通道卡及其他PCIe设备。这些卡先插入到“热交换卡”中,然后再插入到机箱中的PCIe G2 x16插槽,如下所示:


▲C410x的热交换卡

  热交换卡插入到机箱,正面10块热交换卡,后面6块,如下面两图所示。


▲戴尔PowerEdge C410x正视图,10块热交换卡


▲戴尔PowerEdge C410x后视图,6块热交换卡

  在后视图中,你能看到机箱左侧的四个电源系统。它们的正下方是八个HIC连接器, 可以把主机节点连接到热交换卡(GPU)。

  最近,戴尔还为C410x开发了“通用卡盒”(Common Carrier)。目的在于使系统相当通用,那样没必要为每一块PCIe卡设计定制的热交换卡。通用卡盒如下所示:


▲戴尔PowerEdge C410x通用卡盒

  热交换卡使用标准全高托架,支持低矮型半高单宽PCI-Express卡。你还能看到热交换卡允许使用外部线缆,那样可以把网卡或视频卡连接到这些卡上。目前,热交换卡可以支持Mellanox Infiniband卡,但更多的卡会得到支持。还有空闲的热交换卡,但最好在使用任何PCIe卡之前先联系戴尔,确保能够得到合理冷却。

  想把主机节点连接到C410x,必须使用主机节点里面的主机接口卡(HIC),就像使用英伟达S1070或S2050系统那样。然后通过PCIe线缆,把主机节点中的一块或多块HIC连接到C410x中的HIC端口。主机节点重启后,它会识别连上去的卡,好像这些卡真正插到主机节点中的插槽那样。

  有许多方案可以将C410x中的GPU连接到主机端口(HIC)。首先能做的是,把8个GPU装入到C410x中,这8个GPU对应与机器后面的每个外出HIC端口。每个外出HIC端口连接到主机节点中的HIC。这样可以为每个PCIe x16插槽分配一个GPU,戴尔称之为1:1。

  第二个明显的方案是把16个GPU装入到C410x,那样8个主机节点上的每个外出HIC端口各自有2个GPU。我们称之为2:1(每个PCIe x16插槽2个GPU)。

  这两种方案很容易配置,因为只要插入含有GPU的热交换卡,并将机箱后面的相应HIC插入到正确的主机节点。可以使用管理工具登录进入到机箱,核实正确的GPU对应于正确的HIC端口。但管理工具还让你有机会做更多的事情。借助这种工具,可以为C410X上的某个特定HIC端口最多分配8个GPU。这意味着,可以为某个特定HIC端口分配1-8个GPU,然后端口连接至主机节点。把6-8个GPU连接到特定HIC端口的功能是一项新功能,要求更新版的C410x机箱。比较旧的机箱只能把4个GPU连接到某个特定HIC端口。

  GPU配置方面的一个常见问题是,从GPU到主机的带宽。要弄清楚这个问题,最好的办法是确定带宽的上下限(即最高性能和最低性能)。C410x中的每个GPU连接到一个PCIe x16插槽(电气和物理插槽)。这意味着即使每个HIC端口多2个GPU,如果没有其他GPU在同时传送数据,每个GPU也能达到x16插槽的最大吞吐量(完全取决于应用程序)。如果所有GPU同时传送大量数据,则性能最低。以每个HIC端口8个GPU为例,只能得到x16带宽的1/8。以4个GPU为例,只能得到x16带宽的1/4。

  我们很少看到这样的情况:应用程序使用多个GPU,每个GPU同时在传送大量数据。因而,应用程序的实际性能介于前面提到的这两个上下限之间。

  为主机节点配置GPU的数量可以通过编写脚本来实现,即为管理工具添加简单的命令,那样你很容易把这部分任务提交给任务调度器。然而,以这种方式配置系统时必须关注两点:

  1、要确保分配给主机节点的GPU没有用于其他主机节点。不然,原本与这些GPU连接的主机节点以为自己遇到了硬件故障(大致说来你从系统上取下GPU)。

  2、GPU数量变化后,你要重启节点,因为有了新的PCIe设备,即GPU;节点需要经过BIOS重启,才能识别硬件。

  这样你还能够适应处于应用开发不同阶段的应用程序和用户的需要。你可能有一个非常成熟的应用程序由几个用户在使用,能够使用多个GPU,每个PCIe x16接口可能使用4-8个GPU。但用户也可能在使用每个PCIe x16插槽只用1个GPU的GPU应用程序。使用C410x,就可以让用户请求每个主机节点所需的GPU数量,资源管理器会为用户创建那些资源,并重启节点。

  显而易见,应用程序和开发工具不断发展时,C410x给你带来了很大的灵活性。这种方案让你可以扩展和调整GPU计算配置;与之形成鲜明对照的是,计算节点在某种配置下,把一些内置GPU简单地组合起来。你只能使用节点提供的那种配置,无法适应不断发展的应用程序和开发工具。

  戴尔还有几种主机节点选择可以连接到C410x,以便应对许多不同的GPU应用场景。主要有三种主机节点可以连接到C410x:

  ·戴尔PowerEdge C6100

  (http://www.dell.com/us/business/p/poweredge-c6100/pd?refid=poweredge-c6100&s=bsd&cs=04&baynote_bnrank=0&baynote_irrank=0&~ck=baynoteSearch)

  ·戴尔PowerEdge C6105

  (http://www.dell.com/us/business/p/poweredge-c6105/pd?refid=poweredge-c6105&s=bsd&cs=04&baynote_bnrank=0&baynote_irrank=0&~ck=baynoteSearch)

  ·戴尔PowerEdge C6145

  (http://www.dell.com/us/business/p/poweredge-c6145/pd?c=us&l=en&s=bsd&cs=04&baynote_bnrank=0&baynote_irrank=0&~ck=baynoteSearch&redirect=1)

  C6100是一款2U机箱,含有四个独立的2插座英特尔至强5600系统,如下所示。


▲戴尔PowerEdge C6100后视图

  C6100中所用的机箱配备双冗余电源系统,可为两块系统板供电。机箱有两种热插拔驱动器配置:(1)24只2.5英寸驱动器;(2)12只3.5英寸驱动器。驱动器在四个系统之间平均分配。

  四个系统每个都是2插座英特尔至强5600系统,配备12个DIMM插槽、2个千兆以太网端口、支持IPMI 2.0的BMC、一个用于RAID控制器或网卡的PCIe x8插槽以及一个PCIe G2 x16插槽。X8插槽用于万兆以太网卡和InfiniBand卡,而PCIe x16插槽用于HIC卡连接到C410x机箱。这让C6100中的每个系统板可以连接到C410x中的1-8个GPU。

  PowerEdge C6105类似C6100,但系统板上使用AMD皓龙4000系列处理器。

  最近发布的PowerEdge C6145也是一款共享基础设施系统,但2U机箱中使用两个4插座AMD皓龙6100节点。


▲戴尔PowerEdge C6145后视图

  该机箱基本上与C6100和C6105是同一款机箱,但配备使用AMD皓龙6100处理器的两个4插座系统。每个系统配备32个DIMM插槽、两个千兆以太网端口、一块PCIe G2 x8夹层卡、三个PCIe G2 x16插槽以及一个PCIe x16 HIC端口(iPASS)。C6145的后视图如下:


▲戴尔PowerEdge C6145后视图,显示了端口。

  左边是两个冗余电源系统,右边是两块系统板(一上一下)。你可以看到单单一块板在底部就有一排外部接口:左边是以太网端口,右边是BMC端口,中间是视频端口,USB端口靠右,最右边是固定的x16 HIC端口。这一排外部接口上方是三个PCIe G2 x16插槽。与x16插槽同一排的最右边是用于PCIe x8夹层卡的插槽,这夹层卡通常是RAID控制器或者网卡(万兆以太网或InfiniBand)。

  C6145机箱拥有与C6100和C6105一样的驱动器选项:(1)正面最多24个2.5英寸驱动器,或(2)最多12只3.5英寸驱动器。驱动器在两块系统板之间均匀分配。

  有了这三个主机节点和C410x,你就能创建许多不同的GPU配置,包括一些很灵活的系统,那样可根据用户任务的需要,为主机节点灵活地分配GPU。

0