緊密耦合的高效能運算 (HPC) 工作負載通常會使用訊息傳遞介面 (MPI),在程序和虛擬機器 (VM) 執行個體之間進行通訊。但如要自行建構經過調整的 VM 映像檔,以達到最佳 MPI 效能,則需要系統專業知識、 Google Cloud 相關知識,以及額外的維護時間。如要快速為 HPC 工作負載設定最佳化環境,請使用 HPC VM 映像檔。
HPC VM 映像檔是以 Rocky Linux 8 為基礎的 VM 映像檔,專為緊耦合 HPC 工作負載最佳化。其中包含預先設定的 Kernel 和網路微調參數,可建立 VM 執行個體,在 Google Cloud上達到最佳 MPI 效能。
如要獲得最佳成效,請在 HPC 最佳化機器系列 (例如 H4D 或 H3 系列) 的機型,或運算最佳化機器系列 (例如 C2 或 C2D) 的機型上,部署 HPC VM 映像檔。這類機器類型專為緊耦合的 HPC 應用程式設計。如要搭配 H4D 使用 RDMA,必須使用 20241125 以上版本的 HPC VM 映像檔。
您可以透過下列選項建立支援 HPC 的 VM 執行個體:
- Google Cloud CLI
- Google Cloud console. 在控制台中,您可以透過 Cloud Marketplace 取得映像檔。
- SchedMD 的 Slurm 工作負載管理工具,預設使用 HPC VM 映像檔。
優點
HPC VM 映像檔具有下列優點:
- 開箱即用的 VM 執行個體,可處理 HPC 工作負載。您不必手動調整效能、管理 VM 執行個體重新啟動,或隨時掌握緊密耦合 HPC 工作負載的最新 Google Cloud 更新。
- 為緊密耦合的工作負載進行網路最佳化。其中包含可縮短小型訊息延遲時間的最佳化功能,有助於大幅依賴點對點和集體通訊的應用程式。如果使用 H4D 系列機器,HPC VM 映像檔會包含必要的 Cloud RDMA 驅動程式。
- 針對 HPC 工作負載進行運算最佳化。其中包含可減少系統抖動的最佳化功能,讓單一節點的高效能更具可預測性。
- 一致且可重現的效能。VM 映像檔標準化可提供一致且可重現的應用程式層級效能。
- 提升應用程式相容性。與Intel HPC 平台規格的節點層級需求保持一致,可確保系統之間的高度互通性。
HPC VM 映像檔功能
HPC VM 映像檔提供多項功能,可針對高效能運算 (HPC) 工作負載最佳化效能:
- 已停用自動更新
- Intel MPI 集體調整
- 預先安裝的 RPM
已停用自動更新
自動更新可能會對 HPC 工作負載的效能造成負面影響。使用 HPC VM 映像檔時,您可以在建立 VM 執行個體時,將 google_disable_automatic_updates
中繼資料項目設為 TRUE
,停用自動更新。在建立執行個體期間設定這項中繼資料項目的方式,取決於您用來建立執行個體的工具。
舉例來說,使用 gcloud compute instances create
指令建立 VM 執行個體時,請提供 --metadata
引數。詳情請參閱「關於 VM 中繼資料」。
Intel MPI 程式庫
Google 建議您使用 Intel MPI 2021 程式庫,在 Google Cloud上執行 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
- 「開發工具」套件群組
快速入門導覽課程
這些教學課程說明如何設定經過 HPC 最佳化的 VM 執行個體。這些程序說明如何:
- 建立 HPC VM 執行個體 (不設定 Cloud RDMA)
- 建立 HPC VM 執行個體時,指定密集配置政策
- 建立使用 Cloud RDMA 的 HPC VM 執行個體 (搶先版)
您無法將 Cloud RDMA 新增至現有的 HPC VM 執行個體,因此建立執行個體時,請按照適當步驟操作。
事前準備
- 如要在本快速入門中使用 Google Cloud CLI,請先安裝並初始化 Google Cloud CLI:
- 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立專案。Google Cloud
建立 HPC VM 執行個體
強烈建議您從下列機器系列中選擇機器類型:
這類 VM 具有固定的虛擬至實體核心對應,並向客體 OS 公開 NUMA 儲存格架構,這兩者對於緊密耦合 HPC 應用程式的效能至關重要。
主控台
前往 Google Cloud 控制台的 HPC VM Cloud Marketplace 頁面。前往 HPC VM Cloud Marketplace 頁面
按一下「開始使用」。
在 HPC VM 部署作業頁面中,輸入「Deployment name」(部署作業名稱)。這個名稱會成為 VM 名稱的根。Compute Engine 在為執行個體命名時,會在這個名稱後方加上
-vm
。選擇「Zone」(區域) 和「Machine type」(機器類型)。在本快速入門導覽課程中,您可以保留所有預設設定,或視需要進行變更。
保留「開機磁碟類型」、「開機磁碟大小」和「網路介面」的預設設定。
按一下 [Deploy] (部署)。
VM 執行個體建立完成後,Cloud Deployment Manager 會開啟,您可以在當中管理 HPC VM 和其他部署作業。
gcloud
使用 instances create
指令建立 HPC VM。
如果您要建立多個相互連結的 HPC VM 執行個體,請使用密集放置政策建立 HPC VM,以縮短網路延遲時間。
如要建立不含放置策略的 HPC VM 執行個體,請使用類似下列的指令:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --image-family=IMAGE_FAMILY \ --image-project=cloud-hpc-image-public \ --maintenance-policy=TERMINATE \ --machine-type=MACHINE_TYPE
更改下列內容:
INSTANCE_NAME
:HPC VM 執行個體的名稱。ZONE
:要在其中建立執行個體的區域。IMAGE_FAMILY
:建立 VM 執行個體時要使用的映像檔映像檔系列。使用hpc-rocky-linux-8
取得以最新 Rocky Linux 8 為基礎的映像檔。MACHINE_TYPE
:建立 VM 執行個體時使用的機器類型。
經過一段時間後,VM 執行個體就會建立完成。如要驗證執行個體設定並查看狀態,請執行下列指令:
gcloud compute instances describe INSTANCE_NAME
使用密集配置政策建立 HPC VM 執行個體
您可以建立密集配置政策,縮短 VM 執行個體之間的延遲時間。密集配置方式政策可確保同一可用區中的執行個體彼此相近。
如果需要的 VM 執行個體數量超過單一密集配置政策的容納量,請將執行個體劃分為多項配置政策。使用最少數量的配置方式政策,以容納所有執行個體。
如要建立指定密集配置政策的 HPC VM 執行個體,請按照下列步驟操作:
執行下列其中一個步驟:
-
如要建立指定緊密放置政策的執行個體,請使用
--maintenance-policy
和--resource-policies
旗標搭配gcloud compute instances create
指令。
建立使用 Cloud RDMA 的 HPC VM 執行個體
如要建立使用 Cloud RDMA 的 HPC VM 執行個體,您必須先建立至少一個一般 VPC 網路和一個 Falcon VPC 網路。Falcon VPC 網路使用 RDMA 網路設定檔,可在運算執行個體之間啟用 RDMA 流量。這個網路與一般虛擬私有雲網路不同,後者會將非 RDMA 流量傳輸至其他Google Cloud 服務或網際網路。
如要建立使用 Cloud RDMA 的 HPC VM 執行個體,請完成下列工作:
找出或建立至少兩個虛擬私有雲網路:
- 用於透過 gVNIC 網路介面傳輸流量的一般 VPC 網路
- 用於 RDMA 流量的 Falcon 虛擬私有雲網路
建立 HPC VM 執行個體。
- 來源映像檔請使用 HPC VM 映像檔。這個映像檔包含 Cloud RDMA 所需的驅動程式。
建立執行個體時,請設定至少兩個網路介面,一個使用 gVNIC 驅動程式,另一個使用 IRDMA 驅動程式。
如需更完整的說明,請參閱「建立使用 Cloud RDMA 的執行個體」。
如果您打算在採用 Cloud RDMA 的 HPC VM 執行個體上執行 MPI 應用程式,請按照「在採用 Cloud RDMA 的 H4D VM 上設定及擴充 MPI 應用程式」一文中的 MPI 設定步驟操作。
存取 HPC VM 執行個體
建立 HPC VM 執行個體後,系統會自動啟動該執行個體。如要存取執行個體,請執行下列任一操作:
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下 VM 執行個體的名稱。
在「Remote Access」(遠端存取) 部分中,按一下第一個下拉式清單,並選擇存取該執行個體的方式。
Compute Engine 會傳播您的 SSH 金鑰,並建立您的使用者。詳情請參閱「連線至 Linux VM」。
gcloud
如要使用 SSH 存取執行個體,請使用 gcloud compute ssh
指令:
gcloud compute ssh INSTANCE_NAME
Compute Engine 會傳播您的 SSH 金鑰,並建立您的使用者。詳情請參閱「連線至執行個體」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取這些快速入門導覽課程所用資源的費用,請刪除您建立的所有 HPC VM 執行個體。
主控台
前往 Google Cloud 控制台的「Deployments」(部署作業) 頁面。
找出您要清除的 HPC VM 部署項目,然後勾選旁邊的核取方塊。
點選「刪除」。
gcloud
gcloud compute instances delete INSTANCE_NAME
根據最佳做法設定 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
詳情請參閱「設定每個核心的執行緒數量」。
將 C2 和 C2D 執行個體的網路介面類型設為 gVNIC
HPC VM 映像檔支援 Virtio-net 和 Google Virtual NIC (gVNIC) 做為虛擬網路介面。使用 gVNIC 取代 Virtio-net,可提供更優異的通訊效能和更高的輸送量,進而提升 MPI 應用程式的可擴充性。此外,gVNIC 是各 VM 的 Tier_1 網路效能的必要條件,可提供更高的頻寬和處理量。
如果您建立新的 C2 或 C2D 執行個體,系統預設會將 Virtio-net 用於虛擬網路介面。如要使用 gVNIC,請按照步驟建立 HPC VM,然後執行下列其中一項操作:
主控台
如要將 gVNIC 設為網路介面,請在建立執行個體時,按一下導覽選單中的「網路」。在隨即顯示的「Networking」(網路) 窗格中,執行下列操作:
- 前往「網路介面」部分
- 在「網路介面卡」中選取
gVNIC
。
gcloud
在 gcloud compute instances create
指令中加入 --network-interface=nic-type=GVNIC
旗標。
HPC VM 映像檔包含 gVNIC 驅動程式,屬於動態核心模組支援 (DKMS)。詳情請參閱「使用 Google Virtual NIC」。
關閉 Meltdown 和 Spectre 的因應措施
HPC VM 映像檔預設會啟用 Meltdown 和 Spectre 緩解措施。在某些情況下,這些緩解措施可能會導致特定工作負載的效能下降。如要停用這些緩解措施並承擔相關安全風險,請執行下列操作:
在 HPC 執行個體上執行下列指令:
sudo google_mpi_tuning --nomitigation
重新啟動執行個體。
提升網路效能
如要提升執行個體的網路效能,請設定下列一或多項設定:
設定較高頻寬。如要為 C2 或 C2D VM 設定 Tier_1 網路,請使用
gcloud compute instances create
指令建立 VM,並指定--network-performance-configs
旗標。詳情請參閱「建立具有高頻寬設定的 VM」。使用巨型封包。為盡量減少網路封包的處理負擔,建議您使用較大的封包大小。您需要針對應用程式的具體情況,驗證較大的封包大小。如要瞭解巨型封包和封包大小的使用方式,請參閱最大傳輸單位指南。
提高 TCP 記憶體上限。頻寬越高,所需的 TCP 記憶體就越大。按照步驟提高
tcp_*mem
設定。使用網路延遲設定檔。評估應用程式的延遲時間,並啟用忙碌輪詢,減少網路接收路徑的延遲時間。在
/etc/sysctl.conf
中調整net.core.busy_poll
和net.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
公用程式支援 Intel MPI 2021
google_install_intelmpi
指令碼是 Google-hpc-compute
公用程式中的 MPI 相關工具。可協助安裝及設定 Intel MPI。
HPC VM 映像檔中包含 google-hpc-compute
公用程式。
安裝 Intel MPI 2021
如要在建立新的 HPC VM 時安裝 Intel MPI 程式庫,請按照建立 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
。
Intel MPI 程式庫 2018 和 MPI 集體調校
HPC VM 映像檔包含在 c2-standard-60
和 c2d-standard-112
執行個體上,使用密集配置政策執行的 Intel MPI 集體調校。這些調音設定位於 /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018
目錄。
如要在已安裝的 MPI 程式庫上套用這些調整設定,請為 mpivars
殼層指令碼提供來源,以設定適當的環境。然後,您可以使用下列指令直接安裝調整項目 (如果需要目錄的根存取權,請使用 --sudo
選項):google_install_mpitune
您可以使用 mpitune
手動指定 MPI 集體通訊的演算法和設定參數,並產生設定檔。
舉例來說,如要針對 22 個 VM 執行個體和每個執行個體 30 個 vCPU 進行調整,請取得 mpivars
殼層指令碼的來源,設定適當的環境,然後執行下列指令。您必須具備 write
目錄的存取權,或以超級使用者的身分執行指令。
mpitune -hf hostfile -fl 'shm:tcp' -pr 30:30 -hr 22:22
這個指令會在 Intel MPI 目錄中產生設定檔,稍後可用於執行應用程式。如要為應用程式使用微調設定,請將 -tune
選項新增至 mpirun
指令列,例如:
mpirun -tune -hostfile HOSTFILE -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./APPLICATION_NAME
更改下列內容:
- HOSTFILE:訪客 OS 中列出 VM 執行個體網路名稱的檔案名稱
- APPLICATION_NAME:要執行的應用程式檔案名稱
使用 HPC VM 映像檔建立自訂映像檔
如要大規模實作最佳做法,請建立自訂 OS 映像檔,以便搭配 HPC VM 執行個體使用。請完成下列工作,建立自訂映像檔,以便在建立 HPC VM 執行個體時使用:
使用 HPC VM 映像檔的開機磁碟做為來源磁碟,建立自訂映像檔。您可以使用 Google Cloud 控制台或 Google Cloud CLI 執行這項操作。
主控台
前往 Google Cloud 控制台的「Images」頁面。
按一下「建立映像檔」。
指定映像檔的「Name」(名稱)。
在「來源磁碟」下方,選取 HPC VM 的開機磁碟名稱。
選擇圖片的其他剩餘屬性。
點選「建立」。
gcloud
使用 images create
指令建立自訂映像檔。
gcloud compute images create IMAGE_NAME \ --source-disk=INSTANCE_NAME \ --source-disk-zone=VM_ZONE \ --family=IMAGE_FAMILY \ --storage-location=LOCATION
更改下列內容:
IMAGE_NAME
:自訂映像檔的名稱。INSTANCE_NAME
:HPC VM 的名稱。INSTANCE_ZONE
:HPC VM 所在的可用區。IMAGE_FAMILY
:選用。此映像檔所屬的映像檔系列。LOCATION
:選用。儲存自訂圖片的區域。預設位置是離來源磁碟位置最近的多區域。
定價
HPC VM 映像檔免費提供,由於 HPC VM 映像檔是在 Compute Engine 上執行,因此您可能需要支付 vCPU、磁碟和記憶體等 Compute Engine 資源的費用。詳情請參閱 Compute Engine 定價。
後續步驟
- 查看執行 HPC 工作負載的最佳做法。
- 瞭解如何在Google Cloud上,透過 Cloud RDMA 在 H4D VM 上設定及擴充 MPI 應用程式。
- 進一步瞭解運算最佳化機器家族。
- 瞭解如何建立 HPC 叢集。
- 如有意見回饋或需要支援,請傳送電子郵件至 hpc-image-feedback@google.com。