1. Pengantar
Terakhir diperbarui: 05-05-2021
Yang akan Anda buat
Dalam codelab ini, Anda akan men-deploy cluster High Performance Computing (HPC) penskalaan otomatis di Google Cloud dengan penjadwal tugas Slurm. Anda akan menggunakan contoh deployment Terraform yang men-deploy cluster ini dengan WRF® yang diinstal melalui Spack. Kemudian, Anda akan menggunakan infrastruktur ini untuk menjalankan tolok ukur CONUS 2,5 km atau tolok ukur CONUS 12 km.
Yang akan Anda pelajari
- Cara mengonfigurasi kebijakan Identity and Access Management (IAM) untuk mengoperasikan cluster HPC di Google Cloud Platform
- Cara men-deploy cluster HPC berbasis cloud dengan penjadwal tugas Slurm
- Cara menjalankan WRF® secara paralel di Google Cloud menggunakan tugas batch Slurm
Yang Anda butuhkan
- Akun Gmail dengan kunci SSH terpasang, atau Google Workspace, Cloud Identity
- Project Google Cloud Platform dengan Penagihan diaktifkan
- Peran pemilik project di Project GCP Anda
- Kuota Compute Engine yang Memadai (480 vCPU c2 dan Disk Standar PD 500 GB)
2. Konfigurasi
Mengaktifkan Google Cloud API
API resource Google Cloud harus diaktifkan untuk membuat dan menggunakan API tersebut.
gcloud services enable compute.googleapis.com
Menetapkan Kebijakan IAM
Dalam HPC, ada perbedaan yang jelas antara administrator sistem dan pengguna sistem. Administrator sistem umumnya memiliki akses {i>root<i}. yang memungkinkan mereka mengelola dan mengoperasikan resource komputasi. Pengguna sistem umumnya adalah peneliti, ilmuwan, dan insinyur aplikasi yang hanya perlu menggunakan sumber daya untuk menjalankan tugas.
Di Google Cloud, OS Login API menyediakan informasi pengguna POSIX dari akun Google Workspace, Cloud Identity, dan Gmail. Selain itu, Login OS terintegrasi dengan sistem Identity and Access Management (IAM) GCP untuk menentukan apakah pengguna harus diizinkan untuk mengeskalasikan hak istimewa di sistem Linux.
Dalam tutorial ini, kami menganggap Anda mengisi peran administrator sistem dan administrator Compute Engine. Kami akan mengonfigurasi kebijakan IAM agar Anda memiliki izin yang memadai untuk menyelesaikan tugas-tugas berikut
- Membuat/Menghapus instance VM Google Compute Engine (GCE)
- SSH ke instance VM GCE
Untuk memberi Anda peran IAM yang diperlukan untuk menyelesaikan tutorial ini, di Konsol Google Cloud:
- Buka IAM & Admin > IAM di menu Produk dan Layanan.
- Klik "+Tambahkan" di dekat bagian atas halaman.
- Ketik akun Google Workspace, Akun Cloud Identity, atau akun Gmail Anda di bagian "Anggota baru"
- Tambahkan peran berikut : Compute Admin, Login Compute OS, dan Service Account User
- Klik Simpan
Login Anda sekarang memiliki izin yang diperlukan untuk memulai pembuatan cluster HPC.
Untuk memastikan bahwa Anda telah menetapkan peran yang tepat, buka Cloud Shell, dan jalankan perintah berikut, dengan mengganti YOUR_PROJECT
dan EMAIL_ADDRESS
dengan project dan alamat email Anda.
$ gcloud projects get-iam-policy YOUR_PROJECT --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members=user:EMAIL_ADDRESS"
Perintah ini akan menghasilkan output:
ROLE roles/compute.osLogin roles/iam.serviceAccountUser roles/compute.admin
3. Kuota Rendah: Deploy cluster HPC penskalaan otomatis dengan Terraform
Di bagian ini, Anda akan men-deploy cluster HPC penskalaan otomatis, termasuk scheduler tugas Slurm. Opsi ini identik dengan opsi Kuota Tinggi, tetapi jenis mesin yang digunakan lebih kecil dan jumlah vCPU yang digunakan lebih sedikit.
- Buka Cloud Shell Anda di GCP.
- Meng-clone repositori FluidNumerics/slurm-gcp
cd ~ git clone https://github.com/FluidNumerics/slurm-gcp.git
- Ubah ke direktori WRF:
cd ~/slurm-gcp/tf/examples/wrf
- Membuat dan meninjau rencana terraform. Setel variabel lingkungan
WRF_NAME
,WRF_PROJECT
, danWRF_ZONE
untuk menentukan nama cluster, project GCP, dan zona tempat Anda ingin men-deploy.
export WRF_PROJECT=<PROJECT ID> export WRF_ZONE=<ZONE> export WRF_NAME="wrf-small"
- Saat pertama kali menjalankan terraform, Anda harus menjalankan perintah
init
:
terraform init
- Buat rencana dengan perintah make, yang akan menjalankan
terraform
make plan
- Men-deploy cluster. Proses penginstalan dan penyiapan dapat memerlukan waktu hingga 2 jam. Selama deployment, WRF dan semua dependensinya akan diinstal.
make apply
- Jalankan SSH ke node login yang dibuat di langkah sebelumnya. Anda dapat melihat node ini pada langkah sebelumnya (mungkin disebut wrf-small-login0). Anda dapat melakukannya dengan mengklik tombol SSH di samping daftar Instance VM di item menu konsol Compute Engine -> di instance VM.
Opsi: Pasangan perintah gcloud ini akan mengetahui nama node login dan SSH ke dalamnya:
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}
- Setelah Anda terhubung ke node login, untuk memverifikasi penyiapan cluster, periksa apakah modul wrf tersedia.
$ 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
- Pastikan
/apps/share/conus-12km
memiliki konten yang tercantum di bawah.
$ 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. Jalankan Tolok Ukur CONUS 12 km
Untuk menjalankan benchmark CONUS 12 km, Anda harus mengirimkan tugas batch Slurm. Presentasi input untuk benchmark ini disertakan dalam image VM wrf-gcp di /apps/share/benchmarks/conus-12km.
Untuk bagian ini, Anda harus memiliki SSH yang terhubung ke node login cluster
- Salin contoh file batch wrf-conus.sh dari /apps/share
cp /apps/share/wrf-conus12.sh ~/
- Buka wrf-conus.sh di editor teks untuk memastikan
--partition
dan--ntasks
disetel dengan benar. Jumlah tugas harus ditetapkan ke jumlah peringkat MPI yang ingin Anda gunakan untuk meluncurkan tugas. Untuk demonstrasi ini, jumlah tugas setara dengan jumlah vCPU yang digunakan untuk tugas, dan tidak boleh melebihi kuota yang tersedia.
#!/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
- Kirim tugas batch menggunakan sbatch.
sbatch wrf-conus12.sh
- Tunggu tugas selesai. Tolok ukur ini dikonfigurasi untuk menjalankan perkiraan 6 jam, yang membutuhkan waktu sekitar 3 jam untuk menyelesaikan 24 peringkat. Anda dapat memantau status pekerjaan dengan
squeue
. - Setelah tugas selesai, periksa konten rsl.out.0000 untuk memastikan bahwa Anda melihat pernyataan "wrf: SUCCESS SELESAI WRF". Akhiran numerik akan berbeda jika Anda telah menjalankan tugas lebih dari sekali, misalnya, setelan konfigurasi Anda salah dan harus dijalankan kembali.
$ tail -n1 ${HOME}/wrf-benchmark/rsl.out.0000 d01 2018-06-17_06:00:00 wrf: SUCCESS COMPLETE WRF
5. Kuota Tinggi: Deploy cluster HPC penskalaan otomatis dengan Terraform
Di bagian ini, Anda akan men-deploy cluster HPC penskalaan otomatis, termasuk penjadwal tugas Slurm di GCP.
- Buka Cloud Shell Anda di GCP.
- Meng-clone repositori FluidNumerics/slurm-gcp
cd ~ git clone https://github.com/FluidNumerics/slurm-gcp.git
- Ubah ke direktori WRF:
cd ~/slurm-gcp/tf/examples/wrf
- Membuat dan meninjau rencana terraform. Tetapkan variabel lingkungan
WRF_NAME
,WRF_PROJECT
,WRF_ZONE
,WRF_MAX_NODE
, danWRF_MACHINE_TYPE
untuk menentukan nama cluster, project GCP, zona tempat Anda ingin men-deploy, jumlah node maksimum, dan jenis mesin. Untuk benchmark CONUS 2,5 km, sebaiknya gunakan instance c2-standard-60 dengan setidaknya 8 node tugas yang tersedia dengan peringkat 480 MPI.
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"
- Jika tidak melakukannya di atas, Anda harus menjalankan
terraform init
untuk memulai terraform:
terraform init
- Buat rencana dengan perintah make.
make plan
- Men-deploy cluster. Proses penginstalan dan penyiapan dapat memerlukan waktu hingga 2 jam. Selama deployment, WRF dan semua dependensinya akan diinstal.
make apply
- Jalankan SSH ke node login yang dibuat di langkah sebelumnya. Anda dapat melihat node ini pada langkah sebelumnya (mungkin disebut wrf-large-login0). Anda dapat melakukannya dengan mengklik tombol SSH di samping daftar Instance VM di item menu konsol Compute Engine -> di instance VM.
Opsi: Pasangan perintah gcloud ini akan mengetahui nama node login dan SSH ke dalamnya:
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}
Perintah kedua akan membuat Anda terhubung ke node Slurm Login.
- Setelah Anda terhubung ke node login, untuk memverifikasi penyiapan cluster, periksa apakah modul wrf tersedia.
$ 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
- Pastikan
/apps/share/conus-2.5km
memiliki konten yang tercantum di bawah.
$ 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. Jalankan Tolok Ukur CONUS 2,5km
Untuk menjalankan tolok ukur CONUS 2,5 km, Anda harus mengirimkan tugas batch Slurm. Presentasi input untuk benchmark ini disertakan dalam image VM wrf-gcp di /apps/share/benchmarks/conus-2.5km.
Untuk bagian ini, Anda harus memiliki SSH yang terhubung ke node login cluster
- Salin contoh file batch wrf-conus.sh dari /apps/share
cp /apps/share/wrf-conus2p5.sh ~/
- Buka wrf-conus.sh di editor teks untuk memastikan
--partition
dan--ntasks
disetel dengan benar. Partisi harus disetel ke c2-60. Jumlah tugas harus ditetapkan ke jumlah peringkat MPI yang ingin Anda gunakan untuk meluncurkan tugas. Untuk demonstrasi ini, jumlah tugas setara dengan jumlah vCPU yang digunakan untuk tugas, dan tidak boleh melebihi kuota yang tersedia.
#!/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
- Kirim tugas batch menggunakan sbatch.
sbatch wrf-conus2p5.sh
- Tunggu tugas selesai. Tolok ukur ini dikonfigurasi untuk menjalankan prakiraan 6 jam, yang membutuhkan waktu sekitar 1 jam untuk menyelesaikan 480 peringkat. Anda dapat memantau status pekerjaan dengan
squeue
. - Setelah tugas selesai, periksa konten rsl.out.0000 untuk memastikan bahwa Anda melihat pernyataan "wrf: SUCCESS SELESAI WRF". Akhiran numerik akan berbeda jika Anda telah menjalankan tugas lebih dari sekali, misalnya, setelan konfigurasi Anda salah dan harus dijalankan kembali.
$ tail -n1 ${HOME}/wrf-benchmark/rsl.out.0000 d01 2018-06-17_06:00:00 wrf: SUCCESS COMPLETE WRF
7. Selamat
Dalam codelab ini, Anda telah membuat cluster HPC berbasis cloud dengan penskalaan otomatis dan menjalankan simulasi WRF® paralel di Google Cloud Platform.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Platform Anda untuk resource yang digunakan dalam codelab ini:
Menghapus project
Cara termudah untuk meniadakan penagihan adalah dengan menghapus project yang Anda buat untuk codelab.
Perhatian: Menghapus project memiliki efek berikut:
- Semua hal dalam project akan dihapus. Jika Anda menggunakan project yang sudah ada untuk codelab ini, saat menghapusnya, Anda juga akan menghapus semua pekerjaan lain yang telah dilakukan di project tersebut.
- Project ID kustom akan hilang. Saat membuat project ini, Anda mungkin telah membuat project ID kustom yang masih ingin Anda gunakan pada masa mendatang. Untuk mempertahankan URL yang menggunakan project ID, seperti URL appspot.com, hapus resource yang dipilih di dalam project, bukan menghapus keseluruhan project.
Jika Anda berencana untuk mempelajari beberapa codelab dan panduan memulai, menggunakan kembali project dapat membantu Anda agar tidak melampaui batas kuota project.
- Di Cloud Console, buka halaman Manage resource. Buka halaman Kelola resource
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete .
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
- Buka Cloud Shell dan buka direktori contoh wrf
cd ~/slurm-gcp/tf/examples/wrf
- Jalankan make hancurkan untuk menghapus semua sumber daya.
make destroy