Submit Script ALELEON Supercomputer: Perbedaan antara revisi
WilsonLisan (bicara | kontrib) (Add parameter SLURM + test penampilan tabel) |
WilsonLisan (bicara | kontrib) (Melengkapi heading 'SLURM Submission Script', menambah heading 'Contoh SLURM Submission Script') |
||
Baris 1: | Baris 1: | ||
SLURM adalah software scheduler untuk mengantarkan job komputasi user ke Compute Node. Bila tidak menggunakan SLURM maka job user akan berjalan di Login Node yang tidak layak untuk komputasi. Selain itu SLURM mencatat penggunaan Core Hour user. | SLURM adalah software scheduler untuk mengantarkan job komputasi user ke Compute Node. Bila tidak menggunakan SLURM maka job user akan berjalan di Login Node yang tidak layak untuk komputasi. Selain itu SLURM mencatat penggunaan Core Hour user. | ||
== Alur Penggunaan SLURM untuk Job Submission == | == '''Alur Penggunaan SLURM untuk Job Submission''' == | ||
Pada contoh berikut, user akan menjalankan komputasi HPCG ke Compute Node dengan nama program '''<nowiki/>''''xhpcg-3.1': | Pada contoh berikut, user akan menjalankan komputasi HPCG ke Compute Node dengan nama program '''<nowiki/>''''xhpcg-3.1': | ||
[ale01@login hpcg-tutorial]$ ls | [ale01@login hpcg-tutorial]$ ls | ||
Baris 23: | Baris 23: | ||
HPCG-Benchmark_3.1_2021-03-22_10-43-30.txt hpcg_log_2021.03.22.10.41.25.txt result-231.out xhpcg-3.1 | HPCG-Benchmark_3.1_2021-03-22_10-43-30.txt hpcg_log_2021.03.22.10.41.25.txt result-231.out xhpcg-3.1 | ||
== Perintah Esensial SLURM == | == '''Perintah Esensial SLURM''' == | ||
Berikut adalah perintah esensial bagi user untuk menggunakan SLURM: | Berikut adalah perintah esensial bagi user untuk menggunakan SLURM: | ||
{| class="wikitable" | {| class="wikitable" | ||
Baris 46: | Baris 46: | ||
|} | |} | ||
== SLURM Submission Script == | == '''SLURM Submission Script''' == | ||
SLURM submission script adalah bash-script yang bertujuan untuk menjalankan program komputasi melalui SLURM. Terdapat 4 komponen penting pada SLURM submission script: | SLURM submission script adalah bash-script yang bertujuan untuk menjalankan program komputasi melalui SLURM. Terdapat 4 komponen penting pada SLURM submission script: | ||
[[Berkas:Contoh_SLURM.png|al=|nirbing|578x578px]] | [[Berkas:Contoh_SLURM.png|al=|nirbing|578x578px]] | ||
# Header #!/bin/bash untuk bash script. | # Header #!/bin/bash untuk bash script. | ||
# Parameter alokasi resources CPU, memori, waktu, output, dll dengan SBATCH. | # Parameter alokasi resources CPU, memori, waktu, output, dll dengan '''SBATCH'''. | ||
# Pengaturan [[Module Environment]] untuk memuat software yang dibutuhkan. | # Pengaturan [[Module Environment|'''Module Environment''']] untuk memuat software yang dibutuhkan. | ||
# Alur perintah untuk menjalankan komputasi user. | # Alur perintah untuk menjalankan komputasi user. | ||
=== Parameter Resources SBATCH === | === Resources HPC Aleleon Mk.II === | ||
Sebelum menggunakan SLURM, user harus mengetahui spesifikasi dan limitasi hardware dari HPC Aleleon Mk.II dimana dijelaskan pada tabel dibawah ini. | |||
{| class="wikitable" | |||
|+Partisi Hardware HPC Aleleon Mk.II | |||
!Partisi | |||
!Keterangan | |||
!Jumlah Node | |||
!Jumlah Core CPU per node | |||
!Jumlah RAM per node | |||
!Jumlah GPU per node | |||
|- | |||
|'''epyc''' (DEFAULT) | |||
|compute node utama CPU | |||
|3 | |||
|128 | |||
|250GB | |||
|0 | |||
|- | |||
|'''gpu_ampere''' | |||
|compute node GPU | |||
|1 | |||
|128 | |||
|125GB | |||
|2 | |||
|} | |||
=== Parameter Resources SBATCH Esensial === | |||
Terdapat ratusan parameter SBATCH untuk SLURM. User dapat melihat daftar lengkap parameter SBATCH untuk SLURM HPC Aleleon Mk.II pada laman daftar parameter SBATCH SLURM ini. Berikut adalah daftar parameter SBATCH basis yang esensial: | Terdapat ratusan parameter SBATCH untuk SLURM. User dapat melihat daftar lengkap parameter SBATCH untuk SLURM HPC Aleleon Mk.II pada laman daftar parameter SBATCH SLURM ini. Berikut adalah daftar parameter SBATCH basis yang esensial: | ||
{| class="wikitable" | {| class="wikitable" | ||
Baris 62: | Baris 88: | ||
!Penjelasan | !Penjelasan | ||
|- | |- | ||
|#SBATCH --ntasks= | |#SBATCH --ntasks=<cpu-cores> | ||
|Jumlah alokasi cores CPU per node | |Jumlah alokasi cores CPU per node. Contoh mengalokasikan 64 core CPU: | ||
$SBATCH --ntasks=64 | $SBATCH --ntasks=64 | ||
|- | |- | ||
|#SBATCH --mem= | |#SBATCH --mem=<mem-capacity> | ||
|Jumlah alokasi memori RAM. User bisa menetapkan satuan apapun namun kami merekomendasikan satuan GB | |Jumlah alokasi memori RAM. User bisa menetapkan satuan apapun namun kami merekomendasikan satuan GB. Contoh mengalokasikan memori 64GB: | ||
$SBATCH --mem=64GB | $SBATCH --mem=64GB | ||
|- | |- | ||
|#SBATCH --time= | |#SBATCH --time=<walltime> | ||
|Walltime (waktu maksimal) yang dialokasikan untuk job user. Format waktu yang | |Walltime (waktu maksimal) yang dialokasikan untuk job user. Walltime maksimal saat ini untuk HPC Aleleon Mk.II adalah 14 hari. Format waktu <walltime> yang digunakan: | ||
* HH:MM:SS. Contoh alokasi 10 jam= #SBATCH --time=10:00:00 | * HH:MM:SS. Contoh alokasi 10 jam= #SBATCH --time=10:00:00 | ||
* D-HH:MM:SS. Contoh alokasi 2 hari= #SBATCH --time=2-00:00:00 | * D-HH:MM:SS. Contoh alokasi 2 hari= #SBATCH --time=2-00:00:00 | ||
|} | |} | ||
Berikut adalah parameter khusus untuk menggunakan GPU node: | |||
{| class="wikitable" | |||
|+Parameter SBATCH SLURM untuk GPU Node | |||
!Parameter | |||
!Penjelasan | |||
|- | |||
|#SBATCH --partition=gpu_ampere | |||
|Memasukkan komputasi ke partisi GPU (yaitu bernama gpu_ampere) | |||
|- | |||
|#SBATCH --gres=gpu:<jumlah-GPU> | |||
|Contoh menggunakan 2 GPU: | |||
$SBATCH --gres=gpu:2 | |||
|} | |||
Berikut adalah parameter esensial untuk output komputasi: | |||
{| class="wikitable" | |||
|+Parameter SBATCH SLURM untuk output | |||
!Parameter | |||
!Penjelasan | |||
|- | |||
|#SBATCH --output=<output-file> | |||
|Merekap output terminal dari program user. Terdapat variabel spesial yaitu %j untuk merekap JOB ID. Format file dibebaskan. Contoh: | |||
$SBATCH --output=hasil-%j.out | |||
|- | |||
|#SBATCH --error=<error-file> | |||
|Merekap output verbose program, berguna untuk melakukan troubleshooting dikala program user tidak berjalan. Contoh: | |||
#SBATCH --error=hasil-%j.err | |||
|} | |||
Parameter SBATCH khusus lainnya untuk menjalankan threading OpenMP dan paralel multi-node akan dijelaskan pada bagian berikutnya. | |||
=== Apakah Terdapat Aturan Mengatur Konfigurasi SBATCH? === | |||
User dibebaskan untuk mengisi parameter SBATCH selama tidak melebihi nilai maksimal (seperti CPU core maksimal 128) atau nilai yang salah. Tidak terdapat aturan seperti alokasi CPU / RAM harus mengikuti nilai the power of two. User bisa saja memasukkan alokasi CPU dan RAM yang 'tidak wajar' seperti 17 core CPU dan 41GB RAM. | |||
Bila terjadi kesalahan parameter SLURM, user tetap bisa melakukan sbatch namun job tidak akan berjalan (tidak muncul di squeue). Adalah praktek yang baik untuk selalu menyertakan parameter #SBATCH --error supaya terdapat log ketika job tidak berjalan via SLURM. | |||
== '''Contoh SLURM Submission Script''' == | |||
=== SLURM Satu Node (Single Node) === | |||
#!/bin/bash | |||
#SBATCH --ntasks=128 | |||
#SBATCH --mem=16GB | |||
#SBATCH --time=00:10:00 | |||
#SBATCH --output=result-%j.out | |||
#SBATCH --error=result-%j.err | |||
java -jar hwbotprime.jar -q | |||
=== SLURM Satu Node MPI (Single Node) === | |||
#!/bin/bash | |||
#SBATCH --ntasks=64 | |||
#SBATCH --mem=8GB | |||
#SBATCH --time=1:00:00 | |||
#SBATCH --output=result-%j.out | |||
#SBATCH --error=result-%j.err | |||
# MODULE | |||
module load openmpi | |||
# RUN COMMAND | |||
mpirun -n 64 ./hellompi | |||
Perhatikan bahwa jumlah task mpirun tidak boleh melebihi ntasks pada SBATCH. |
Revisi per 22 Maret 2021 11.16
SLURM adalah software scheduler untuk mengantarkan job komputasi user ke Compute Node. Bila tidak menggunakan SLURM maka job user akan berjalan di Login Node yang tidak layak untuk komputasi. Selain itu SLURM mencatat penggunaan Core Hour user.
Alur Penggunaan SLURM untuk Job Submission
Pada contoh berikut, user akan menjalankan komputasi HPCG ke Compute Node dengan nama program 'xhpcg-3.1':
[ale01@login hpcg-tutorial]$ ls hasil hpcg.dat xhpcg-3.1
User harus membuat SLURM submission script yang berisikan alokasi resources (CPU, GPU, RAM, waktu, dkk) dan alur jalannya program. Langkah membuat SLURM submission script akan dijelaskan di bagian berikutnya. Pada contoh ini, user membuat SLURM submission script bernama 'slurm-hpcgnvidia'.
[ale01@login hpcg-tutorial]$ ls hasil hpcg.dat slurm-hpcgnvidia xhpcg-3.1
Jalankan SLURM submission script dengan perintah sbatch. Perhatikan bahwa SLURM menjalankan job user dengan nomor ID 231.
[ale01@login hpcg-tutorial]$ sbatch slurm-hpcgnvidia Submitted batch job 231
User dapat melihat status jalannya job dengan perintah squeue. Perhatikan bahwa job ID 231 sedang berjalan.
[ale01@login hpcg-tutorial]$ squeue -l Mon Mar 22 10:43:22 2021 JOBID PARTITION NAME USER STATE TIME TIME_LIMI NODES NODELIST(REASON) 230 epyc HPLBLIS ale02 RUNNING 9:42 20:00:00 1 epyc01 229 epyc HPLBLIS ale02 RUNNING 10:46 20:00:00 1 epyc02 231 gpu_amper slurm-hp ale01 RUNNING 2:00 1:00:00 1 gpu1
Job selesai bila sudah tidak terlihat di daftar squeue. User dapat mengatur konfigurasi file output di SLURM submission script seperti contoh dibawah ini (output result-231.err dan result-231.out).
[ale01@login hpcg-tutorial]$ ls hasil hpcg.dat result-231.err slurm-hpcgnvidia HPCG-Benchmark_3.1_2021-03-22_10-43-30.txt hpcg_log_2021.03.22.10.41.25.txt result-231.out xhpcg-3.1
Perintah Esensial SLURM
Berikut adalah perintah esensial bagi user untuk menggunakan SLURM:
Perintah | Penjelasan |
---|---|
$ sbatch <slurm-submission-script> |
Mengirim SLURM submission script untuk dijalankan di SLURM. |
$ squeue |
Melihat status dan antrian semua komputasi. Tambahan opsi:
|
$ scancel <job-ID> |
Membatalkan job. Misalkan pada contoh diatas dengan job ID 231:
$ scancel 231 |
SLURM Submission Script
SLURM submission script adalah bash-script yang bertujuan untuk menjalankan program komputasi melalui SLURM. Terdapat 4 komponen penting pada SLURM submission script:
- Header #!/bin/bash untuk bash script.
- Parameter alokasi resources CPU, memori, waktu, output, dll dengan SBATCH.
- Pengaturan Module Environment untuk memuat software yang dibutuhkan.
- Alur perintah untuk menjalankan komputasi user.
Resources HPC Aleleon Mk.II
Sebelum menggunakan SLURM, user harus mengetahui spesifikasi dan limitasi hardware dari HPC Aleleon Mk.II dimana dijelaskan pada tabel dibawah ini.
Partisi | Keterangan | Jumlah Node | Jumlah Core CPU per node | Jumlah RAM per node | Jumlah GPU per node |
---|---|---|---|---|---|
epyc (DEFAULT) | compute node utama CPU | 3 | 128 | 250GB | 0 |
gpu_ampere | compute node GPU | 1 | 128 | 125GB | 2 |
Parameter Resources SBATCH Esensial
Terdapat ratusan parameter SBATCH untuk SLURM. User dapat melihat daftar lengkap parameter SBATCH untuk SLURM HPC Aleleon Mk.II pada laman daftar parameter SBATCH SLURM ini. Berikut adalah daftar parameter SBATCH basis yang esensial:
Parameter | Penjelasan |
---|---|
#SBATCH --ntasks=<cpu-cores> | Jumlah alokasi cores CPU per node. Contoh mengalokasikan 64 core CPU:
$SBATCH --ntasks=64 |
#SBATCH --mem=<mem-capacity> | Jumlah alokasi memori RAM. User bisa menetapkan satuan apapun namun kami merekomendasikan satuan GB. Contoh mengalokasikan memori 64GB:
$SBATCH --mem=64GB |
#SBATCH --time=<walltime> | Walltime (waktu maksimal) yang dialokasikan untuk job user. Walltime maksimal saat ini untuk HPC Aleleon Mk.II adalah 14 hari. Format waktu <walltime> yang digunakan:
|
Berikut adalah parameter khusus untuk menggunakan GPU node:
Parameter | Penjelasan |
---|---|
#SBATCH --partition=gpu_ampere | Memasukkan komputasi ke partisi GPU (yaitu bernama gpu_ampere) |
#SBATCH --gres=gpu:<jumlah-GPU> | Contoh menggunakan 2 GPU:
$SBATCH --gres=gpu:2 |
Berikut adalah parameter esensial untuk output komputasi:
Parameter | Penjelasan |
---|---|
#SBATCH --output=<output-file> | Merekap output terminal dari program user. Terdapat variabel spesial yaitu %j untuk merekap JOB ID. Format file dibebaskan. Contoh:
$SBATCH --output=hasil-%j.out |
#SBATCH --error=<error-file> | Merekap output verbose program, berguna untuk melakukan troubleshooting dikala program user tidak berjalan. Contoh:
#SBATCH --error=hasil-%j.err |
Parameter SBATCH khusus lainnya untuk menjalankan threading OpenMP dan paralel multi-node akan dijelaskan pada bagian berikutnya.
Apakah Terdapat Aturan Mengatur Konfigurasi SBATCH?
User dibebaskan untuk mengisi parameter SBATCH selama tidak melebihi nilai maksimal (seperti CPU core maksimal 128) atau nilai yang salah. Tidak terdapat aturan seperti alokasi CPU / RAM harus mengikuti nilai the power of two. User bisa saja memasukkan alokasi CPU dan RAM yang 'tidak wajar' seperti 17 core CPU dan 41GB RAM.
Bila terjadi kesalahan parameter SLURM, user tetap bisa melakukan sbatch namun job tidak akan berjalan (tidak muncul di squeue). Adalah praktek yang baik untuk selalu menyertakan parameter #SBATCH --error supaya terdapat log ketika job tidak berjalan via SLURM.
Contoh SLURM Submission Script
SLURM Satu Node (Single Node)
#!/bin/bash #SBATCH --ntasks=128 #SBATCH --mem=16GB #SBATCH --time=00:10:00 #SBATCH --output=result-%j.out #SBATCH --error=result-%j.err java -jar hwbotprime.jar -q
SLURM Satu Node MPI (Single Node)
#!/bin/bash #SBATCH --ntasks=64 #SBATCH --mem=8GB #SBATCH --time=1:00:00 #SBATCH --output=result-%j.out #SBATCH --error=result-%j.err # MODULE module load openmpi # RUN COMMAND mpirun -n 64 ./hellompi
Perhatikan bahwa jumlah task mpirun tidak boleh melebihi ntasks pada SBATCH.