1. Giới thiệu
Lần cập nhật gần đây nhất: ngày 5 tháng 05 năm 2021
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 bằng trình lập lịch biểu công việc Slurm. Bạn sẽ dùng một ví dụ về hoạt động triển khai Terraform để triển khai cụm này khi WRF® được cài đặt qua Spack. Sau đó, bạn sẽ sử dụng cơ sở hạ tầng này để chạy điểm chuẩn CONUS 2,5 km hoặc điểm chuẩn CONUS 12 km.
Kiến thức bạn sẽ học được
- Cách định cấu hình chính sách Quản lý danh tính và quyền truy cập (IAM) để vận hành cụm HPC trên Google Cloud Platform
- Cách triển khai cụm HPC dựa trên đám mây bằng trình lập lịch biểu công việc Slurm
- Cách chạy song song WRF® trên Google Cloud bằng tác vụ theo lô Slurm
Bạn cần có
- Tài khoản Gmail có khoá SSH được đính kèm hoặc Google Workspace, Cloud Identity
- Dự án Google Cloud Platform đã bật tính năng Thanh toán
- Vai trò của chủ sở hữu dự án đối với dự án GCP của bạn
- Đủ hạn mức cho Compute Engine (480 c2 vCPU và 500 GB PD-Standard Disk)
2. Cấu hình
Bật Google Cloud API
Bạn phải bật các API tài nguyên Google Cloud thì mới có thể tạo và sử dụng.
gcloud services enable compute.googleapis.com
Thiết lập chính sách IAM
Trong HPC, có sự khác biệt rõ ràng giữa quản trị viên hệ thống và người dùng hệ thống. Quản trị viên hệ thống thường có "quyền truy cập gốc" cho phép họ quản lý và vận hành các tài nguyên điện toán. Người dùng hệ thống thường là nhà nghiên cứu, nhà khoa học và kỹ sư ứng dụng chỉ cần sử dụng tài nguyên để thực thi công việc.
Trên Google Cloud, API đăng nhập vào hệ điều hành cung cấp thông tin người dùng POSIX trong tài khoản Google Workspace, Cloud Identity và Gmail. Ngoài ra, tính năng Đăng nhập vào hệ điều hành sẽ tích hợp với hệ thống Quản lý danh tính và quyền truy cập (IAM) của GCP để xác định xem người dùng có được phép chuyển đặc quyền lên hệ thống Linux hay không.
Trong hướng dẫn này, chúng tôi giả định rằng bạn đang điền vai trò quản trị viên hệ thống và quản trị viên công cụ điện toán. Chúng tôi sẽ thiết lập các chính sách IAM để cấp cho bạn đầy đủ quyền nhằm hoàn thành những việc sau
- Tạo/xoá các phiên bản máy ảo Google Compute Engine (GCE)
- SSH vào các phiên bản máy ảo GCE
Cách tự cấp các vai trò quản lý danh tính và quyền truy cập (IAM) cần thiết trong bảng điều khiển Google Cloud:
- Chuyển đến danh sách quản lý danh tính và quyền truy cập (IAM) và Quản trị > IAM trong trình đơn Sản phẩm và dịch vụ.
- Nhấp vào "+Thêm" ở gần đầu trang.
- Nhập tài khoản Google Workspace, tài khoản Cloud Identity hoặc tài khoản Gmail của bạn trong phần "Thành viên mới"
- Thêm các vai trò sau : Quản trị viên điện toán, Đăng nhập vào Compute OS và Người dùng tài khoản dịch vụ
- Nhấp vào Lưu
Giờ đây, thông tin đăng nhập của bạn đã có các quyền cần thiết để bắt đầu tạo cụm HPC.
Để xác minh rằng bạn đã chỉ định đúng vai trò, hãy mở Cloud Shell rồi chạy lệnh sau, thay thế YOUR_PROJECT
và EMAIL_ADDRESS
bằng dự án và địa chỉ email của bạn.
$ gcloud projects get-iam-policy YOUR_PROJECT --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members=user:EMAIL_ADDRESS"
Lệnh này sẽ tạo ra kết quả:
ROLE roles/compute.osLogin roles/iam.serviceAccountUser roles/compute.admin
3. Hạn mức thấp: Triển khai cụm HPC tự động cấp tài nguyên bổ sung bằng Terraform
Trong phần này, bạn sẽ triển khai một cụm HPC tự động cấp tài nguyên bổ sung, bao gồm cả trình lập lịch biểu công việc Slurm. Điều này giống với tuỳ chọn Hạn mức cao, ngoại trừ việc loại máy được sử dụng nhỏ hơn và số lượng vCPU được sử dụng nhỏ hơn.
- Mở Cloud Shell trên GCP.
- Tạo bản sao kho lưu trữ hiển thị hiển thị số/slurm-gcp
cd ~ git clone https://github.com/FluidNumerics/slurm-gcp.git
- Chuyển sang thư mục WRF:
cd ~/slurm-gcp/tf/examples/wrf
- Tạo và xem xét một kế hoạch địa hình. Đặt các biến môi trường
WRF_NAME
,WRF_PROJECT
vàWRF_ZONE
để chỉ định tên của cụm, dự án GCP và vùng mà bạn muốn triển khai.
export WRF_PROJECT=<PROJECT ID> export WRF_ZONE=<ZONE> export WRF_NAME="wrf-small"
- Vào lần đầu tiên chạy terraform, bạn phải chạy lệnh
init
:
terraform init
- Tạo kế hoạch bằng lệnh make. Lệnh này sẽ chạy
terraform
make plan
- Triển khai cụm. Quá trình cài đặt và thiết lập có thể mất đến 2 giờ. Trong quá trình triển khai, WRF và tất cả các phần phụ thuộc của nó sẽ được cài đặt.
make apply
- 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ể gọi là wrf-small-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 ${WRF_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1) gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${WRF_ZONE}
- 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 mô-đun wrf đang hoạt động.
$ module load gcc && module load openmpi && module avail -------------------------------------- /apps/spack/share/spack/lmod/linux-centos7-x86_64/openmpi/4.0.5-eagetxh/gcc/9.2.0 -------------------------------------- hdf5/1.10.7 netcdf-c/4.7.4 netcdf-fortran/4.5.3 parallel-netcdf/1.12.1 wrf/4.2 ------------------------------------------------- /apps/spack/share/spack/lmod/linux-centos7-x86_64/gcc/9.2.0 ------------------------------------------------- hwloc/2.2.0 libiconv/1.16 libpng/1.6.37 nasm/2.15.05 openmpi/4.0.5 (L,D) time/1.9 zlib/1.2.11 jasper/2.0.16 libjpeg-turbo/2.0.4 libtirpc/1.2.6 ncurses/5.9.20130511 perl/5.16.3 util-macros/1.19.1 krb5/1.15.1 libpciaccess/0.16 libxml2/2.9.10 numactl/2.0.14 tcsh/6.22.02 xz/5.2.2 --------------------------------------------------- /apps/spack/share/spack/lmod/linux-centos7-x86_64/Core ---------------------------------------------------- gcc/9.2.0 (L) ---------------------------------------------------------------------- /apps/modulefiles ---------------------------------------------------------------------- openmpi/v4.1.x
- Xác minh rằng
/apps/share/conus-12km
có các nội dung dưới đây.
$ ls -1 /apps/share/conus-12km/ FILE:2018-06-17_00 FILE:2018-06-17_03 FILE:2018-06-17_06 FILE:2018-06-17_09 FILE:2018-06-17_12 geo_em.d01.nc geogrid.log met_em.d01.2018-06-17_00:00:00.nc met_em.d01.2018-06-17_03:00:00.nc met_em.d01.2018-06-17_06:00:00.nc met_em.d01.2018-06-17_09:00:00.nc met_em.d01.2018-06-17_12:00:00.nc metgrid.log namelist.input namelist.wps ungrib.log wrfbdy_d01 wrfinput_d01
4. Chạy Điểm chuẩn CONUS 12 km
Để chạy điểm chuẩn CONUS 12 km, bạn sẽ gửi một công việc theo lô Slurm. Phần đầu vào cho điểm chuẩn này có trong hình ảnh máy ảo wrf-gcp trong /apps/share/benchmarks/conus-12km.
Đối với phần này, bạn phải kết nối SSH với nút đăng nhập của cụm
- Sao chép tệp lô wrf-conus.sh mẫu từ /apps/share
cp /apps/share/wrf-conus12.sh ~/
- Mở wrf-conus.sh trong trình chỉnh sửa văn bản để xác minh rằng
--partition
và--ntasks
đã được thiết lập chính xác. Bạn nên đặt số lượng nhiệm vụ thành số hạng MPI mà bạn muốn sử dụng để bắt đầu công việc. Đối với phần minh hoạ này, số lượng tác vụ tương đương với số lượng vCPU được sử dụng cho công việc và không được vượt quá hạn mức có sẵn của bạn.
#!/bin/bash #SBATCH --partition=wrf #SBATCH --ntasks=24 #SBATCH --ntasks-per-node=8 #SBATCH --mem-per-cpu=2g #SBATCH --cpus-per-task=1 #SBATCH --account=default # # /////////////////////////////////////////////// # WORK_PATH=${HOME}/wrf-benchmark/ SRUN_FLAGS="-n $SLURM_NTASKS --cpu-bind=threads" . /apps/share/spack.sh module load gcc/9.2.0 module load openmpi module load hdf5 netcdf-c netcdf-fortran wrf mkdir -p ${WORK_PATH} cd ${WORK_PATH} ln -s ${INSTALL_ROOT}/share/conus-12km/* . ln -s $(spack location -i wrf)/run/* . srun $MPI_FLAGS ./wrf.exe
- Gửi tác vụ hàng loạt bằng cách sử dụng lô.
sbatch wrf-conus12.sh
- Chờ công việc này hoàn tất. Điểm chuẩn này được định cấu hình để chạy dự báo trong 6 giờ, mất khoảng 3 giờ để hoàn thành với 24 thứ hạng. Bạn có thể theo dõi trạng thái công việc của mình bằng
squeue
. - Khi công việc hoàn tất, hãy kiểm tra nội dung trong tệp rsl.out.0000 để xác minh rằng bạn thấy dòng chữ "wrf: FAILED complete WRF". Hậu tố dạng số sẽ khác nếu bạn chạy công việc nhiều lần, ví dụ: bạn đã cài đặt sai chế độ cấu hình và phải chạy lại công việc đó.
$ tail -n1 ${HOME}/wrf-benchmark/rsl.out.0000 d01 2018-06-17_06:00:00 wrf: SUCCESS COMPLETE WRF
5. Hạn mức cao: 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ẽ triển khai một cụm HPC tự động cấp tài nguyên bổ sung, bao gồm cả trình lập lịch biểu công việc Slurm trong GCP.
- Mở Cloud Shell trên GCP.
- Sao chép kho lưu trữ vuimetric/slurm-gcp
cd ~ git clone https://github.com/FluidNumerics/slurm-gcp.git
- Chuyển sang thư mục WRF:
cd ~/slurm-gcp/tf/examples/wrf
- Tạo và xem xét một kế hoạch địa hình. Đặt các biến môi trường
WRF_NAME
,WRF_PROJECT
,WRF_ZONE
,WRF_MAX_NODE
vàWRF_MACHINE_TYPE
để chỉ định tên của cụm, dự án GCP, vùng bạn muốn triển khai, số nút tối đa và loại máy. Đối với điểm chuẩn CONUS 2,5 km, chúng tôi khuyên bạn nên sử dụng các phiên bản c2-standard-60 với ít nhất 8 nút có sẵn chạy công việc với 480 MPI xếp hạng.
export WRF_PROJECT=<PROJECT ID> export WRF_ZONE=<ZONE> export WRF_NAME=wrf-large export WRF_MAX_NODE=5 export WRF_MACHINE_TYPE="c2-standard-60"
- Nếu chưa thực hiện thao tác này ở trên, bạn phải chạy
terraform init
để khởi động terraform:
terraform init
- Tạo kế hoạch bằng lệnh make.
make plan
- Triển khai cụm. Quá trình cài đặt và thiết lập có thể mất đến 2 giờ. Trong quá trình triển khai, WRF và tất cả các phần phụ thuộc của nó sẽ được cài đặt.
make apply
- SSH sang nút đăng nhập đã tạo ở bước trước. Bạn có thể thấy nút này ở bước trước (có thể gọi là wrf-large-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 ${WRF_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1) gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${WRF_ZONE}
Lệnh thứ hai sẽ dẫn đến kết nối bạn được kết nối với nút Đăng nhập Slurm.
- 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 mô-đun wrf đang hoạt động.
$ module load gcc && module load openmpi && module avail -------------------------------------- /apps/spack/share/spack/lmod/linux-centos7-x86_64/openmpi/4.0.5-eagetxh/gcc/9.2.0 -------------------------------------- hdf5/1.10.7 netcdf-c/4.7.4 netcdf-fortran/4.5.3 parallel-netcdf/1.12.1 wrf/4.2 ------------------------------------------------- /apps/spack/share/spack/lmod/linux-centos7-x86_64/gcc/9.2.0 ------------------------------------------------- hwloc/2.2.0 libiconv/1.16 libpng/1.6.37 nasm/2.15.05 openmpi/4.0.5 (L,D) time/1.9 zlib/1.2.11 jasper/2.0.16 libjpeg-turbo/2.0.4 libtirpc/1.2.6 ncurses/5.9.20130511 perl/5.16.3 util-macros/1.19.1 krb5/1.15.1 libpciaccess/0.16 libxml2/2.9.10 numactl/2.0.14 tcsh/6.22.02 xz/5.2.2 --------------------------------------------------- /apps/spack/share/spack/lmod/linux-centos7-x86_64/Core ---------------------------------------------------- gcc/9.2.0 (L) ---------------------------------------------------------------------- /apps/modulefiles ---------------------------------------------------------------------- openmpi/v4.1.x
- Xác minh rằng
/apps/share/conus-2.5km
có các nội dung dưới đây.
$ ls -1 /apps/share/conus-2.5km FILE:2018-06-17_00 FILE:2018-06-17_03 FILE:2018-06-17_06 FILE:2018-06-17_09 FILE:2018-06-17_12 geo_em.d01.nc geogrid.log gfs.0p25.2018061700.f000.grib2 gfs.0p25.2018061700.f003.grib2 gfs.0p25.2018061700.f006.grib2 gfs.0p25.2018061700.f009.grib2 gfs.0p25.2018061700.f012.grib2 met_em.d01.2018-06-17_00:00:00.nc met_em.d01.2018-06-17_03:00:00.nc met_em.d01.2018-06-17_06:00:00.nc met_em.d01.2018-06-17_09:00:00.nc met_em.d01.2018-06-17_12:00:00.nc metgrid.log namelist.input namelist.wps ungrib.log wrfbdy_d01 wrfinput_d01
6. Chạy Điểm chuẩn CONUS 2,5 km
Để chạy điểm chuẩn CONUS 2,5 km, bạn sẽ gửi một công việc theo lô Slurm. Các phần đầu vào cho điểm chuẩn này được bao gồm trong hình ảnh máy ảo wrf-gcp trong /apps/share/benchmarks/conus-2.5km.
Đối với phần này, bạn phải kết nối SSH với nút đăng nhập của cụm
- Sao chép tệp lô wrf-conus.sh mẫu từ /apps/share
cp /apps/share/wrf-conus2p5.sh ~/
- Mở wrf-conus.sh trong trình chỉnh sửa văn bản để xác minh rằng
--partition
và--ntasks
đã được thiết lập chính xác. Phân vùng phải được đặt thành c2-60. Bạn nên đặt số lượng nhiệm vụ thành số hạng MPI mà bạn muốn sử dụng để bắt đầu công việc. Đối với phần minh hoạ này, số lượng tác vụ tương đương với số lượng vCPU được sử dụng cho công việc và không được vượt quá hạn mức có sẵn của bạn.
#!/bin/bash #SBATCH --partition=c2-60 #SBATCH --ntasks=480 #SBATCH --ntasks-per-node=60 #SBATCH --mem-per-cpu=2g #SBATCH --cpus-per-task=1 #SBATCH --account=default # # /////////////////////////////////////////////// # WORK_PATH=${HOME}/wrf-benchmark/ SRUN_FLAGS="-n $SLURM_NTASKS --cpu-bind=threads" . /apps/share/spack.sh module load gcc/9.2.0 module load openmpi module load hdf5 netcdf-c netcdf-fortran wrf mkdir -p ${WORK_PATH} cd ${WORK_PATH} ln -s ${INSTALL_ROOT}/share/conus-2.5km/* . ln -s $(spack location -i wrf)/run/* . srun $MPI_FLAGS ./wrf.exe
- Gửi tác vụ hàng loạt bằng cách sử dụng lô.
sbatch wrf-conus2p5.sh
- Chờ công việc này hoàn tất. Điểm chuẩn này được định cấu hình để chạy dự báo trong 6 giờ, mất khoảng 1 giờ để hoàn thành với 480 thứ hạng. Bạn có thể theo dõi trạng thái công việc của mình bằng
squeue
. - Khi công việc hoàn tất, hãy kiểm tra nội dung trong rsl.out.0000 để xác minh rằng bạn nhìn thấy dòng chữ "wrf: FAILED complete WRF". Hậu tố dạng số sẽ khác nếu bạn chạy công việc nhiều lần. Ví dụ: bạn đã cài đặt sai chế độ cấu hình và phải chạy lại công việc đó.
$ tail -n1 ${HOME}/wrf-benchmark/rsl.out.0000 d01 2018-06-17_06:00:00 wrf: SUCCESS COMPLETE WRF
7. 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 điều chỉnh tỷ lệ và chạy một bản mô phỏng WRF® song song trên Google Cloud Platform!
Dọn dẹp
Cách tránh tính phí vào tài khoản Google Cloud Platform cho các tài nguyên sử dụng trong lớp học lập trình này:
Xoá dự án
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.
- 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
- 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á .
- Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.
Xoá từng tài nguyên
- Mở Cloud shell rồi chuyển đến thư mục mẫu wrf
cd ~/slurm-gcp/tf/examples/wrf
- Chạy lệnh huỷ thực hiện để xoá tất cả tài nguyên.
make destroy