练习 - 为 HPC SKU 查找正确的 NUMA 映射
其中一个研发团队的紧密耦合 HPC 应用程序使用混合平行(MPI+线程)来提高性能。 团队已经确定 HB120_v2 是最适合该应用程序的 SKU,他们还需要确定固定进程和线程的最佳位置。
在以下练习中,你将按照你的研发团队所用的步骤确定 HB120_v2 NUMA 拓扑,发现哪些 CPU ID 对应于哪些 NUMA 域。
注意
本练习为选做练习。 若要完成本练习,需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户,或者现在不想创建帐户,则可以通读说明,以便了解所提供的信息。
在安装了 Azure CLI 的位置打开命令提示符。
登录 Azure 帐户。 此步骤可确保你拥有部署资源的权限。
az login
创建资源组。 将 HB120_v2 VM 部署到此资源组中。 将 RESOURCE-GROUP_NAME 替换为所选的唯一名称,将 LOCATION 替换为附近的位置(例如,eastus)。
az group create \ --name <RESOURCE-GROUP_NAME> \ --location <LOCATION>
通过 Azure 市场创建使用 CentOS-HPC 7.8 映像的 HB120_v2 VM。 将 RESOURCE-GROUP_NAME 替换为在上一步中创建的资源组,并将 VM-NAME 替换为所选的唯一名称。
az vm create \ --resource-group <RESOURCE-GROUP-NAME> \ --name <VM-NAME> \ --admin-username azureuser \ --generate-ssh-keys \ --image OpenLogic:CentOS-HPC:7_8:latest \ --size Standard_HB120rs_v2
完成此命令可能需要一段时间。 创建 VM 后,请记下 VM 的 publicIpAddress,这将是 JSON 输出的一部分。 后面的步骤将使用此 IP 地址。
使用自动生成的 ssh 密钥登录到你的 HB120_v2 VM。
ssh azureuser@<VM-PUBLIC-IP-ADDRESS>
安装 lstopo-no-graphics(从 hwloc rpm)。
sudo yum install -y hwloc
运行 lstopo-no-graphics,确定 NUMA 拓扑。
lstopo-no-graphics 2>&1 | tee lstopo-no-graphics.out
记下内核 ID 以及它们所属的 NUMA 域节点。
将 HB120v2 内核 ID 映射到以下 30 个 NUMA 域:0-3、4-7、8-11、12-15、16-19、20-23、24-27、28-31、32-35、36-39、40-43、44-47、48-51、52-55、56-59、60-63、64-67、68-71、72-75、76-79、80-83、84-87、88-91、92-95、96-99、100-103、104-107、108-111、112-115 和 116-119。
有了这类 NUMA 映射信息,现在就能知道固定进程和线程的位置。 每个进程都应映射到其自己的 NUMA 域。 仅对于 MPI 进程,尝试为每个 NUMA 域运行 1、2、3 或 4 个进程。 查看哪个映射可以提供最佳性能(例如:较少的时钟时间)。 对于混合并行应用程序,请在同一 NUMA 域中对进程及其线程进行分组。 下一个 MPI 单元显示用于将进程固定到 NUMA 域的 MPI 命令行参数。