你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 HB 和 HC VM 的最佳做法

概述

H 系列虚拟机 (VM) 是 Azure 上的最新 HPC 产品/服务。 HB 系列 VM 提供 60 核 AMD EPYC 处理器,针对运行具有高内存带宽要求的应用程序进行了优化,例如显式有限元素分析、流体动力学和天气建模。 HC 系列 VM 具有 44 核 Intel Xeon Skylake 处理器,并且针对需要大量 CPU 计算的应用程序进行了优化,例如分子动力学和隐式有限元素分析。 HB 和 HC VM 具有 100 Gb/s EDR InfiniBand,并支持最新的 MPI 类型和版本。 缩放 HPC 应用程序指南详细介绍了如何在 HB 和 HC VM 上缩放 HPC 应用程序。

Azure CycleCloud 现身支持新的 H 系列 VM,但为了获得最佳体验和性能,请遵循此页上的准则和最佳做法。

CentOS 7.6 HPC 市场映像

CentOS 7.6 HPC 市场映像包含所有驱动程序,用于启用 InfiniBand 接口以及 /opt 中安装的所有常见 MPI 变体的预编译版本。 有关图像必须提供的内容的详细信息,请参阅 此博客文章

若要在创建群集时使用 CentOS 7.6 HPC 映像,请在“高级设置”参数上选中“自定义映像”框并输入该值OpenLogic:CentOS-HPC:7.6:latest

CentOS HPC 映像

为了支持较旧的 H16r VM 系列,并保持群集头节点锁定到同一版本的 CentOS,基础 OS 下拉列表中的默认“Cycle CentOS 7”映像部署 CentOS 7.4。 尽管对于大多数 VM 系列而言,HB/HC VM 需要 CentOS 7.6 或更高版本和不同的 Mellanox 驱动程序,但情况很好。

在 CycleCloud < 7.7.4 中禁用 SElinux

默认情况下,SElinux 仅将 /root/home 视为主目录的有效路径。 在这些路径之外具有主目录的任何用户都会导致 SElinux 阻止 SSH 使用用户主目录中的任何 SSH 密钥对。 在 CycleCloud 群集中,用户主目录是在 /shared/home 中创建的。 虽然 CycleCloud 版本早于 7.7.4 自动将 /shared/home 路径设置为有效的 SElinux homedir 上下文,但旧版本不支持此功能。 若要确保 SSH 适用于群集上的用户,需要在群集模板中禁用 SElinux:

[[node defaults]]
    [[[configuration]]]
    cyclecloud.selinux.policy = permissive

使用 Slurm 运行 MPI 作业

在 HB/HC VM 上运行的 MPI 作业需要在同一 VM 规模集 (VMSS) 中运行。 若要确保为使用 Slurm 运行的 MPI 作业正确自动缩放放置 VM,请确保在群集模板中设置以下属性:

[[nodearray execute]]
Azure.SingleScaleset = true
Azure.MaxScalesetSize = 300
Azure.Overprovision = true

获取用于 OpenMPI 和 MPICH 的密钥

某些 MPI 变体要求在运行作业时指定 InfiniBand PKEY。 以下 Bash 函数可用于确定 PKEY:

get_ib_pkey()
{
    key0=$(cat /sys/class/infiniband/mlx5_0/ports/1/pkeys/0)
    key1=$(cat /sys/class/infiniband/mlx5_0/ports/1/pkeys/1)

    if [ $(($key0 - $key1)) -gt 0 ]; then
        export IB_PKEY=$key0
    else
        export IB_PKEY=$key1
    fi

    export UCX_IB_PKEY=$(printf '0x%04x' "$(( $IB_PKEY & 0x0FFF ))")
}