Chạy các mô phỏng động lực học phân tử của Gromacs bằng các số chất lỏng' Slurm-GCP

1. Giới thiệu

Lần cập nhật gần đây nhất: ngày 25 tháng 04 năm 2022

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ triển khai cụm Điện toán hiệu suất cao (HPC) tự động mở rộng quy mô trên Google Cloud.Việc triển khai Terraform sẽ tạo cụm này bằng các Gromac được cài đặt qua Spack. Cụm này sẽ được quản lý bằng trình lên lịch công việc Slurm. Sau khi tạo cụm, bạn sẽ chạy các phép đo điểm chuẩnbenchMEM, benchPEP hoặc benchRIB.

Kiến thức bạn sẽ học được

  • Cách triển khai cụm HPC hỗ trợ trình lên lịch công việc Slurm
  • Cách chạy quy trình mô phỏng động lực phân tử có tăng tốc GPU với Gromacs trên Google Cloud bằng công việc theo lô Slurm

Bạn cần có

2. Thiết lập

Để hoàn tất lớp học lập trình này , bạn cần bật Compute Engine và Cloud Build API. Để bật Compute Engine và Cloud Build API, hãy mở Cloud Shell rồi chạy các lệnh sau. Hãy nhớ thay thế project-id của bạn cho bên dưới.

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

Thận trọng: Nếu bạn định dùng SSH (ví dụ: OpenSSH) của bên thứ ba để kết nối với cụm, hãy nhớ đính kèm khoá SSH vào hồ sơ danh tính trên đám mây bằng tính năng Đăng nhập vào hệ điều hành. Tìm hiểu thêm về cách thêm khoá SSH vào hồ sơ danh tính trên đám mây.

3. [KHÔNG BẮT BUỘC] Tạo hình ảnh máy ảo GCP bằng Gromacs

Đối với lớp học lập trình này, chúng tôi đã cung cấp cho bạn một hình ảnh dựng sẵn, vì quá trình tạo có thể mất đến 2 giờ để cài đặt Gromacs và tất cả phần phụ thuộc của nó. Nếu muốn sử dụng hình ảnh được tạo sẵn này để tiết kiệm thời gian, bạn có thể chuyển sang phần tiếp theo.

Khi chạy các ứng dụng nghiên cứu trên Google Cloud, có nhiều lựa chọn để cài đặt và triển khai ứng dụng. Trong phần này của lớp học lập trình, bạn sẽ tạo một hình ảnh máy ảo dựa trên hình ảnh máy ảo slurm-gcp (CentOS7). Trong quá trình tạo, trình biên dịch, tất cả Gromacs phần phụ thuộc và Gromac sẽ được cài đặt.

Quy trình Xây dựng đám mây Gromacs trên kho lưu trữ Ứng dụng RCC bao gồm các hướng dẫn cần thiết để cài đặt Gromac. Quá trình cài đặt này sử dụng Packer để triển khai máy ảo cài đặt Spack, sau đó cài đặt trình biên dịch GCC@9.2.0 và Gromacs@2021.2 khi đã bật tính năng tăng tốc GPU.

  1. Mở Cloud Shell trên GCP.
  2. Sao chép kho lưu trữ vuimetric/rcc-apps
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. Tạo hình ảnh bằng Google Cloud Build.
cd rcc-apps
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async

Bạn có thể kiểm tra trạng thái của quy trình xây dựng tại trang tổng quan của Google Cloud Build

Quá trình tạo có thể mất đến hai giờ. Để đẩy nhanh quá trình này,bạn có thể cân nhắc sửa đổi giản đồ tệp cấu hình bản dựng để thay đổi loại máy nhằm cải thiện hiệu suất của bản dựng. Bạn có thể thực hiện việc này bằng cách sử dụng biến bản dựng _MACHINE_TYPE. Ví dụ:

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

Sau khi quá trình tạo bản dựng hoàn tất, bạn sẽ có một hình ảnh máy ảo trong dự án Google Cloud mà bạn có thể dùng để triển khai cụm của mình.

4. Triển khai cụm HPC tự động điều chỉnh tỷ lệ bằng Terraform

Trong phần này, bạn sẽ sử dụng Terraform để triển khai cụm HPC tự động cấp tài nguyên bổ sung bằng cách cài đặt trình lập lịch biểu công việc Slurm. Cụm này sẽ được triển khai với các nút điện toán mà mỗi nút có 8 vCPU và 1 GPU Nvidia® Tesla V100.

  1. Mở Cloud Shell trên GCP.
  2. Sao chép kho lưu trữ vuimetric/rcc-apps
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. Thay đổi đối với thư mục terraform gromacs:
cd ~/rcc-apps/gromacs/tf/slurm
  1. Tạo và xem xét một kế hoạch địa hình. Đặt các biến môi trường GMX_NAME, GMX_PROJECTGMX_ZONE để chỉ định tên của cụm, dự án GCP và vùng mà bạn muốn triển khai. Vui lòng xem ghi chú bên dưới nếu bạn không chắc chắn
export GMX_PROJECT=<PROJECT_ID>
export GMX_ZONE=<ZONE> 
export GMX_NAME="gromacs" 
  1. Nếu đã tạo hình ảnh máy ảo của riêng mình trong phần trước của lớp học lập trình này, bạn cũng cần đặt biến môi trường GMX_IMAGE

xuất GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-events"

  1. Tạo kế hoạch bằng lệnh make. Lệnh này sẽ chạy terraform init && terraform plan.
make plan
  1. Triển khai cụm. Quá trình thiết lập chỉ mất vài phút vì Gromac và các phần phụ thuộc của nó đã được cài đặt sẵn trên cụm của bạn.
make apply
  1. SSH sang nút đăng nhập đã tạo ở bước trước. Bạn có thể thấy nút này trong bước trước (có thể tên là gromacs-login0). Bạn có thể thực hiện bằng cách nhấp vào nút SSH bên cạnh danh sách Phiên bản máy ảo trong mục trình đơn của bảng điều khiển Compute Engine -> Thực thể máy ảo.

Lựa chọn: Cặp lệnh gcloud này sẽ tìm ra tên nút đăng nhập và SSH được đặt tên nút đó:

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. Sau khi bạn kết nối với nút đăng nhập, để xác minh chế độ thiết lập cụm, hãy kiểm tra để đảm bảo rằng bạn đã cài đặt 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. Xác minh rằng /opt/share/gromacs có các nội dung dưới đây.
$ ls /opt/share/gromacs/
benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr

5. Chạy phép đo điểm chuẩn benchRIB

Gromacs là phần mềm nghiên cứu dùng để mô phỏng động lực phân tử và tính toán cấu trúc phân tử trong những hạn chế giảm thiểu năng lượng. Các điểm chuẩn được cung cấp trong hình ảnh máy ảo của lớp học lập trình này tập trung vào động lực phân tử, sự tiến hoá của các hệ thống nguyên tử.

Trong động lực học phân tử, vị trí, vận tốc và gia tốc của nguyên tử được mô phỏng bằng định luật chuyển động của Newton :

638fa1fba54c3874.pngS

trong đó, vectơ vị trí là vị trí của nguyên tử i, t là thời gian, 72a717ea69626d54.png. là khối lượng của nguyên tử ib5e52e17becb80ec.png là lực không liên kết đối với nguyên tử i do nguyên tử j538199b3881cd305.pngS là lực do tương tác liên kết. Dựa vào nhiệt độ, áp suất, vị trí nguyên tử và vận tốc nguyên tử, các lực được tính toán và hệ thống này được tích hợp theo số để thu được vận tốc và vị trí nguyên tử mới. Quá trình này được lặp lại để mô phỏng động lực phân tử trong một khoảng thời gian nhất định.

Hình ảnh Gromacs (hình ảnh bạn đã tạo hoặc hình ảnh đã cung cấp) đi kèm với 3 điểm chuẩn

  1. benchMEM
  2. benchRIB
  3. benchPEP

Các điểm chuẩn này do Dr. Bộ điểm chuẩn Free Gromacs của Kutzner và là một bộ tiêu chuẩn gồm các công cụ mô phỏng động học phân tử tạm thời. Mỗi điểm chuẩn khác nhau về số lượng nguyên tử và thời lượng mô phỏng. Cấu hình có liên quan cho từng mô phỏng được cung cấp trong bảng dưới đây.

Chỉ số / Điểm chuẩn

benchMEM

benchRIB

benchPEP

Số lượng nguyên tử

81.743

2.136.412

12.495.503

Kích thước hệ thống / nm

10,8 x 10,2 x 9,6

31,2 x 31,2 x 31,2

50 x 50 x 50

Bước thời gian / fs

2

4

2

Cutoff Radii / nm

1

1

1.2

Khoảng cách lưới PME / nm

0,12

0,135

0,16

Để chạy phép đo điểm chuẩn, bạn sẽ gửi một công việc hàng loạt Slurm. Theo mặc định, tập lệnh lô được cung cấp sẽ chạy phép đo điểm chuẩn benchRIB. Các bản trình bày đầu vào xác định cấu hình cho các điểm chuẩn được cung cấp có trong hình ảnh máy ảo Gromacs trong /opt/share/gromacs. Ngoài ra, bạn cũng có thể xem tập lệnh bash mẫu để chạy Gromac trong /opt/share.

Đối với phần này, bạn phải SSH vào nút đăng nhập của cụm

  1. Gửi một công việc hàng loạt bằng lệnh sbatch
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh

Thao tác này sẽ đưa tác vụ vào hàng đợi thực thi và Slurm sẽ cung cấp một nút điện toán cho bạn. Khi chạy sinfo, bạn sẽ thấy một nút điện toán đang ở trạng thái alloc#, tức là nút điện toán được phân bổ cho công việc của bạn, nhưng đang trong quá trình được cấp phép. Khi công việc của bạn đang chạy, nút sẽ được đặt thành trạng thái 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

Chờ công việc này hoàn tất. Điểm chuẩn mặc định (benchRIB) mô phỏng khoảng 8 triệu nguyên tử và được định cấu hình để chạy 5000 bước thời gian (với 4 bước thời gian/fs) bước và mất khoảng 6 phút để hoàn thành. Bạn có thể theo dõi trạng thái công việc của mình bằng lệnh sau:

watch squeue

Khi công việc của bạn không còn trong hàng đợi, bạn có thể thoát bằng ctrl-C.

  1. Khi công việc hoàn tất, bạn sẽ thấy một thư mục có tên là run/. Thư mục này chứa kết quả mô phỏng (trong run/MEM) và một tệp nhật ký trong thư mục hiện tại có tên là gromacs.out. Thư mục run/MEM chứa hai tệp ener.edrmd.log. Tệp ener.edr lưu trữ năng lượng, nhiệt độ, áp suất, kích thước hộp, mật độ và vi lượng của hệ thống ở định dạng nhị phân di động. Như phần mở rộng cho thấy, tệp md.log chứa nhật ký cho quá trình mô phỏng Gromacs và bao gồm cả thông tin về hiệu suất mô phỏng, bên cạnh thông tin ghi nhật ký của trình giải hạt nhân và trình giải PME. Nội dung của gromacs.out chứa dữ liệu đầu ra chuẩn của gmx mdrun sẽ tương tự như nội dung hiển thị dưới đây.
$ 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. Xin chúc mừng

Trong lớp học lập trình này, bạn đã tạo một cụm HPC dựa trên đám mây, tự động cấp tài nguyên mở rộng và chạy mô phỏng động lực phân tử tăng tốc GPU bằng Gromacs trên Google Cloud!

Dọn dẹp

Để tránh làm phát sinh phí tài khoản Google Cloud cho các tài nguyên sử dụng trong lớp học lập trình này, hãy làm như sau:

NÊN DÙNG: Xoá cụm HPC bằng Terraform

  1. Mở Cloud shell rồi chuyển đến thư mục mẫu gromacs/tf/slurm
cd ~/rcc-apps/gromacs/tf/slurm
  1. Chạy lệnh huỷ thực hiện để xoá tất cả tài nguyên.
make destroy

HOẶC, Xoá dự án (có hiệu quả và gây thiệt hại nhiều nhất)

Cách dễ nhất để loại bỏ việc thanh toán là xoá dự án bạn đã tạo cho lớp học lập trình này.

Thận trọng: Việc xoá dự án sẽ có các ảnh hưởng sau:

  • Mọi nội dung trong dự án sẽ bị xoá. Nếu đã dùng một dự án hiện có cho lớp học lập trình này, thì khi xoá dự án đó, bạn cũng sẽ xoá mọi công việc khác đã hoàn thành trong dự án đó.
  • Mã dự án tuỳ chỉnh bị mất. Khi tạo dự án này, bạn có thể đã tạo một mã dự án tuỳ chỉnh mà bạn muốn sử dụng trong tương lai. Để giữ lại các URL sử dụng mã dự án, chẳng hạn như URL appspot.com, hãy xoá các tài nguyên đã chọn bên trong dự án thay vì xoá toàn bộ dự án.

Nếu bạn dự định khám phá nhiều lớp học lập trình và các bước bắt đầu nhanh, việc sử dụng lại các dự án có thể giúp bạn tránh vượt quá hạn mức của dự án.

  1. Trong Cloud Console, hãy chuyển đến trang Quản lý tài nguyên. Chuyển đến trang Quản lý tài nguyên
  2. Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá rồi nhấp vào biểu tượng Xoá c01e35138ac49503.png.
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.