Submit Script ALELEON Supercomputer: Perbedaan antara revisi

Dari ALELEON by EFISON
k (WilsonLisan memindahkan halaman Scheduler SLURM Aleleon ke Manajemen SLURM Aleleon: Mengganti scheduler menjadi manajemen)
(major changes meringkas penjelasan slurm dan mengubah posisi poin)
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 manajemen untuk mengantarkan dan mengatur antrian 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.  
[[Berkas:Slurmm.png|pus|nirbing|700x700px]]


== '''Alur Penggunaan SLURM untuk Job Submission''' ==
=='''Alur Penggunaan SLURM''' ==
Pada contoh berikut, user akan menjalankan komputasi HPCG ke Compute Node dengan nama program '''<nowiki/>''''xhpcg-3.1':
Contoh, user akan menjalankan program bernama 'kerjaan-skripsi'. User membuat '''SLURM submission script''' untuk menjalankan program 'kerjaan-skripsi' di Compute Node.
[ale01@login hpcg-tutorial]$ ls
 
hasil  hpcg.dat  '''xhpcg-3.1'''
* Ada baiknya SLURM submission script ditaruh pada satu direktori dengan program yang akan dijalankan.
User harus membuat '''SLURM submission script''' yang berisikan alokasi resources (CPU, GPU, RAM, waktu, dkk) dan alur jalannya program (pada contoh ini, xhpcg-3.1). Langkah membuat SLURM submission script akan dijelaskan di bagian berikutnya. Pada contoh ini, user membuat SLURM submission script bernama ''''slurm-hpcgnvidia'''<nowiki/>'.
* Penamaan SLURM submission script bisa bebas dimana pada contoh ini bernama 'slurm-skripsi'.  
  [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.  
  [olala01@login myjob]$ ls
  [ale01@login hpcg-tutorial]$ sbatch slurm-hpcgnvidia
  kerjaan-skripsi '''slurm-skripsi'''
Jalankan SLURM submission script tersebut dengan perintah '''sbatch'''. Perhatikan bahwa user akan mendapatkan nomor ID dari job tersebut.  
  [olala01@login myjob]$ '''sbatch slurm-skripsi'''
  Submitted batch job 231
  Submitted batch job 231
User dapat melihat status jalannya job dengan perintah '''squeue'''. Perhatikan bahwa job ID 231 sedang berjalan.
User dapat melihat status jalannya job masing-masing dengan perintah '''squeue -u $USER'''.  
  [ale01@login hpcg-tutorial]$ squeue -l
  [ale01@login hpcg-tutorial]$ '''squeue -u $USER'''
  Mon Mar 22 10:43:22 2021
  Mon Mar 22 10:43:22 2021
               JOBID PARTITION    NAME    USER   STATE       TIME TIME_LIMI  NODES NODELIST(REASON)
               JOBID PARTITION    NAME    USER ST       TIME   NODES NODELIST(REASON)
                230      epyc  HPLBLIS    ale02  RUNNING      9:42  20:00:00      1 epyc01
                 231 gpu_amper slurm-sc olala01  R       2:00       1 epyc01
                229      epyc  HPLBLIS    ale02  RUNNING      10:46  20:00:00      1 epyc02
Job selesai bila sudah tidak terlihat di daftar squeue. Lihat apakah job menghasilkan output yang diinginkan atau tidak.
                 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
  [ale01@login hpcg-tutorial]$ ls
  hasil                                      hpcg.dat                          result-231.err slurm-hpcgnvidia
  kerjaan-skripsi slurm-skripsi result-231.out  result-231.err
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
Apabila user ingin membatalkan program yang tengah berjalan via SLURM, gunakan perintah '''scancel''' job ID:
 
[olala01@login myjob]$ '''scancel 231'''
== '''Perintah Esensial SLURM''' ==
Untuk merangkum alur diatas, berikut adalah daftar perintah yang esensial pada SLURM:
Berikut adalah perintah esensial bagi user untuk menggunakan SLURM:  
{| class="wikitable"
{| class="wikitable"
|+Perintah esensial penggunaan SLURM
!Perintah
!Perintah
!Penjelasan
!Penjelasan
Baris 38: Baris 39:


* squeue -l : squeue dengan info lengkap
* squeue -l : squeue dengan info lengkap
* squeue -u $USER : squeue untuk job user saja
* squeue -u $USER : squeue untuk job masing-masing user
|-
|-
|
|
  $ scancel <job-ID>
  $ scancel <job-ID>
|Membatalkan job. Misalkan pada contoh diatas dengan job ID 231:
|Membatalkan job SLURM yang sedang berjalan
$ scancel 231
|}
|}


== '''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 berisikan alokasi resources (CPU, RAM, waktu, output, dll) dan alur jalannya program'''. Terdapat 4 komponen penting pada SLURM submission script:  


[[Berkas:Contoh_SLURM.png|al=|nirbing|578x578px]]
[[Berkas:Contoh SLURM updated.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'''.
Baris 82: Baris 82:


=== '''Parameter Resources SBATCH Esensial''' ===
=== '''Parameter Resources SBATCH Esensial''' ===
Berikut adalah daftar parameter SBATCH basis yang esensial:  
Berikut adalah daftar parameter SBATCH basis yang esensial untuk '''menjalankan job di compute node CPU AMD EPYC:'''
{| class="wikitable"
{| class="wikitable"
|+Parameter SBATCH SLURM basic
|+Parameter esensial SBATCH SLURM untuk menjalankan job di [[Partisi Aleleon Mk.II|compute node CPU (partisi epyc)]]
!Parameter
!Parameter
!Penjelasan
!Penjelasan
|-
|-
|#SBATCH --ntasks=<cpu-cores>
|#SBATCH --ntasks=<cpu-cores>
|Jumlah alokasi cores CPU yang akan dipakai. Contoh mengalokasikan 64 core CPU:  
|Jumlah alokasi cores CPU yang akan dipakai. Contoh mengalokasikan 64 core CPU:
$SBATCH --ntasks=64
<nowiki>#</nowiki>SBATCH --ntasks=64
|-
|-
|#SBATCH --mem=<mem-capacity>
|#SBATCH --mem=<mem-capacity>
|Jumlah alokasi memori RAM. User bisa menetapkan satuan apapun namun kami merekomendasikan satuan GB. Contoh mengalokasikan memori 64GB:
|Jumlah alokasi memori RAM. User bisa menetapkan satuan apapun namun kami merekomendasikan satuan GB. Contoh mengalokasikan memori 64GB:
$SBATCH --mem=64GB
<nowiki>#</nowiki>SBATCH --mem=64GB
|-
|-
|#SBATCH --time=<walltime>
|#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:  
|Waktu maksimal yang dialokasikan untuk job. Walltime maksimal yang diizinkan saat ini 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 untuk output komputasi:
{| class="wikitable"
|+Parameter SBATCH SLURM untuk output
!Parameter
!Penjelasan
|-
|-
|#SBATCH --output=<output-file>
|#SBATCH --output=<output-file>
|Merekap output terminal dari program user. Terdapat variabel spesial yaitu %j untuk merekap JOB ID. Format file dibebaskan. Contoh:
|Merekap output terminal dari program user. Terdapat variabel spesial yaitu %j untuk merekap JOB ID. Format file dibebaskan. Contoh:
$SBATCH --output=hasil-%j.out
<nowiki>#</nowiki>SBATCH --output=hasil-%j.out
|-
|-
|#SBATCH --error=<error-file>
|#SBATCH --error=<error-file>
|Merekap output verbose program, berguna untuk melakukan troubleshooting dikala program user tidak berjalan. Contoh:
|Merekap output verbose program, berguna untuk melakukan troubleshooting dikala program user tidak berjalan. Contoh:
#SBATCH --error=hasil-%j.err
<nowiki>#</nowiki>SBATCH --error=hasil-%j.err
|}
Tambahkan parameter berikut apabila ingin '''menjalankan job di compute node GPU NVIDIA Ampere:''' 
{| class="wikitable"
|+Parameter SBATCH SLURM untuk menjalankan job di [[Partisi Aleleon Mk.II|compute node GPU (partisi gpu_ampere)]]
!Paramater
!Penjelasan
|-
|#SBATCH --partition=gpu_ampere
|Memasukan job ke compute node GPU
|-
|#sbatch --gres=gpu:<jumlah-GPU>
|Contoh menggunakan 2 GPU:
$SBATCH --gres=gpu:2
|}
|}
Parameter SBATCH khusus lainnya untuk mengakses GPU Node, threading OpenMP, paralel multi-node akan dijelaskan pada bagian berikutnya.
Apabila terjadi kesalahan parameter SLURM, user tetap bisa melakukan sbatch namun job tidak berjalan (tidak muncul di squeue). User dapat melihat pesan error pada file output .err yang dihasilkan dari #SBATCH --error.
 
=== '''Apakah Terdapat Aturan Mengatur Konfigurasi SBATCH?''' ===
User dibebaskan untuk mengisi parameter SBATCH selama tidak melebihi nilai maksimal (seperti CPU maksimal 128) atau nilai yang salah. Tidak terdapat aturan seperti alokasi CPU / RAM 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 Satu Node CPU''' ==
== '''Contoh SLURM Submission Script Satu Node CPU''' ==
Baris 252: Baris 253:


== '''Contoh SLURM Submission Script GPU''' ==
== '''Contoh SLURM Submission Script GPU''' ==
Berikut adalah parameter khusus untuk menggunakan GPU node dimana user akan menjalankan komputasi di partisi khusus GPU bernama '''gpu_ampere'''.
Contoh SLURM Submission script dengan 2 GPU, 16 CPU, dan RAM 32GB:
{| 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
|}
Contoh lengkap SLURM Submission script dengan 2 GPU, 16 CPU, dan RAM 32GB:  
  #!/bin/bash
  #!/bin/bash
   
   
Baris 292: Baris 280:
|+Daftar STATE yang biasa muncul
|+Daftar STATE yang biasa muncul
!STATE
!STATE
!Singkatan
!Kepanjangan
!Penjelasan
!Penjelasan
|-
|-

Revisi per 10 Mei 2021 10.01

SLURM adalah software manajemen untuk mengantarkan dan mengatur antrian 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.

Slurmm.png

Alur Penggunaan SLURM

Contoh, user akan menjalankan program bernama 'kerjaan-skripsi'. User membuat SLURM submission script untuk menjalankan program 'kerjaan-skripsi' di Compute Node.

  • Ada baiknya SLURM submission script ditaruh pada satu direktori dengan program yang akan dijalankan.
  • Penamaan SLURM submission script bisa bebas dimana pada contoh ini bernama 'slurm-skripsi'.


[olala01@login myjob]$ ls
kerjaan-skripsi  slurm-skripsi

Jalankan SLURM submission script tersebut dengan perintah sbatch. Perhatikan bahwa user akan mendapatkan nomor ID dari job tersebut.

[olala01@login myjob]$ sbatch slurm-skripsi
Submitted batch job 231

User dapat melihat status jalannya job masing-masing dengan perintah squeue -u $USER.

[ale01@login hpcg-tutorial]$ squeue -u $USER
Mon Mar 22 10:43:22 2021
             JOBID PARTITION     NAME     USER  ST       TIME   NODES NODELIST(REASON)
               231 gpu_amper slurm-sc  olala01   R       2:00       1 epyc01

Job selesai bila sudah tidak terlihat di daftar squeue. Lihat apakah job menghasilkan output yang diinginkan atau tidak.

[ale01@login hpcg-tutorial]$ ls
kerjaan-skripsi  slurm-skripsi  result-231.out  result-231.err 

Apabila user ingin membatalkan program yang tengah berjalan via SLURM, gunakan perintah scancel job ID:

[olala01@login myjob]$ scancel 231

Untuk merangkum alur diatas, berikut adalah daftar perintah yang esensial pada SLURM:

Perintah esensial penggunaan SLURM
Perintah Penjelasan
$ sbatch <slurm-submission-script>
Mengirim SLURM submission script untuk dijalankan di SLURM.
$ squeue
Melihat status dan antrian semua komputasi. Tambahan opsi:
  • squeue -l : squeue dengan info lengkap
  • squeue -u $USER : squeue untuk job masing-masing user
$ scancel <job-ID>
Membatalkan job SLURM yang sedang berjalan

SLURM Submission Script

SLURM submission script adalah bash-script yang berisikan alokasi resources (CPU, RAM, waktu, output, dll) dan alur jalannya program. Terdapat 4 komponen penting pada SLURM submission script:

  1. Header #!/bin/bash untuk bash script.
  2. Parameter alokasi resources CPU, memori, waktu, output, dll dengan SBATCH.
  3. Pengaturan Module Environment untuk memuat software yang dibutuhkan.
  4. 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 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 CPU 3 128 250GB 0
gpu_ampere compute node GPU 1 128 125GB 2

Parameter Resources SBATCH Esensial

Berikut adalah daftar parameter SBATCH basis yang esensial untuk menjalankan job di compute node CPU AMD EPYC:

Parameter esensial SBATCH SLURM untuk menjalankan job di compute node CPU (partisi epyc)
Parameter Penjelasan
#SBATCH --ntasks=<cpu-cores> Jumlah alokasi cores CPU yang akan dipakai. 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> Waktu maksimal yang dialokasikan untuk job. Walltime maksimal yang diizinkan saat ini adalah 14 hari. Format waktu <walltime> yang digunakan:
  • 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
#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

Tambahkan parameter berikut apabila ingin menjalankan job di compute node GPU NVIDIA Ampere:

Parameter SBATCH SLURM untuk menjalankan job di compute node GPU (partisi gpu_ampere)
Paramater Penjelasan
#SBATCH --partition=gpu_ampere Memasukan job ke compute node GPU
#sbatch --gres=gpu:<jumlah-GPU> Contoh menggunakan 2 GPU:

$SBATCH --gres=gpu:2

Apabila terjadi kesalahan parameter SLURM, user tetap bisa melakukan sbatch namun job tidak berjalan (tidak muncul di squeue). User dapat melihat pesan error pada file output .err yang dihasilkan dari #SBATCH --error.

Contoh SLURM Submission Script Satu Node CPU

SLURM Satu Node

Program akan berjalan dengan jumlah core CPU dan RAM yang definisikan pada parameter SBATCH ntasks dan mem. Contoh lengkap SLURM submission script dengan CPU 128 threads dan RAM 16GB:

#!/bin/bash

#SBATCH --ntasks=128
#SBATCH --mem=16GB
#SBATCH --time=00:10:00
#SBATCH --output=result-%j.out
#SBATCH --error=result-%j.err

# MODULE 
# module load software yang dibutuhkan

# RUN COMMAND
# run command software...

SLURM Satu Node MPI

User hendaknya menggunakan modul MPI default yang direkomendasikan admin EFISON:

$ module load openmpi

Perhatikan bahwa jumlah task mpirun tidak boleh melebihi ntasks pada SBATCH. Selain itu, masukkan parameter UCX pada perintah mpirun untuk memanfaatkan protokol UCX (Unified Communication X) guna mendapatkan performa lebih:

--mca pml ucx --mca osc ucx

Contoh lengkap SLURM submission script dengan CPU 64 core, RAM 32GB, dan proses MPI 64:

#!/bin/bash

#SBATCH --ntasks=64
#SBATCH --mem=32GB
#SBATCH --time=1:00:00
#SBATCH --output=result-%j.out
#SBATCH --error=result-%j.err

# MODULE
module load openmpi
# dan module load lain yang dibutuhkan

# RUN COMMAND
mpirun -np 64 --mca pml ucx --mca osc ucx <program-MPI...>

SLURM Satu Node MPI + OpenMP

Contoh: user ingin menggunakan 128 threads CPU dengan pembagian 16 MPI processes dam 8 OMP thread per MPI (Total CPU terpakai = MPI x OMP. Penjelasan lebih detail kunjungi Hybrid MPI dan OMP). Pada SLURM, user mendeklarasikan variabel OMP melalui parameter SLURM_CPUS_PER_TASK dan SBATCH cpus-per-task.

Parameter SBATCH SLURM untuk OpenMP / Hybrid
Parameter Penjelasan
#SBATCH --cpus-per-task=<cpu-task> Jumlah komputasi CPU per ntask. Bila diterapkan ke MPI-OMP artinya jumlah OMP per MPI.

Berikut adalah contoh lengkap SLURM submission script dengan 16 proses MPI, 8 OMP per MPI, dan RAM 128GB. Perhatikan bahwa jumlah proses MPI mengikuti ntasks.

#!/bin/bash

#SBATCH --ntasks=16
#SBATCH --cpus-per-task=8
#SBATCH --mem=128GB
#SBATCH --time=1-00:00:00
#SBATCH --output=result-%j.out
#SBATCH --error=result-%j.err

# MODULE
module load openmpi
# dan modul lain yang dibutuhkan

# RUN COMMAND
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
mpirun -np 16 --mca pml ucx --mca osc ucx <program-MPI...>

Contoh SLURM Submission Script Banyak Node CPU

Pada HPC, program dengan dukungan komputasi paralel (seperti MPI dan ekstensi lib. paralel lainnya) dapat dijalankan secara paralel dengan banyak node sekaligus. SLURM menggunakan parameter SBATCH nodes dan ntasks-per-node untuk menjalankan komputasi paralel banyak node.

Parameter SBATCH SLURM untuk banyak node
Parameter Penjelasan
#SBATCH --nodes=<nodes> Jumlah node yang akan dipakai.
#SBATCH --ntasks-per-node=<cpu-cores> Jumlah ntasks per node.

Sementara itu jumlah memori yang dideklarasikan (SBATCH mem) adalah dan sudah otomatis per node (sehingga nilai maksimal 250GB). Tidak ada parameter total mem atau mem-per-node.

SLURM Banyak Node MPI

Perhatikan bahwa total task MPI task adalah nodes X ntasks-per-node. Contoh ketika user ingin menggunakan 2 node, 128 threads per node, dan RAM 192GB per node maka konfigurasi SBATCH menjadi:

#SBATCH --nodes=2
#SBATCH --ntasks-per-node=128
#SBATCH --mem=192GB

Total proses MPI dari konfigurasi tersebut adalah 2 x 128 = 256 proses MPI. Berikut adalah contoh lengkap SLURM submission script untuk menjalankan konfigurasi diatas:

#!/bin/bash

#SBATCH --nodes=2
#SBATCH --ntasks-per-node=128
#SBATCH --mem=192GB
#SBATCH --time=10:00:00
#SBATCH --output=chem-%j.out
#SBATCH --error=chem-%j.out

# MODULE
module load openmpi
# atau modul lain yang dibutuhkan

# RUN COMMAND
mpirun -np 256 --mca pml ucx --mca osc ucx <program-MPI...>

SLURM Banyak Node MPI + OpenMP

Kita gunakan contoh MPI + OpenMP sebelumnya dengan 16 ntasks dan 8 cpus-per-task (16 proses MPI dan 8 OMP per MPI) per node. Bila dijalankan 2 node misalnya, maka parameter akan menjadi:

#SBATCH --nodes=2
#SBATCH --ntasks-per-node=16
#SBATCH --cpus-per-task=8

Total proses MPI tetap mengikuti aturan nodes x ntasks-per-node yaitu 2 x 16 = 32 proses MPI. Contoh lengkap SLURM submission script:

#!/bin/bash

#SBATCH --nodes=2
#SBATCH --ntasks-per-node=16
#SBATCH --cpus-per-task=8
#SBATCH --mem=128GB
#SBATCH --time=1-00:00:00
#SBATCH --output=result-%j.out
#SBATCH --error=result-%j.err

# MODULE
module load openmpi
# atau modul yang dibutuhkan

# RUN COMMAND
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
mpirun -np 32 --mca pml ucx --mca osc ucx <program-MPI...>

Contoh SLURM Submission Script GPU

Contoh SLURM Submission script dengan 2 GPU, 16 CPU, dan RAM 32GB:

#!/bin/bash

#SBATCH --partition=gpu_ampere
#SBATCH --gres=gpu:2
#SBATCH --ntasks=16
#SBATCH --mem=32GB
#SBATCH --time=1:00:00
#SBATCH --output=result-%j.out
#SBATCH --error=result-%j.err

# MODULE
# module load yang dibutuhkan

# RUN COMMAND
# run command software...

Contoh SLURM Submission Script Software Spesifik

Terdapat software yang membutuhkan contoh SLURM submission script spesifik supaya dapat berjalan dengan baik. Kunjungi Software di HPC Aleleon Mk.II.

Membaca squeue

Sesuai penjelasan diatas, user dapat melihat status dan antrian jalannya program melalui perintah squeue.

Penjelasan bagian squeue

Info yang esensial untuk user adalah bagian STATE dan NODELIST(REASON). STATE (ST) memberikan kondisi jalannya program user sementara itu NODELIST(REASON) memberikan detail verbose status jalannya program user.

Daftar STATE yang biasa muncul
STATE Kepanjangan Penjelasan
R RUN Job berjalan
PD PENDING Job tertahan, lihat keterangan NODELIST
CG COMPLETING Job selesai dan dalam proses clean-up SLURM
CA CANCELED Job dibatalkan oleh user
PR PREEMPETED Job dibatalkan oleh sys-admin Aleleon, alasan akan dikabarkan melalui email
S SUSPENDED Job ditahan oleh sys-admin Aleleon

Pada saat job berjalan (RUNNING) maka NODELIST akan menampilkan info nama node tempat job berjalan. Sementara itu NODELIST akan memberikan alasan verbose pada saat job tidak berjalan (STATE selain RUNNING). Berikut adalah daftar NODELIST yang bisa terjadi di HPC Aleleon Mk.II:

Daftar NODELIST di HPC Aleleon Mk.II
NODELIST Penjelasan
Resources Job menunggu alokasi resources (CPU, RAM, GPU) yang dipesan oleh SLURM submission script user
AssocMaxWallDurationPerJobLimit Job tidak dapat berjalan karena melewati batas walltime maksimum partisi
QOSMaxCpuPerUserLimit Job melewati batas alokasi CPU user (lihat laman QOS User untuk penjelasan lebih lanjut).

User dapat melapor ke admin melalui email support@efisonlt.com apabila menjumpai NODELIST yang tidak terdapat pada daftar diatas ketika job user tidak berjalan.