当您有多个 GPU 并且您希望您的作业请求 GPU 但 Grid Engine 调度程序应处理并选择空闲GPU 时,您可以配置 RSMAP(资源映射)复合体(而不是 INT)。这允许您在主机配置中指定特定主机上的 GPU 数量和名称。您还可以将其设置为主机消耗品,以便独立于您请求的插槽,使用 -l cuda=2 请求的 GPU 设备数量适用于每个主机 2(即使并行作业在不同主机上获得了 8 个插槽) )。
qconf -mc
#name shortcut type relop requestable consumable default urgency
#----------------------------------------------------------------------------------------------
gpu gpu RSMAP <= YES HOST 0 0
在执行主机配置中,您可以使用 ids/names(这里只是 GPU1 和 GPU2)初始化您的资源。
qconf -me yourhost
hostname yourhost
load_scaling NONE
complex_values gpu=2(GPU1 GPU2)
然后,当请求 -l gpu=1 时,如果 GPU1 已被其他作业使用,Univa Grid Engine 调度程序将选择 GPU2。您可以在 qstat -j 输出中看到实际选择。该作业通过读取 $SGE_HGR_gpu 环境变量来获取选定的 GPU,在这种情况下,该变量包含选择的 ID/名称“GPU2”。这可用于访问正确的 GPU 而不会发生冲突。
如果您有一个多插槽主机,您甚至可以将 GPU 直接连接到 GPU 附近(靠近 PCIe 总线)的一些 CPU 内核,以加快 GPU 和 CPU 之间的通信。这可以通过在执行主机配置中附加拓扑掩码来实现。
qconf -me yourhost
hostname yourhost
load_scaling NONE
complex_values gpu=2(GPU1:SCCCCScccc GPU2:SccccSCCCC)
现在,当 UGE 调度程序选择 GPU2 时,它会自动将作业绑定到第二个插槽 (S) 的所有 4 个核心 (C),因此不允许作业在第一个插槽上运行。这甚至不需要 -binding qsub 参数。
您可以在www.gridengine.eu上找到更多配置示例。
请注意,所有这些功能仅在 Univa Grid Engine(8.1.0/8.1.3 及更高版本)中可用,而在 SGE 6.2u5 和其他 Grid Engine 版本(如 OGE、Sun of Grid Engine 等)中不可用。您可以通过从 univa.com 下载 48 核有限免费版本来试用它。