使用 HB 和 HC VM 的最佳做法
概觀
H 系列虛擬機器 (VM) 是 Azure 上最新的 HPC 供應專案。 HB 系列 VM 提供 60 核心 AMD EPYC 處理器,已針對具有高記憶體頻寬需求的執行應用程式優化,例如明確的有限元素分析、流暢動態和天氣模型化。 HC 系列 VM 具有 44 核心 Intel Xeon Skylake 處理器,並已針對需要大量 CPU 計算的應用程式進行優化,例如分子動態和隱含有限元素分析。 HB 和 HC VM 有 100 Gb/秒的 EDR InfiniBand,並支援最新的 MPI 類型和版本。 調整 HPC 應用程式指南提供有關如何在 HB 和 HC VM 上調整 HPC 應用程式的詳細資訊。
Azure CycleCloud 支援全新 H 系列 VM,但為了獲得最佳體驗和效能,請遵循此頁面的指導方針和最佳做法。
CentOS 7.6 HPC Marketplace 映射
CentOS 7.6 HPC Marketplace 映射包含所有驅動程式,可啟用 InfiniBand 介面,以及 /opt中安裝之所有常見 MPI 變體的預先編譯版本。 如需影像確切提供的詳細資料,請參閱 此部落格文章。
若要在建立叢集時使用 CentOS 7.6 HPC 映射,請檢查 [進階設定] 參數上的 [自訂映射] 方塊,然後輸入值 OpenLogic:CentOS-HPC:7.6:latest
。
為了支援較舊的 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
取得 pkeys 以搭配 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 ))")
}