建立支援 HPC 的 VM 執行個體


簡介

緊密結合的高效能運算 (HPC) 工作負載通常會使用訊息傳遞介面 (MPI),在程序和虛擬機器 (VM) 執行個體之間進行通訊。不過,您必須具備系統專業知識 Google Cloud ,才能自行建立 VM 映像檔,並且需要額外花費時間進行維護,才能讓 MPI 效能達到最佳狀態。如要為 HPC 工作負載快速建立 VM 執行個體,您可以使用 HPC VM 映像檔。或者,您也可以使用 H3 機器系列建立 VM。

HPC VM 映像檔是採用 CentOS 7.9 或 Rocky Linux 8 的 VM 映像檔,已針對緊密耦合的 HPC 工作負載進行最佳化調整。其中包含預先設定的核心和網路調整參數,可用於建立 VM 執行個體,在 Google Cloud上達到最佳 MPI 效能。

您可以使用下列選項建立支援 HPC 的 VM:

優點

HPC VM 映像檔可提供下列優點:

  1. VM 可立即使用 HPC 功能。您無須手動調整效能、管理 VM 重新啟動作業,也不必隨時掌握與緊密連結 HPC 工作負載相關的最新Google Cloud 更新。
  2. 針對緊密結合的工作負載進行網路最佳化。這項更新包含可減少小型訊息延遲時間的最佳化功能,可為大量仰賴點對點和集體通訊的應用程式帶來好處。
  3. HPC 工作負載的運算最佳化。這項功能包含可減少系統抖動率的最佳化功能,可讓單一節點的高效能更容易預測。
  4. 一致且可重現的效能。透過 VM 映像檔標準化,您就能獲得一致且可重現的應用程式層級效能。
  5. 改善應用程式相容性。與 Intel HPC 平台規格的節點層級需求保持一致,可讓系統之間的互通性達到極高程度。

功能

停用自動更新

自動更新可能會對 HPC 應用程式的效能造成負面影響。使用 HPC VM 映像檔時,您可以在建立 VM 時將 google_disable_automatic_updates 中繼資料項目設為 TRUE,藉此停用自動更新功能。在建立 VM 時如何設定中繼資料,取決於您用來建立 VM 的工具。

舉例來說,如果您使用 gcloud compute instances create 指令建立 VM,請提供 --metadata 引數。詳情請參閱「關於 VM 中繼資料」。

Intel MPI 集體調整

HPC VM 映像檔包含使用密集配置政策c2-standard-60c2d-standard-112 執行個體上執行的 Intel MPI 集體調校

預先安裝的 RPM

HPC VM 映像檔已預先安裝下列 RPM 套件:

  • daos-client
  • gcc-gfortran
  • gcc-toolset-12
  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • infiniband-diags
  • kernel-devel
  • kmod-idpf-irdma
  • libfabric
  • librdmacm-utils
  • libibverbs-utils
  • libXt
  • ltrace
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • perftest
  • rdma-core
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • 「Development Tools」套件群組

快速入門導覽課程

事前準備

  1. 如要使用 Google Cloud CLI 進行本快速入門,您必須先安裝並初始化 Google Cloud CLI
  2. 在 Google Cloud 控制台的專案選取器頁面中,選取或建立Google Cloud 專案。

建立 HPC VM 執行個體

建立 VM

強烈建議您選擇運算最佳化機器類型,例如 C2C2DH3。這些 VM 具有固定的虛擬至實體核心對應,並將 NUMA 單元架構公開給來賓作業系統,這兩項功能對於緊密連結的高效能運算應用程式而言至關重要。

主控台

  1. 在 Google Cloud 控制台中,前往 HPC VM Cloud Marketplace 頁面。前往 HPC VM Cloud Marketplace 頁面

  2. 按一下「啟動」

  3. 在 HPC VM 部署作業頁面中,輸入「Deployment name」(部署作業名稱)。這個名稱會成為 VM 名稱的根。Compute Engine 在為執行個體命名時,會在這個名稱後方加上 -vm

  4. 選擇「Zone」「Machine type」。在本快速入門導覽課程中,您可以保留所有預設設定,或視需要進行變更。強烈建議您選擇運算最佳化機器類型,例如 C2C2DH3

  5. 請保留「Boot disk type」、「Boot disk size」和「Network interface」的預設設定。

  6. 按一下「部署」

建立 VM 執行個體後,系統會開啟 Cloud Deployment Manager,您可以在其中管理 HPC VM 和其他部署作業。

gcloud

使用 instances create 指令建立 HPC VM。強烈建議您使用密集配置政策建立 HPC VM,以便縮短網路延遲時間。如果您需要的 VM 數量超過單一密集配置政策可容納的數量,請將 VM 分割成多個配置政策。建議您使用最少的放置政策數量,以符合您的 VM 需求。

gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=cloud-hpc-image-public \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

更改下列內容:

  • VM_NAME:要建立的 HPC VM 名稱。
  • ZONE:建立 VM 的區域
  • IMAGE_FAMILY:要用來建立 VM 執行個體的映像檔系列。請針對以 CentOS 為基礎的映像檔使用 hpc-centos-7,針對以 Rocky Linux 8 為基礎的映像檔使用 hpc-rocky-linux-8
  • MACHINE_TYPE:新 VM 的機器類型

經過一段時間後,VM 執行個體建立作業就會完成。如要驗證 VM 並查看其狀態,請執行下列指令:

gcloud compute instances describe VM_NAME

存取 VM

主控台

HPC VM 執行個體在建立完成後會自動啟動。如要存取這項功能,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下 VM 執行個體的名稱。

  3. 在「Remote Access」部分中,按一下第一個下拉式清單,然後選擇存取該執行個體的方式。

Compute Engine 會傳播您的 SSH 金鑰,並建立您的使用者。詳情請參閱「連線至 Linux VM」。

gcloud

HPC VM 執行個體在建立完成後會自動啟動。如要透過 SSH 存取該執行個體,請使用 compute ssh 指令

gcloud compute ssh VM_NAME

Compute Engine 會傳播您的 SSH 金鑰,並建立您的使用者。詳情請參閱「連線至執行個體」。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取您在本快速入門中所用資源的費用,請刪除您建立的 HPC VM 執行個體。

主控台

  1. 前往 Google Cloud 控制台的「Deployments」頁面。

    前往「Deployments」

  2. 勾選 HPC VM 部署項目旁的核取方塊。

  3. 點選「刪除」。

gcloud

使用 instances delete 指令

gcloud compute instances delete VM_NAME

使用密集配置政策建立 HPC VM

您可以建立密集配置方式政策,減少 VM 之間的延遲時間。密集配置政策可確保同一個可用性區域中的 VM 彼此相近。

如要建立指定緊密放置政策的 HPC VM,請按照下列步驟操作:

  1. 建立密集配置政策

  2. 執行下列其中一個步驟:

根據最佳做法設定 HPC VM

為讓 HPC VM 發揮更佳且更可預測的效能,建議您採用下列最佳做法。

停用多執行緒並行功能

HPC VM 映像檔預設會啟用多執行緒並行 (SMT),也稱為 Intel 處理器上的超執行緒。停用 SMT 可讓您更容易預測效能,並縮短工作時間。

您可以使用下列方法停用 SMT:

  • 如要在建立新的 HPC VM 時停用 SMT,請按照建立 HPC VM 的步驟操作,並加入 --threads-per-core=1 旗標。

  • 如要在現有的 HPC VM 上停用 SMT,請連線至 VM,然後在 VM 中執行下列指令:

    sudo google_mpi_tuning --nosmt
    

詳情請參閱「設定每個核心的執行緒數量」。

使用 gVNIC 做為虛擬網路介面

HPC VM 映像檔支援 Virtio-net 和 Google Virtual NIC (gVNIC) 做為虛擬網路介面。使用 gVNIC 而非 Virtio-net,可提供更佳的通訊效能和更高的傳輸量,進而提升 MPI 應用程式的可擴充性。此外,gVNIC 是進階網路的必要條件,可提供更高的頻寬和處理量。

建立新的 VM 時,系統會預設使用 Virtio-net 做為虛擬網路介面。如要使用 gVNIC,請按照建立 HPC VM 的步驟操作,並加入 --network-interface=nic-type=GVNIC 旗標。HPC VM 映像檔會將 gVNIC 驅動程式納入動態核心模組支援 (DKMS)。詳情請參閱「使用 Google 虛擬網路介面卡」一文。

關閉 Meltdown 和 Spectre 因應措施

HPC VM 映像檔預設會啟用 Meltdown 和 Spectre 緩解措施。在某些情況下,這些因應措施可能會導致工作負載的效能降低。如要停用這些緩解措施並產生相關安全風險,請執行下列操作:

  1. 在 HPC VM 上執行下列指令:

    sudo google_mpi_tuning --nomitigation
    
  2. 重新啟動 VM。

改善網路效能

如要改善 VM 的網路效能,請設定下列一或多個設定:

  • 設定較高的頻寬。如要設定各 VM 的 Tier_1 網路效能,請使用 gcloud compute instances create 指令建立 VM,並指定 --network-performance-configs 旗標。詳情請參閱「建立高頻寬設定的 VM」。

  • 使用巨型封包。為盡量減少網路封包的處理負擔,建議您使用較大的封包大小。您需要驗證較大的封包大小,以便針對應用程式的具體需求進行調整。如要瞭解如何使用巨型封包和封包大小,請參閱最大傳輸單位指南

  • 提高 TCP 記憶體限制。頻寬越高,所需的 TCP 記憶體就越大。按照增加 tcp_*mem 設定的步驟操作。

  • 使用網路延遲設定檔。評估應用程式的延遲時間,並啟用忙碌輪詢功能,以減少網路接收路徑的延遲時間。調整 /etc/sysctl.conf 中的 net.core.busy_pollnet.core.busy_read 設定,或使用 tuned-adm

使用 Intel MPI 2021

Google 建議使用 Intel MPI 2021 程式庫,在 Google Cloud上執行 MPI 工作。

MPI 實作有許多可能影響通訊效能的內部設定參數。這些參數特別適用於 MPI Collective 通訊,可讓您指定演算法和設定參數,在 Google Cloud 環境中執行的效果可能截然不同。

HPC VM 映像檔包含公用程式 Google-hpc-compute,可方便安裝建議的 MPI 程式庫,並透過 TCP 傳輸使用 Google Cloud 量身打造的 libfabric 供應器。

使用 google-hpc-compute 公用程式支援 IntelMPI 2021

google_install_intelmpi 指令碼是 Google-hpc-compute 公用程式中的 MPI 相關工具。可協助安裝及設定 IntelMPI。

Google-hpc-compute 公用程式已納入 HPC VM 映像檔。

安裝 IntelMPI 2021

如要在建立新的 HPC VM 時安裝 IntelMPI 程式庫,請按照建立 HPC VM 的步驟操作,並在建立 VM 執行個體時加入下列項目:

--metadata=google_install_intelmpi="--impi_2021"

如要在現有的 HPC VM 上安裝程式庫,請在該 VM 上執行下列指令:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

install_dir 的預設位置設為 /opt/intel

HPC CentOS 7 映像檔中的 Intel MPI 2018

Google Cloud上的 HPC CentOS 7 映像檔支援 Intel MPI 2018。詳情請參閱 google_install_mpi 的實用工具使用者指南。

如要使用 Intel MPI 2018 的其他用途,例如執行以 Intel Parallel Studio XE 建構的 MPI 應用程式,請使用完整的 Intel Parallel Studio XE (PSXE) 執行階段,方法是在上述指令中將 intel_mpi 替換為 intel_psxe_runtime。PSXE 執行階段包含幾個執行 MPI 應用程式的重要程式庫,例如 Intel Math Kernel Library (MKL)。

使用 HPC VM 映像檔建立自訂映像檔

  1. 建立使用 HPC VM 映像檔的自訂 VM

  2. 使用 MPI 調整自訂 VM

  3. 使用 HPC VM 映像檔的開機磁碟做為來源磁碟,建立自訂映像檔。您可以使用 Google Cloud 控制台Google Cloud CLI 執行這項操作。

主控台

  1. 前往 Google Cloud 控制台的「Images」頁面。

    前往「圖片」

  2. 按一下「建立映像檔」

  3. 指定映像檔的「Name」(名稱)

  4. 在「Source disk」下方,選取 HPC VM 上的開機磁碟名稱。

  5. 選擇圖片的其他屬性。

  6. 按一下 [建立]。

gcloud

使用 images create 指令建立自訂映像檔。

gcloud compute images create IMAGE_NAME \
         --source-disk=VM_NAME \
         --source-disk-zone=VM_ZONE \
         --family=IMAGE_FAMILY \
         --storage-location=LOCATION

更改下列內容:

  • IMAGE_NAME:自訂圖片的名稱。
  • VM_NAME:HPC VM 的名稱。
  • INSTANCE_ZONE:HPC VM 所在的可用區。
  • IMAGE_FAMILY:選用。此映像檔所屬的映像檔系列
  • LOCATION:選用。用於儲存自訂圖片的區域。預設位置是離來源磁碟位置最近的多區域位置。

定價

您可以免費使用 HPC VM 映像檔。由於 HPC VM 映像檔是在 Compute Engine 上執行,因此您可能會產生 C2 vCPU 和記憶體等 Compute Engine 資源費用。詳情請參閱 Compute Engine 定價

限制

調整的優點會因應用程式而異。在某些情況下,特定調整可能會對效能造成負面影響。建議您對應用程式進行基準測試,找出最有效率或最符合成本效益的設定。

後續步驟