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

1. 簡介

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

建構目標

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

學習目標

  • 如何部署支援 Slurm 工作排程器的 HPC 叢集
  • 瞭解如何在 Google Cloud 中,使用 Slurm 批次工作,透過 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 設定檔。進一步瞭解如何將安全殼層金鑰新增至 Cloud Identity 設定檔

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

我們在本程式碼研究室中提供了預先建構的映像檔,因為建構程序最多可能需要 2 小時才能安裝 Gromac 及其所有依附元件。如要使用這個預先建立的映像檔節省時間,可以直接跳到下一部分。

在 Google Cloud 中執行研究應用程式時,有許多選項可以安裝及部署應用程式。在程式碼研究室的本節中,您將建立以 slurm-gcp (CentOS7) VM 映像檔為基礎的虛擬機器映像檔。在建立過程中,所有 Gromacs 的編譯器並安裝 Gromac。

RCC 應用程式存放區中的 Gromacs Cloud Build 管道封裝了 Gromacs 的必要安裝操作說明。安裝程序會使用 Packer 部署安裝 Spack 的 VM,進而安裝 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 環境變數

匯出 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 連至上一個步驟建立的 login 節點。您可以在上一個步驟中看到這個節點 (可能稱為 gromacs-login0)如要進行這項操作,請前往控制台選單項目 Compute Engine ->,按一下 VM 執行個體清單旁的 SSH 按鈕。VM 執行個體。

選項:這組 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

其中,位置向量 是原子 it 的位置,72a717ea69626d54.png 是原子質 ib5e52e17becb80ec.png 則是原子 i 的非鍵式,因為原子 j538199b3881cd305.png 則是由鍵結互動所造成的力量。根據溫度、壓力、原子位置和原子速度,計算力,並且以數值整合的方式獲取新的原子速度和位置。這個過程重複進行,以模擬指定期間的分子動力。

Gromacs 映像檔 (無論是你自己建立的圖片,還是你提供的映像檔) 含有三個基準

  1. benchMEM
  2. benchRIB
  3. benchPEP

這些基準取自 Dr.Kutzner 提供的自由總體基準組 ,是一組暫時性的分子動力模擬。每個基準測試的原子數量和模擬作業持續時間不盡相同。下表列出各項模擬的相關設定。

指標 / 基準

benchMEM

benchRIB

benchPEP

Atom 數量

81,743 人

2,136,412 人

12,495,503 人

系統大小 / nm

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

Cutoff Radii / nm

1

1

1.2

PME 格線間距 / nm

0.12

0.135

0.16

如要執行基準測試,請提交 Slurm 批次工作。根據預設,提供的批次指令碼會執行 benchRIB 基準。定義所提供基準設定的輸入簡報會納入 /opt/share/gromacs 下方的 Gromacs VM 映像檔中。此外,/opt/share 下方也提供執行 Gromacs 的 bash 指令碼範例。

在這個部分,您必須透過 SSH 登入叢集的 login 節點

  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 萬原子的原子,並設為執行 5,000 個計時 (總共 4 個時間步數/fs) 步,大約需要 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 控制台中,前往「管理資源」頁面。前往「Manage resources」(管理資源) 頁面
  2. 在專案清單中,選取要刪除的專案,然後按一下「Delete」(刪除) c01e35138ac49503.png
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。