使用流體數值模擬分子動力模擬;#39;Slurm-GCP

1. 簡介

上次更新時間:2022 年 4 月 25 日

建構目標

在本程式碼研究室中,您將在 Google Cloud 上部署可自動調整資源配置的高效能運算 (HPC) 叢集。Terraform 部署作業會建立這個叢集,並透過 Spack 安裝 Gromacs。叢集將透過 Slurm 工作排程器管理。建立叢集後,您將執行 benchMEM、benchPEP 或 benchRIB 基準測試

學習目標

  • 如何部署支援 Slurm 工作排程器的 HPC 叢集
  • 如何使用 Slurm 批次工作,在 Google Cloud 上透過 Gromacs 執行 GPU 加速的分子動力學模擬

需要準備的事項

2. 設定

如要完成本程式碼研究室,您需要啟用 Compute Engine 和 Cloud Build API。如要啟用 Compute Engine 和 Cloud Build API,請開啟 Cloud Shell 並執行下列指令。請記得將下方的 替換為您的 project-id

gcloud config set project <PROJECT_ID>
gcloud services enable compute.googleapis.com
gcloud services enable cloudbuild.googleapis.com

注意:如果您打算使用第三方 SSH (例如 OpenSSH) 連線至叢集,請務必使用 OS 登入功能,將 SSH 金鑰附加至 Cloud Identity 設定檔。進一步瞭解如何將 SSH 金鑰新增至雲端身分設定檔

3. [選用] 使用 Gromacs 建立 GCP VM 映像檔

在本程式碼研究室中,我們已為您提供預先建構的映像檔,因為建構程序可能需要最多 2 小時才能安裝 Gromacs 和所有依附元件。如要使用這個預先建構的映像檔來節省時間,請直接跳至下一節。

在 Google Cloud 上執行研究應用程式時,您可以使用多種選項安裝及部署應用程式。在本程式碼研究室的這一節中,您將建立以 slurm-gcp (CentOS7) VM 映像檔為基礎的虛擬機器映像檔。建立過程中,系統會安裝編譯器、Gromacs 的所有依附元件和 Gromacs。

RCC Apps 存放區中的 Gromacs Cloud Build pipeline 封裝了安裝 Gromacs 的必要指令。 安裝程序會使用 Packer 部署 VM,並安裝 Spack,後者會安裝 GCC@9.2.0 編譯器和 Gromacs@2021.2,並啟用 GPU 加速功能。

  1. 在 GCP 上開啟 Cloud Shell。
  2. 複製 FluidNumerics/rcc-apps 存放區
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. 使用 Google Cloud Build 建構映像檔。
cd rcc-apps
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async

您可以在 Google Cloud Build 資訊主頁查看建構程序的狀態

建構程序最多可能需要兩小時。如要加快速度,建議您修改建構設定檔結構定義,變更機器類型以提升建構效能。這項作業可以使用 _MACHINE_TYPE 建構變數完成。例如:

gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async --substitutions=_MACHINE_TYPE=n2-standard-64

建構完成後,Google Cloud 專案中就會有 VM 映像檔,可用於部署叢集。

4. 使用 Terraform 部署可自動調整資源配置的 HPC 叢集

在本節中,您將使用 Terraform 部署可自動調整資源配置的 HPC 叢集,並安裝 Slurm 工作排程器。這個叢集部署時會使用運算節點,每個節點都有 8 個 vCPU 和 1 個 Nvidia® Tesla V100 GPU。

  1. 在 GCP 上開啟 Cloud Shell。
  2. 複製 FluidNumerics/rcc-apps 存放區
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. 切換至 gromacs terraform 目錄:
cd ~/rcc-apps/gromacs/tf/slurm
  1. 建立並檢查 Terraform 計畫。設定 GMX_NAMEGMX_PROJECTGMX_ZONE 環境變數,指定叢集名稱、GCP 專案,以及要部署的區域。如果不確定,請詳閱下方注意事項
export GMX_PROJECT=<PROJECT_ID>
export GMX_ZONE=<ZONE>
export GMX_NAME="gromacs"
  1. 如果您在本程式碼研究室前一節中建立了自己的 VM 映像檔,也需要設定 GMX_IMAGE 環境變數

export GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-latest"

  1. 使用 make 指令建立計畫,系統會執行 terraform init && terraform plan
make plan
  1. 部署叢集。由於叢集已預先安裝 Gromacs 及其依附元件,設定程序只需要幾分鐘即可完成。
make apply
  1. 透過 SSH 連線至上一步建立的登入節點。您可以在上一個步驟中看到這個節點 (可能稱為 gromacs-login0)方法是在控制台選單項目「Compute Engine -> VM 執行個體」中,點選 VM 執行個體清單旁的 SSH 按鈕。

選項:這組 gcloud 指令會找出登入節點名稱,並透過 SSH 連線至該節點:

export CLUSTER_LOGIN_NODE=$(gcloud compute instances list --zones ${GMX_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1)
gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${GMX_ZONE}
  1. 連線至登入節點後,請檢查是否已安裝 Gromacs,藉此驗證叢集設定
$ spack find gromacs
==> In environment /apps/spack-pkg-env
==> Root specs
gromacs@2021.2 +cuda~mpi

==> 1 installed package
-- linux-centos7-x86_64 / gcc@9.2.0 -----------------------------
gromacs@2021.2
  1. 確認 /opt/share/gromacs 包含下列內容。
$ ls /opt/share/gromacs/
benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr

5. 執行 benchRIB 基準測試

Gromacs 是一種研究軟體,用於模擬分子動力學,並在能量最小化限制下計算分子結構。本程式碼研究室的 VM 映像檔提供的基準,著重於分子動力學,也就是原子系統的演化。

在分子動力學中,原子位置、速度和加速度的模擬方式是使用牛頓運動定律:

638fa1fba54c3874.png

其中,位置向量 是原子 i 的位置,t 是時間,72a717ea69626d54.png 是原子 i 的質量,b5e52e17becb80ec.png 是原子 j 對原子 i 產生的非鍵結力,而 538199b3881cd305.png 是鍵結互動產生的力。根據溫度、壓力、原子位置和原子速度,計算出作用力,並以數值方式整合系統,取得新的原子速度和位置。這個程序會重複執行,模擬特定時間範圍內的分子動力學。

Gromacs 映像檔 (您建立或提供的映像檔) 隨附三項基準

  1. benchMEM
  2. benchRIB
  3. benchPEP

這些基準來自 Dr. Kutzner 的 Free Gromacs 基準集 ,是標準的暫態分子動力學模擬集。每個基準測試的原子數量和模擬時間長度都不同。下表列出各項模擬的相關設定。

指標 / 基準

benchMEM

benchRIB

benchPEP

原子數量

81,743

2,136,412

12,495,503

系統大小 / 奈米

10.8 x 10.2 x 9.6

31.2 x 31.2 x 31.2

50.0 x 50.0 x 50.0

時間步長 / fs

2

4

2

截止半徑 / 奈米

1

1

1.2

PME 格線間距 / nm

0.12

0.135

0.16

如要執行基準測試,請提交 Slurm 批次工作。根據預設,提供的批次指令碼會執行 benchRIB 基準。定義所提供基準設定的輸入牌組位於 Gromacs VM 映像檔的 /opt/share/gromacs 下方。此外,您也可以在 /opt/share 下方找到執行 Gromacs 的 Bash 指令碼範例。

在本節中,您必須透過 SSH 連線至叢集的登入節點

  1. 使用 sbatch 指令提交批次工作
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh

這項操作會將工作加入執行佇列,Slurm 則會為您佈建運算節點。執行 sinfo 時,您會看到運算節點處於 alloc# 狀態,表示系統已為您的工作分配運算節點,但正在佈建中。工作執行後,節點會設為 alloc 狀態。

$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
gromacs*     up   infinite      1 alloc# gromacs-compute-0-0
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 2   gromacs gromacs_      joe  R       0:02      1 gromacs-compute-0-0
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
gromacs*     up   infinite      1  alloc gromacs-compute-0-0

等待工作完成。預設基準 (benchRIB) 會模擬約 800 萬個原子,並設定為執行 5000 個時間步 (每 fs 4 個時間步),完成時間約為 6 分鐘。您可以使用下列指令監控工作狀態:

watch squeue

工作從佇列中消失後,即可按下 Ctrl-C 鍵結束。

  1. 工作完成後,您應該會在目前的目錄中看到名為 run/ 的目錄,其中包含模擬輸出內容 (位於 run/MEM 下) 和名為 gromacs.out 的記錄檔。run/MEM 目錄包含 ener.edrmd.log 兩個檔案。ener.edr 檔案會以可攜式二進位格式儲存系統的能量、溫度、壓力、盒子大小、密度和病毒。如擴充功能所建議,md.log 檔案包含 Gromacs 模擬的記錄,以及模擬效能的相關資訊,還有來自粒子對粒子和 PME 求解器的記錄資訊。gromacs.out 的內容包含來自 gmx mdrun 的標準輸出,應與下方顯示的內容類似。
$ tail -n9 gromacs.out
step 5000, remaining wall clock time:     0 s
               Core t (s)   Wall t (s)        (%)
       Time:     3085.342      385.683      800.0
                 (ns/day)    (hour/ns)
Performance:        4.481        5.356

GROMACS reminds you: "I never thought of stopping, and I just hated sleeping. I can't imagine having a better life." (Barbara McClintock)

OK

6. 恭喜

在本程式碼研究室中,您已建立可自動調整資源配置的雲端原生 HPC 叢集,並在 Google Cloud 上使用 Gromacs 執行 GPU 加速的分子動力學模擬!

正在清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本程式碼研究室所用資源的費用,請按照下列步驟操作:

建議:使用 Terraform 刪除 HPC 叢集

  1. 開啟 Cloud Shell,然後前往 gromacs/tf/slurm 範例目錄
cd ~/rcc-apps/gromacs/tf/slurm
  1. 執行 make destroy 即可刪除所有資源。
make destroy

刪除專案 (最有效但破壞性也最大)

如要避免付費,最簡單的方法就是刪除您為本程式碼研究室建立的專案。

警告:刪除專案會出現以下結果:

  • 專案中的所有內容都會遭到刪除。如果您使用現有專案來進行本程式碼研究室,刪除專案時也會一併刪除您在該專案中執行的其他任何工作。
  • 自訂專案 ID 不復存在。您建立這個專案時,可能已建立日後使用的自訂專案 ID。如要保留使用該專案 ID 的網址 (例如 appspot.com 網址),請刪除在該專案中選取的資源,而不是刪除整個專案。

如果打算進行多個程式碼研究室及快速入門導覽課程,重複使用專案有助於避免超出專案配額限制。

  1. 前往 Cloud Console 中的「管理資源」頁面。前往「管理資源」頁面
  2. 在專案清單中選取要刪除的專案,然後按一下「刪除」圖示 c01e35138ac49503.png
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 刪除專案。