Submit Script ALELEON Supercomputer
Halaman ini menjelaskan panduan memahami Submit Script yang merupakan 'formulir' untuk menjalankan komputasi ke Compute Node menggunakan sistem manajemen Slurm.
Struktur Submit Script
Submit Script mempunyai 4 bagian utama:
- Header #!/bin/bash karena script ini ditulis dengan bahasa bash.
- Parameter SBATCH untuk mengalokasikan resources job seperti CPU, RAM, GPU, time, dll.
- User menentukan sendiri jumlah alokasi komputasi (CPU, RAM, GPU, time limit) yang akan dipakai asalkan tidak melebihi limit.
- Apabila butuh, memuat modul software untuk menjalankan komputasi user dengan Module Environment
- Alur perintah jalannya program user.
Parameter SBATCH esensial
Parameter SBATCH berfungsi untuk mengatur alokasi komputasi (CPU, RAM, GPU, time limit) dan output program. SLURM mempunyai ratusan opsi untuk parameter SBATCH dimana tutorial ini memberikan daftar SBATCH yang esensial untuk menjalankan komputasi di ALELEON Supercomputer.
Format Penulisan SBATCH
SBATCH ditulis dengan format #SBATCH --[nama-parameter]=[nilai]
sesuai contoh berikut:
# --- Contoh penulisan SBATCH yang benar
#SBATCH --ntasks=32
#SBATCH --mem=64GB
#SBATCH --time=01:00:00
#SBATCH --output=result-%j.txt
#SBATCH --error=error-%j.txt
# --- Contoh penulisan SBATCH yang salah
#SBATCH --ntasks = 32
#SBATCH --mem= 64GB
#SBATCH --mem = 64 GB
#SBATCH --partition
Menentukan jenis partisi (Compute Node) untuk menjalankan job komputasi user. ALELEON Supercomputer mempunyai 2 partisi Compute Node:
Partisi Compute Node | Menulis SBATCH |
---|---|
epyc (Compute Node CPU) | Merupakan partisi default
|
ampere (Compute Node GPU) | #SBATCH --partition=ampere
|
#SBATCH --ntasks, --mem, dan --gpus
ntasks, mem, dan gpus adalah parameter SBATCH utama untuk menentukan alokasi komputasi.
- ntasks -> alokasi jumlah core CPU. ALELEON Supercomputer mengaktifkan SMT (Simultaneous Multithreading) pada semua CPU sehingga ntasks mendefinisikan jumlah core thread CPU.
- mem -> alokasi jumlah memori RAM. Ditulis dengan satuan memori GB (Gigabyte).
- gpus -> alokasi jumlah GPU.
Berikut adalah panduan nilai maksimal parameter untuk beberapa skenario penggunaan:
Skenario Penggunaan | Nilai maksimal | ||
---|---|---|---|
ntasks (CPU) | mem (RAM) | gpus (GPU) | |
Akumulasi concurrent job fair policy usage1 | 128 | 128GB | 2 |
Job non-MPI di epyc (Compute Node CPU)2 | 128 | 240GB | 0 |
Job MPI di epyc (Compute Node CPU)3 | 384 | 240GB | 0 |
Semua jenis job di high-mem node epyc4 | 128 | 500GB | 0 |
Semua jenis job di ampere (Compute Node GPU)5 | 32 | 120GB | 2 |
Tim admin dapat membantu user untuk membedakan program MPI dan non-MPI.
|
Keterangan:
- Limitasi fair policy usage untuk menjaga kualitas layanan ALELEON Supercomputer.
- User dapat mengajukan permintaan membuka limitasi apabila job membutuhkan alokasi lebih.
- Info lebih detail lihat laman Limitasi Fair Usage ALELEON Supercomputer
- Program non-MPI hanya dapat berjalan satu node (maks 128 core di epyc dan 32 core di ampere).
- Program MPI dapat berjalan multi-node (parallel computing) pada Partisi epyc yaitu lebih dari 128 core
- Pada jumlah ntasks >128, SLURM otomatis menjalankan job secara multi-node.
- Dalam kaitan ini, parameter mem adalah alokasi memori RAM per-node.
- Info lebih detail lihat laman MPI ALELEON Supercomputer.
- Partisi epyc mempunyai satu node dengan jumlah memori 500GB yaitu epyc001.
- Tambahkan parameter
#SBATCH --nodelist=epyc001
- Tambahkan parameter
- Jangan lupa untuk menggunakan compute node GPU, tambahkan parameter
#SBATCH --partition=ampere
#SBATCH --time
Alokasi waktu maksimal untuk menjalankan job. Ditulis dengan format HH:MM:SS atau D-HH:MM:SS. ALELEON Supercomputer mengizinkan time maksimal 3 hari per job (72:00:00 atau 3-00:00:00).
- SLURM akan menghentikan job apabila berjalan melebihi time yang dialokasikan,
- SLURM akan menahan job (status PENDING) apabila ntasks * time yang dialokasikan lebih besar dari sisa Core Hour user.
- Untuk mengetahui sisa Core Hour, jalankan perintah
sausage
pada terminal.
#SBATCH --output
SBATCH output membuat file untuk merekap output terminal jalannya program. User mendefinisikan nama dan format file.
- Terdapat pola penamaan dari SLURM yaitu %j untuk merekap nomor Job ID.
- Format file dibebaskan (biasanya menggunakan .txt atau .out).
Template submit script pada wiki ini memberikan contoh penamaan #SBATCH --output=result-%j.txt
dimana ketika job berjalan (contoh) dengan job-ID 670, maka nama file output menjadi result-670.txt.
#SBATCH --error
SBATCH error membuat file untuk merekap output verbose program (status jalannya program dan error log ketika program gagal berjalan). File SBATCH error bermanfaat untuk melakukan troubleshooting ketika program gagal berjalan. Apabila membutuhkan support, admin biasanya akan meminta file output dari SBATCH error ini. Pola penamaan mengikuti SBATCH output di atas.
SBATCH untuk notifikasi email SLURM
SLURM ALELEON Supercomputer dapat mengirim notifikasi email kepada user dengan nama "Jojo" untuk mengabarkan status berjalannya job komputasi user. Silahkan tambahan SBATCH berikut pada submit script apabila user ingin menerima notifikasi email dari SLURM:
#SBATCH --mail-user=<alamat-email-user>
#SBATCH --mail-type=BEGIN,END,FAIL
SBATCH mail-type mengatur konten email notifikasi SLURM dengan pilihan opsi yang sekiranya berguna untuk user:
- BEGIN -> notifikasi job sudah mulai
- END -> notifikasi job sudah selesai beserta cuplikan 20 baris terakhir dari file SBATCH output dan error.
- FAIL -> notifikasi apabila job gagal berjalan atau berhenti tidak sewajarnya.
- TIME_LIMIT_50 -> job telah berjalan dengan durasi waktu 50% time limit.
- TIME_LIMIT_80 -> job telah berjalan dengan durasi waktu 80% time limit.
SBATCH lainnya untuk job MPI
Dalam menjalankan job MPI, user dapat menggunakan parameter SBATCH yang lebih kompleks seperti nodes
(alokasi jumlah node), mem-per-cpu
(alokasi jumlah RAM per core CPU), mem-per-gpu
(alokasi jumlah RAM per GPU). cpus-per-task
(alokasi jumlah core per proses MPI untuk skenario hybrid MPI / OMP job), dan lain-lainnya. Info lebih detail lihat laman MPI ALELEON Supercomputer
Memuat Software dengan module load
Perintah module load
(bagian dari Module Environment untuk memuat modul software) pada Submit Script berfungsi supaya Compute Node dapat menjalankan software yang dibutuhkan job user.
module load <nama-modul-software>
Keterangan:
- Tulis
module load
sebelum menulis script alur jalannya program.
- Template Submit Script pada masing-masing tutorial software komputasi di laman Daftar Software Komputasi dan Tutorial Penggunaan dapat memandu memilih modul software yang tepat.
- Daftar modul software yang lengkap dirangkum pada laman Katalog Software ALELEON Supercomputer.