热交换卡使用标准全高托架,支持低矮型半高单宽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简单地组合起来。你只能使用节点提供的那种配置,无法适应不断发展的应用程序和开发工具。