建立支援 HPC 的 VM 執行個體

您可以使用下列介面建立適用於 HPC 的 VM 執行個體:

如要瞭解 HPC VM 映像檔和 Advanced Compute Images,請參閱「HPC 就緒 VM 映像檔總覽」和「Advanced Compute Images 總覽」。

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。

快速入門導覽課程

這些教學課程說明如何設定經過 HPC 最佳化的 VM 執行個體。這些程序說明如何:

  • 建立 HPC VM 執行個體 (不設定 Cloud RDMA)
  • 建立 HPC VM 執行個體時指定密集配置政策
  • 建立使用 Cloud RDMA 的 HPC VM 執行個體

您無法將 Cloud RDMA 新增至現有的 HPC VM 執行個體,因此建立執行個體時,請按照適當步驟操作。

事前準備

  1. 如要在本快速入門導覽課程中使用 Google Cloud CLI,請先安裝並初始化 Google Cloud CLI:
  2. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立Google Cloud 專案。

建立 HPC VM 執行個體

強烈建議您搭配下列機器系列,使用 HPC VM 映像檔或Advanced Compute Images (搶先版) 執行 HPC 工作負載:

這些系列的機型具有固定的虛擬對實體核心對應,並向客體 OS 公開 NUMA 儲存格架構,這兩者對於緊密耦合 HPC 應用程式的效能至關重要。

如要建立多個互連的 HPC VM 執行個體,請按照「建立具備密集配置政策的 HPC VM 執行個體」一文中的操作說明,縮短網路延遲時間。

控制台

使用 Google Cloud 控制台建立 HPC 就緒執行個體,執行客體 OS 的 HPC VM 映像檔。如要使用其中一個進階運算映像檔,請務必使用 gcloud CLI 或 REST。

  1. 前往 Google Cloud 控制台的「建立執行個體」頁面。

    前往「建立執行個體」

    如果出現提示,請選取專案,然後按一下「繼續」。「建立執行個體」頁面隨即顯示,並顯示「機器設定」窗格。

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 欄位中,指定運算執行個體的名稱。詳情請參閱「資源命名慣例」。
    2. 選用:為執行個體選取「區域」和「可用區」。

      「區域」的預設選項為「任何」。如未變更這項預設選項,Google 會根據機型和可用性自動為您選擇可用區。

    3. 按一下「Compute-optimized」(運算最佳化) 分頁標籤。 Google Cloud 控制台隨即會顯示所選機器家族適用的機器系列。

    4. 在「系列」欄中,選取 VM 的機器系列,例如「C2」。

    5. 在「機型」部分,選取 VM 的機型,例如「c2-standard-60」。

  3. 在導覽選單 (左側) 中,按一下「OS and storage」(OS 和儲存空間)。

  4. 在「作業系統和儲存空間」窗格中,執行下列操作來設定開機磁碟:

    1. 點選「變更」。系統會顯示「開機磁碟」窗格和「公開映像檔」分頁。
    2. 在「Operating system」(作業系統) 清單中,選取「HPC VM Image」(HPC VM 映像檔)。
    3. 在「Version」清單中,選取作業系統版本。
    4. 選用:在「Boot disk type」(開機磁碟類型) 清單中,選取開機磁碟類型。
    5. 選用:在「Size (GB)」(大小 (GB)) 欄位中,指定開機磁碟大小。
    6. 選用:如果是 Hyperdisk Balanced 開機磁碟,請為「佈建 IOPS」和「佈建處理量」欄位指定值。
    7. 選用:如要查看進階設定選項,請展開「Show advanced configurations」(顯示進階設定) 部分。
    8. 如要確認開機磁碟選項並返回「Operating system and storage」(作業系統和儲存空間) 窗格,請按一下「Select」(選取)。
  5. 點選導覽選單中的「Networking」(網路)。在隨即顯示的「Networking」(網路) 窗格中,執行下列操作:

    1. 前往「防火牆」部分。
    2. 如要允許 VM 接收 HTTP 或 HTTPS 流量,請選取「允許 HTTP 流量」或「允許 HTTPS 流量」。

      Compute Engine 會在 VM 中新增網路標記,並建立對應的輸入防火牆規則,允許所有傳入的 tcp:80 (HTTP) 或 tcp:443 (HTTPS) 流量。網路標記會將防火牆規則與 VM 建立關聯。詳情請參閱 Cloud Next Generation Firewall 說明文件中的「防火牆規則總覽」。

  6. 選用:如果您選擇的 OS 映像檔支援受防護的 VM 功能,可以修改受防護的 VM 設定。

    如要這麼做,請在導覽選單中按一下「安全性」。在隨即顯示的「安全性」窗格中,您可以設定下列項目:

  7. 視需要指定其他設定選項。詳情請參閱「建立執行個體時的設定選項」。

  8. 選用步驟:如要使用預留資源建立運算執行個體,請按一下導覽選單中的「進階」。在「預留項目」部分,選取「使用自動選取」。如要使用預留項目,請確保運算執行個體屬性與預留項目中指定的屬性相符。

  9. 如要建立並啟動 HPC VM 執行個體,請按一下「建立」。

gcloud

使用 instances create 指令建立 HPC VM 執行個體。

如要建立沒有放置策略的 HPC VM 執行個體,請使用類似下列的指令:

gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

更改下列內容:

  • INSTANCE_NAME:HPC VM 執行個體的名稱。
  • ZONE:要建立執行個體的可用區。
  • IMAGE_FAMILY:建立 VM 執行個體時要使用的映像檔映像檔系列。
    • 如為 HPC VM 映像檔,請使用 hpc-rocky-linux-8 或 hpc-rocky-linux-9
    • 如要使用進階運算映像檔,請使用「支援的硬體和映像檔系列」中列出的映像檔系列。
  • IMAGE_PROJECT:建立 VM 執行個體時要使用的映像檔專案。如果是 HPC VM 映像檔,專案為 cloud-hpc-image-public。 如果是 Advanced Compute Images,專案為 advanced-compute-images。
  • MACHINE_TYPE:建立 VM 執行個體時要使用的機型。

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

gcloud compute instances describe INSTANCE_NAME

REST

使用 instances.insert 方法建立使用 HPC VM OS 映像檔的運算執行個體:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "machineType":"zones/ZONE/machineTypes/MACHINE_TYPE",
   "name":"VM_NAME",
   "disks":[
      {
         "initializeParams":{
            "sourceImage":"projects/cloud-hpc-image-public/global/images/IMAGE"
         },
         "boot":true
      }
   ],
   "networkInterfaces":[
      {
         "network":"global/networks/NETWORK_NAME"
      }
   ]
}

更改下列內容:

  • PROJECT_ID:要在其中建立運算執行個體的專案 ID
  • ZONE:要在哪個可用區建立運算執行個體
  • MACHINE_TYPE:新運算執行個體的機型 (預先定義或自訂)
  • INSTANCE_NAME:新運算執行個體的名稱
  • IMAGE_FAMILY:建立 VM 執行個體時要使用的映像檔系列。
    • 如為 HPC VM 映像檔,請使用 hpc-rocky-linux-8 或 hpc-rocky-linux-9
    • 如要使用進階運算映像檔,請使用「支援的硬體和映像檔系列」中列出的映像檔系列。
  • IMAGE_PROJECT:建立 VM 執行個體時要使用的映像檔專案。
    • 如要使用 HPC VM 映像檔,請使用專案 cloud-hpc-image-public。
    • 如要使用 Advanced Compute Images,請使用專案 advanced-compute-images。
  • NETWORK_NAME:您要用於運算執行個體的虛擬私有雲網路。您可以指定 default 使用預設網路。

使用密集配置政策建立 HPC VM 執行個體

您可以建立密集配置政策,縮短運算執行個體之間的延遲時間。密集配置政策可確保相同可用區中的執行個體彼此靠近。

如果需要的運算執行個體數量超過單一密集配置政策的容納上限,請將執行個體劃分為多個配置政策。使用最少數量的配置政策,以容納所有執行個體。

如要建立指定密集配置政策的 HPC VM 執行個體,請按照下列步驟操作:

  1. 建立密集配置政策。

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

建立使用 Cloud RDMA 的 HPC VM 執行個體

如要建立使用 Cloud RDMA 的 HPC VM 執行個體,您必須先建立至少一個一般虛擬私有雲 (VPC) 網路和一個 Falcon 虛擬私有雲網路。Falcon 虛擬私有雲網路使用 RDMA 網路設定檔,可在運算執行個體之間啟用 RDMA 流量。這個網路與一般虛擬私有雲網路不同,後者會將非 RDMA 流量傳輸至其他Google Cloud 服務或網際網路。

如要建立使用 Cloud RDMA 的 HPC VM 執行個體,請完成下列工作:

  1. 找出或建立至少兩個虛擬私有雲網路:

    • 用於透過 gVNIC 網路介面傳輸流量的一般虛擬私有雲網路
    • 用於 RDMA 網路流量的 Falcon 虛擬私有雲網路
  2. 建立 HPC VM 執行個體。

    1. 來源映像檔請使用 HPC VM 映像檔,或以 Rocky Linux 為基礎的 Advanced Compute Images。這些映像檔包含 Cloud RDMA 所需的驅動程式。
    2. 建立執行個體時,請設定至少兩個網路介面,一個使用 gVNIC 驅動程式,另一個使用 IRDMA 驅動程式。

      如需更完整的說明,請參閱「建立使用 Cloud RDMA 的執行個體」。

  3. 如果您打算在採用 Cloud RDMA 的 HPC VM 執行個體上執行 MPI 應用程式,請按照「使用 Cloud RDMA 在 H4D VM 上設定及擴充 MPI 應用程式」一文中的 MPI 設定步驟操作。

存取 HPC VM 執行個體

建立 HPC VM 執行個體後,系統會自動啟動該執行個體。如要存取執行個體,請執行下列任一操作:

控制台

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

    前往 VM 執行個體

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

  3. 在「遠端存取」部分,按一下第一個下拉式選單,然後選擇要如何存取執行個體。

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

gcloud

如要使用 SSH 存取執行個體,請使用 gcloud compute ssh 指令:

gcloud compute ssh INSTANCE_NAME --zone ZONE

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

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取這些快速入門導覽課程所用資源的費用,請刪除您建立的所有 HPC VM 執行個體和附加資源。

控制台

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

    前往 VM 執行個體

  2. 選取要刪除的執行個體。

  3. 按一下「刪除」圖示 。

  4. 在對話方塊中執行下列操作:

    1. 選用:如要刪除執行個體而不正常關機,或結束進行中的正常關機程序,請選取「Skip graceful shutdown (if applicable)」(略過正常關機程序 (如適用)) 核取方塊。

    2. 按一下「Delete」(刪除) 確認操作。

  5. 如要刪除已刪除執行個體使用的磁碟,請前往「磁碟」頁面,然後按照下列步驟操作:

    前往「Disks」(磁碟) 頁面

    1. 選取要刪除的磁碟。所選磁碟的「In use by」(由誰使用) 欄位不得有值。

    2. 按一下「刪除」圖示 。

    3. 按一下「Delete」(刪除) 確認操作。

gcloud

如要刪除同一可用區內的一或多個執行個體,請使用 gcloud compute instances delete 指令。如要強制刪除附加至一或多個執行個體的磁碟,請加入 --delete-disks 標記:

gcloud compute instances delete INSTANCE_NAMES \
        --delete-disks=DELETE_DISK_TYPE \
        --zone=ZONE

更改下列內容:

  • INSTANCE_NAMES:以空格分隔的執行個體名稱清單,例如 instance-01 instance-02 instance-03。

  • ZONE:執行個體所在的可用區。

  • DELETE_DISK_TYPE:指定下列其中一個值:

    • 如要刪除附加的開機和非開機永久儲存空間,請按照下列步驟操作:all
    • 如要只刪除附加的開機永久儲存空間,請執行 boot:
    • 如要只刪除非開機用的永久儲存空間,請執行 data。

REST

  1. 如要刪除執行個體,請對 instances.delete 方法發出 DELETE 要求:

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

    更改下列內容:

    • PROJECT_ID:執行個體所在的專案 ID。
    • ZONE:執行個體的可用區。
    • INSTANCE_NAME:執行個體名稱。
  2. 如要刪除執行個體使用的磁碟,請對 disks.delete 方法發出 DELETE 要求:

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    

    更改下列內容:

    • PROJECT_ID:磁碟所在的專案 ID。
    • ZONE:磁碟所在的可用區。
    • DISK_NAME:磁碟名稱。
  3. 針對其他執行個體或磁碟重複上述步驟。

根據最佳做法設定 HPC VM 執行個體

為提升 HPC VM 執行個體的效能並提高可預測性,建議您採用下列最佳做法。

停用多執行緒並行功能

HPC VM 映像檔和以 Rocky Linux 為基礎的 Advanced Compute Images 預設會啟用同步多執行緒 (SMT),也就是 Intel 處理器上的超執行緒。停用 SMT 可讓效能更易於預測,並縮短作業時間。

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

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

  • 如要在現有的 HPC VM 執行個體上停用 SMT,請連線至執行個體,然後從客層 OS 執行下列指令:

    sudo google_mpi_tuning --nosmt
    

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

將 C2 和 C2D 執行個體的網路介面類型設為 gVNIC

如果您建立新的 C2 或 C2D 執行個體,系統預設會使用 Virtio-net 做為虛擬網路介面。使用 gVNIC 取代 Virtio-net,可提供更優異的通訊效能和更高的輸送量,進而提升 MPI 應用程式的擴充性。此外,gVNIC 是各 VM Tier_1 網路效能的必要條件,可提供更高的頻寬和處理量。

如要使用 gVNIC,請按照步驟建立 HPC VM 執行個體,或使用進階運算映像檔建立運算執行個體,然後執行下列其中一項操作:

控制台

如要將 gVNIC 設為網路介面,請在建立執行個體時,點選導覽選單中的「網路」。在隨即顯示的「網路」窗格中,執行下列操作:

  1. 前往「網路介面」部分
  2. 在「網路介面卡」中選取 gVNIC。

gcloud

在 gcloud compute instances create 指令中加入 --network-interface=nic-type=GVNIC 旗標。

REST

在 instances.insert 方法的 POST 要求中, 請在 networkInterfaces 屬性中加入 "nicType": "GVNIC"。

HPC VM 映像檔和以 Rocky Linux 為基礎的 Advanced Compute Images 包含 gVNIC 驅動程式,做為動態核心模組支援 (DKMS)。詳情請參閱「使用 Google 虛擬 NIC」。

關閉 Meltdown 和 Spectre 緩解措施

HPC VM 映像檔和以 Rocky Linux 為基礎的 Advanced Compute Images 預設會啟用 Meltdown 和 Spectre 緩解措施。在某些情況下,這些緩解措施可能會導致特定工作負載的效能下降。如要停用這些緩解措施並承擔相關安全風險,請執行下列操作:

  1. 在您的執行個體上執行下列指令:

    sudo google_mpi_tuning --nomitigation
    
  2. 重新啟動執行個體。

提升網路效能

如要提升執行個體的網路效能,請設定下列一或多項設定:

  • 設定較高的頻寬。如要為 C2 或 C2D 運算執行個體設定 Tier_1 網路,請使用 gcloud compute instances create 指令建立執行個體。建立執行個體時,請指定 --network-performance-configs 旗標。 詳情請參閱「建立使用 Tier_1 網路的執行個體和容器」。

  • 使用巨型封包。為盡量減少網路封包的處理負擔,建議使用較大的封包大小。您需要根據應用程式的具體情況,驗證較大的封包大小。如要瞭解如何使用巨型封包和封包大小,請參閱「傳輸單位上限指南」。

  • 提高 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 映像檔和以 Rocky Linux 為基礎的 Advanced Compute Images 包含公用程式 google-hpc-compute,可安裝建議的 MPI 程式庫,並透過 TCP 傳輸使用量身打造的 libfabric 提供者。Google Cloud

限制

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

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

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

如要在建立新的 HPC VM 執行個體或 Advanced Compute Images 執行個體時安裝 Intel MPI 程式庫,請按照建立 HPC VM 執行個體或使用 Advanced Compute Images 建立運算執行個體的步驟操作,並在建立運算執行個體時加入下列項目:

--metadata=google_install_intelmpi="--impi_2021"

如要在現有的 HPC VM 執行個體或 Advanced Compute Images 執行個體上安裝程式庫,請在該運算執行個體上執行下列指令:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

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

Intel MPI 程式庫和 MPI 集體調整

HPC VM 映像檔和以 Rocky Linux 為基礎的 Advanced Compute Images 包含一般調整項目,可停用超執行緒、最佳化記憶體、修改系統資源限制,以及套用自訂調整設定檔。google_hpc_firstrun 指令碼會在執行個體首次開機時自動執行。

mpi-tuning 指令碼會做為 google-hpc-firstrun 公用程式的一部分執行,以提升 HPC VM 執行個體的效能並縮短延遲時間。您可以執行 mpi-tuning.sh 指令碼,在個別運算執行個體上套用調整設定。

Usage:
  Verify tuning steps: $ mpi_tuning OPTIONS --dryrun
  Apply tunings: $ mpi_tuning OPTIONS

Options:
  --hpcprofile       Install and apply google-hpc-compute tuned profile
                     Also applies: --tcpmem, --limits
  --hpcthroughput    Install and apply google-hpc-compute-throughput profile
                     Also applies: --tcpmem, --limits
  --tcpmem           Increase memory for TCP
  --limits           Change the system ulimits
  --nosmt            Disable simultaneous multi threading
  --nofirewalld      Disable firewalld
  --noselinux        Disable SE Linux (reboot required)
  --nomitigation     Disable CPU vulnerabilities mitigations (reboot required)
  --reboot           Reboot system after tunings if required
  --dryrun           Do not execute commands
  --verbose          Print verbose messages
  --help             Show help message

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

如要大規模導入最佳做法,請建立自訂 OS 映像檔,搭配 HPC VM 執行個體使用。請完成下列工作,建立自訂映像檔,以便在建立 HPC VM 執行個體時使用:

  1. 建立使用 HPC VM 映像檔的運算執行個體。

  2. 使用 MPI 調整功能自訂運算執行個體。

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

控制台

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

    前往「映文件」

  2. 點選「建立映像檔」。

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

  4. 在「來源磁碟」下方,選取 HPC VM 執行個體上的開機磁碟名稱。

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

  6. 點選「建立」。

gcloud

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

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

更改下列內容:

  • IMAGE_NAME:自訂映像檔的名稱。
  • INSTANCE_NAME:HPC VM 執行個體的名稱。
  • ZONE:HPC VM 執行個體所在的可用區。
  • IMAGE_FAMILY:選填。這張圖片所屬的映像檔系列。
  • LOCATION:選填。儲存自訂圖片的區域。預設位置是離來源磁碟位置最近的多區域。

定價

HPC VM 映像檔和 Advanced Compute Images 皆不需額外付費。由於這些映像檔是在 Compute Engine 上執行,因此您可能需要支付 Compute Engine 資源 (例如 vCPU、磁碟和記憶體) 的費用。

詳情請參閱「Compute Engine 定價」。

後續步驟