Submit Script ALELEON Supercomputer: Perbedaan antara revisi

Dari ALELEON by EFISON
 
(16 revisi perantara oleh pengguna yang sama tidak ditampilkan)
Baris 1: Baris 1:
Halaman ini menjelaskan panduan memahami, membuat, dan mengisi SLURM Submit Script untuk melakukan job submission ke Compute Node.   
[[Berkas:Slurm.jpg|nirbing|400x400px]] 
 
Halaman ini menjelaskan panduan memahami '''Submit Script''' yang merupakan 'formulir' untuk menjalankan komputasi ke Compute Node menggunakan '''sistem manajemen Slurm'''.   


=='''Struktur Submit Script'''==
=='''Struktur Submit Script'''==
Secara umum, Submit Script atau SLURM Script dipecah menjadi 4 bagian penting.
Submit Script mempunyai 4 bagian utama:


[[Berkas:Slurmsubmitscript.png|al=|nirbing|500x500px]]
#Header '''#!/bin/bash''' karena script ini ditulis dengan '''bahasa bash'''.  
# Header '''#!/bin/bash''' karena Submit Script adalah bash script.
#'''Parameter SBATCH''' untuk mengalokasikan resources job seperti CPU, RAM, GPU, time, dll.
#'''Parameter SBATCH''' untuk mengalokasikan resources job seperti CPU, RAM, GPU, time, dll.
# Memuat modul software yang dibutuhkan untuk menjalankan komputasi user dengan '''[https://wiki.efisonlt.com/wiki/Module_Environment#Module_Environment_di_SLURM_Submit_Script Module Environment]'''.
#*''User menentukan sendiri jumlah alokasi komputasi (CPU, RAM, GPU, time limit) yang akan dipakai asalkan tidak melebihi limit.''
# Perintah utama untuk menjalankan program user.
# Apabila butuh, memuat modul software untuk menjalankan komputasi user dengan '''[https://wiki.efisonlt.com/wiki/Module_Environment#Module_Environment_di_SLURM_Submit_Script Module Environment]'''
{| class="wikitable"
# Alur perintah jalannya program user.
|'''Note:'''
 
*''Terdapat ratusan jenis [https://slurm.schedmd.com/sbatch.html parameter SBATCH pada SLURM] dari yang standar hingga kompleks.''  
[[Berkas:Slurmsubmitscript.png|al=|nir|jmpl|''Struktur dan contoh SLURM Submit Script'']]
* ''Pada halaman ini, admin EFISON merangkum parameter SBATCH yang esensial untuk menggunakan ALELEON Supercomputer.''
== '''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.


== '''Tanda ////''' ==
=== Format Penulisan SBATCH ===
Dalam membuat template SLURM Submit Script, admin EFISON menggunakan tanda 4 garing (////) untuk '''menandai bagian yang perlu diisi oleh user'''. Contoh terdapat bagian script untuk menaruh nama file input:  
SBATCH ditulis dengan format <code>'''#SBATCH --''[nama-parameter]''=''[nilai]'''''</code> sesuai contoh berikut<syntaxhighlight lang="bash">
  FILE_INPUT="'''////'''.in"
# --- Contoh penulisan SBATCH yang benar
Artinya user mengisi nama file input dengan menggantikan tanda //// di dalam braket tanda petik, contoh menjadi:  
#SBATCH --ntasks=32
FILE_INPUT="'''myskripsi'''.in"
#SBATCH --mem=64GB
#SBATCH --time=01:00:00
#SBATCH --output=result-%j.txt
#SBATCH --error=error-%j.txt


== '''SBATCH untuk Compute Node CPU (Partisi epyc)''' ==
# --- Contoh penulisan SBATCH yang salah
Berikut adalah daftar SBATCH yang esensial (dan biasanya akan ditemukan pada banyak template) untuk menjalankan komputasi di Compute Node CPU atau Partisi epyc.
#SBATCH --ntasks = 32
#SBATCH --mem= 64GB
#SBATCH --mem = 64 GB
</syntaxhighlight>
=== #SBATCH --partition ===
Menentukan jenis partisi (Compute Node) untuk menjalankan job komputasi user. ALELEON Supercomputer mempunyai 2 partisi Compute Node:
{| class="wikitable"
{| class="wikitable"
|+SBATCH Partisi epyc
!Partisi Compute Node
!SBATCH
!Menulis SBATCH
!Penjelasan
|-
|nodes
|Alokasi jumlah Compute Node CPU yang digunakan.
|-
|-
|
|'''epyc''' (Compute Node CPU)
|'''<code>#SBATCH --nodes=<jumlah-compute-node></code>'''
|Merupakan partisi default
* Contoh mengalokasikan 1 node:


<code>#SBATCH --nodes=1</code>
* user tidak perlu menulis SBATCH parameter untuk epyc
{| class="wikitable"
!Jumlah nodes maksimal
!3
|}
|-
|-
|
|'''ampere''' (Compute Node GPU)
|
|<code>#SBATCH --partition=ampere</code>
|}
|}
{| class="wikitable"
|+Penjelasan dan rentang nilai parameter SBATCH Partisi epyc
!Alokasi Komponen
!SBATCH
!Nilai MAKSIMAL
!Contoh penulisan
|-
|Jumlah Compute Node
| --nodes
|'''3'''
|<code>'''#SBATCH --nodes=1'''</code>
|-
| rowspan="2" |Jumlah Core thread CPU
| rowspan="2" | --ntasks
|
* '''128''' per node
* '''384''' total
|<code>'''#SBATCH --ntasks=64'''</code>
|-
| colspan="2" |Untuk menjalankan program parallel multi-node, lihat:


* [[MPI ALELEON Supercomputer#MPI%20Satu%20Node%20vs%20Multi%20Node|'''MPI Satu Node vs Multi Node''']].
=== #SBATCH --ntasks, --mem, dan --gpus ===
|-
ntasks, mem, dan gpus adalah parameter SBATCH utama untuk menentukan alokasi komputasi.
| rowspan="2" |Kapasitas RAM
 
| rowspan="2" | --mem
* '''ntasks''' -> alokasi jumlah '''core CPU.''' ALELEON Supercomputer mengaktifkan ''SMT (Simultaneous Multithreading)'' pada semua CPU sehingga ntasks mendefinisikan jumlah core thread CPU.
|'''240GB'''
* '''mem''' -> alokasi jumlah '''memori RAM'''. Ditulis dengan satuan memori GB (Gigabyte).
|<code>'''#SBATCH --mem=128GB'''</code>
* '''gpus''' -> alokasi jumlah '''GPU'''.  
|-
| colspan="2" |''Penulisan angka dan satuan digabung''
|-
| rowspan="2" |Walltime
| rowspan="2" | --time
|'''14-00:00:00'''
|<code>'''#SBATCH --time=08:00:00'''</code>
|-
| colspan="2" |''Format penulisan'' HH:MM:SS ''atau'' D-HH:MM:SS
|-
|Output terminal
| --output
| colspan="2" rowspan="2" |''Lihat penjelasan dibawah''
|-
|Output verbose
| --error
|}
'''Catatan penting:'''
* '''nodes'''
** Lihat tabel Dukungan Hardware pada [https://wiki.efisonlt.com/wiki/Katalog_Software_ALELEON_Supercomputer#Daftar_Software_Komputasi '''Daftar Software Komputasi'''] atau di halaman tutorial masing-masing software untuk menentukan apakah '''dapat berjalan multi-node (> 1 node) atau hanya single-node (1 node saja).'''
* '''ntasks'''  
** Berdasarkan arsiktektur CPU AMD yang digunakan ALELEON Supercomputer, user direkomendasikan untuk memilih jumlah ntasks berdasarkan kelipatan 4, dimulai dari 1,2,4, kemudian naik kelipatan 4 menjadi 8, 12, 16, 20, 24, 28, 32, 36, 40, dan seterusnya.
** Penghitungan kredit CPU Core Hour (CCH) berdasarkan jumlah ntasks yang didefinisikan user.


*'''output'''
Berikut adalah panduan nilai maksimal parameter untuk beberapa skenario penggunaan:
** Merekap '''output program yang keluar di terminal'''. User memberikan sendiri nama file (satu kata tanpa spasi) diikuti dengan format file seperti .txt atau .out yang sering digunakan.
** Terdapat pola penamaan dari SLURM yaitu '''%j''' yang merekap job-ID.
** Contoh penamaan output yang sering digunakan: '''<code>#SBATCH --output=result-%j.txt</code>'''
*** Apabila job berjalan dengan no. ID 2555, maka nama output menjadi '''result-2555.txt'''
*'''error'''
** Merekap '''output verbose program''' yaitu status jalannya program dan error log ketika program gagal selesai.
** Output error bermanfaat bagi user untuk melakukan troubleshooting disaat program gagal berjalan. Admin EFISON merekomendasikan user untuk selalu menggunakan parameter error ini.
** Format penamaan mengikuti parameter output diatas, contoh: '''<code>#SBATCH --error=error-%j.txt</code>'''
== '''SBATCH Partisi gpu_ampere / Compute Node GPU''' ==
# Alokasi GPU, core thread CPU, RAM, time limit, output program & error
'''#SBATCH --partition=gpu_ampere'''
'''#SBATCH --gres=gpu:////'''
#SBATCH --ntasks=////
#SBATCH --mem=////
#SBATCH --time=////
#SBATCH --output=////
#SBATCH --error=////
{| class="wikitable"
{| class="wikitable"
|+Penjelasan dan rentang nilai parameter SBATCH Partisi gpu_ampere
! rowspan="2" |Skenario Penggunaan
!Alokasi Komponen
! colspan="3" |Nilai maksimal
!SBATCH
!Nilai MAKSIMAL
!Contoh penulisan
|-
|-
|Compute Node GPU
!ntasks (CPU)
| --partition
!mem (RAM)
| colspan="2" |'''<code>#SBATCH --partition=gpu_ampere</code>'''
!gpus (GPU)
|-
|-
|Jumlah GPU
|Akumulasi ''concurrent'' job fair policy usage<sup>''1''</sup>  
| --gres=gpu:
|128
|'''3'''
|128GB
|'''<code>#SBATCH --gres=gpu:1</code>'''
|2
|-
|-
|Jumlah Core thread CPU  
|Job non-MPI di epyc (Compute Node CPU)''<sup>2</sup>''
| --ntasks
|128
|'''32'''
|240GB
|<code>'''#SBATCH --ntasks=16'''</code>
|0
|-
|-
| rowspan="2" |Kapasitas RAM
|Job MPI di epyc (Compute Node CPU)<sup>''3''</sup>  
| rowspan="2" | --mem
|384
|'''120GB'''
|240GB
|<code>'''#SBATCH --mem=64GB'''</code>
|0
|-
|-
| colspan="2" |''Penulisan angka dan satuan digabung''
|Semua jenis job di high-mem node epyc''<sup>4</sup>''
|128
|500GB
|0
|-
|-
| rowspan="2" |Walltime
|Semua jenis job di ampere (Compute Node GPU)''<sup>5</sup>''
| rowspan="2" | --time
|32
|'''14-00:00:00'''
|120GB
|<code>'''#SBATCH --time=08:00:00'''</code>
|2
|-
|-
| colspan="2" |''Format penulisan HH:MM:SS atau D-HH:MM:SS''
| colspan="4" |''Tim admin dapat membantu user untuk membedakan program MPI dan non-MPI.''
|-
* ''Daftar [[Daftar Software Komputasi dan Tutorial Penggunaan|'''software komputasi ALELEON''']] memberikan indikator program MPI atau non-MPI.''
|Output terminal
* ''Dapat pula menghubungi admin untuk diskusi melalui email '''support@efisonlt.com'''.''  
| --output
| colspan="2" rowspan="2" |''Lihat penjelasan dibawah''
|-
|Output verbose
| --error
|}
|}
'''Catatan penting:'''
'''''Keterangan:'''''
*'''gres=gpu:''<jumlah-GPU>'''''
# Limitasi '''fair policy usage''' untuk menjaga kualitas layanan ALELEON Supercomputer.
**Penghitungan kredit GPU Hour (GH) berdasarkan jumlah gres gpu yang didefinisikan user.
#* User dapat mengajukan permintaan membuka limitasi apabila job membutuhkan alokasi lebih.
* '''ntasks'''
#* Info lebih detail lihat laman [[Limitasi Fair Usage ALELEON Supercomputer|'''Limitasi Fair Usage ALELEON Supercomputer''']]
** Berdasarkan arsiktektur CPU AMD yang digunakan ALELEON Supercomputer, user direkomendasikan untuk memilih jumlah ntasks berdasarkan kelipatan 4, dimulai dari 1,2,4, kemudian naik kelipatan 4 menjadi 8, 12, 16, 20, 24, 28, 32.
# Program non-MPI hanya dapat berjalan satu node (maks 128 core di epyc dan 32 core di ampere).
** Penghitungan kredit CPU Core Hour (CCH) berdasarkan jumlah ntasks yang didefinisikan user.
# Program MPI dapat berjalan ''multi-node (parallel computing)'' pada Partisi epyc yaitu lebih dari 128 core
*'''output'''  
#* Pada jumlah ntasks >128, SLURM otomatis menjalankan job secara multi-node.
** Merekap '''output program yang keluar di terminal'''. User memberikan sendiri nama file (satu kata tanpa spasi) diikuti dengan format file seperti .txt atau .out yang sering digunakan.
#* Dalam kaitan ini, parameter mem adalah alokasi memori RAM per-node.
** Terdapat pola penamaan dari SLURM yaitu '''%j''' yang merekap job-ID.
#* Info lebih detail lihat laman [[MPI ALELEON Supercomputer|'''MPI ALELEON Supercomputer''']].
** Contoh penamaan output yang sering digunakan: '''<code>#SBATCH --output=result-%j.txt</code>'''
#Partisi epyc mempunyai satu node dengan jumlah memori 500GB yaitu epyc001.
*** Apabila job berjalan dengan no. ID 2555, maka nama output menjadi '''result-2555.txt'''
##Tambahkan parameter '''<code>#SBATCH --nodelist=epyc001</code>'''
*'''error'''
#Jangan lupa untuk menggunakan compute node GPU, tambahkan parameter '''<code>#SBATCH --partition=ampere</code>'''
** Merekap '''output verbose program''' yaitu status jalannya program dan error log ketika program gagal selesai.
=== #SBATCH --time ===
** Output error bermanfaat bagi user untuk melakukan troubleshooting disaat program gagal berjalan. Admin EFISON merekomendasikan user untuk selalu menggunakan parameter error ini.
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).  
** Format penamaan mengikuti parameter output diatas, contoh: '''<code>#SBATCH --error=error-%j.txt</code>'''
 
== '''SBATCH Notifikasi e-mail''' ==
* SLURM akan menghentikan job apabila berjalan melebihi time yang dialokasikan,
SLURM ALELEON Supercomputer dapat mengirim notifikasi email kepada user untuk mengabarkan apabila job user sudah berjalan atau selesai. SLURM ALELEON Supercomputer menggunakan nama email '''Jojo''' untuk mengirim notifikasi email. SBATCH notifikasi e-mail secara default ada pada semua template di Job Composer.
* SLURM akan menahan job (status PENDING) apabila '''ntasks * time yang dialokasikan lebih besar dari sisa Core Hour user'''.  
#SBATCH --mail-user=////
* Untuk mengetahui sisa Core Hour, jalankan perintah <code>'''sausage'''</code> pada terminal.
#SBATCH --mail-type=begin
 
#SBATCH --mail-type=end
=== #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 <code>'''#SBATCH --output=result-%j.txt'''</code> 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:  <syntaxhighlight lang="bash">
#SBATCH --mail-user=<alamat-email-user>
#SBATCH --mail-type=BEGIN,END,FAIL
</syntaxhighlight>SBATCH mail-type mengatur konten email notifikasi SLURM dengan pilihan opsi yang sekiranya berguna untuk user:


* '''mail-user'''
* BEGIN -> notifikasi job sudah mulai
** Alamat email user untuk menerima notifikasi SLURM
* END -> notifikasi job sudah selesai beserta cuplikan 20 baris terakhir dari file SBATCH output dan error.
* '''mail-type=begin'''
* FAIL -> notifikasi apabila job gagal berjalan atau berhenti tidak sewajarnya.
** Notifikasi email yang menginfokan job sudah mulai.
* TIME_LIMIT_50 -> job telah berjalan dengan durasi waktu 50% time limit.
* '''mail-type=end'''
* TIME_LIMIT_80 -> job telah berjalan dengan durasi waktu 80% time limit.
** Notifikasi email yang menginfokan job sudah selesai.
 
** Sekaligus memberikan cuplikan 20 baris terakhir dari SBATCH output dan error job user.
=== SBATCH lainnya untuk job MPI ===
Dalam menjalankan job MPI, user dapat menggunakan parameter SBATCH yang lebih kompleks seperti <code>nodes</code> (alokasi jumlah node), <code>mem-per-cpu</code> (alokasi jumlah RAM per core CPU), <code>mem-per-gpu</code> (alokasi jumlah RAM per GPU). <code>cpus-per-task</code> (alokasi jumlah core per proses MPI untuk skenario hybrid MPI / OMP job), dan lain-lainnya. Info lebih detail lihat laman [[MPI ALELEON Supercomputer|'''MPI ALELEON Supercomputer''']]


== '''Memuat Software dengan module load''' ==
== '''Memuat Software dengan module load''' ==
Untuk menjalankan software di Compute Node, user harus '''memuat software yang dibutuhkan melalui perintah module load pada Submit Script:'''  
Perintah <code>module load</code> (bagian dari [[Module Environment|'''Module Environment''']] untuk memuat modul software) pada Submit Script berfungsi supaya '''Compute Node dapat menjalankan software yang dibutuhkan job user.''' <syntaxhighlight lang="bash">
module load '''''nama-modul-software'''''
#!/bin/bash
 
# SBATCH ......
 
module load [nama-modul-software]
 
# Alur jalannya program ...
</syntaxhighlight>'''''Keterangan:'''''  


* Perintah module load harus ditaruh sebelum penulisan perintah menjalankan program.
* Tulis <code>module load</code> sebelum menulis script alur jalannya program.


* Template software komputasi sudah menyertakan module load yang diperlukan.
* Template Submit Script pada masing-masing tutorial software komputasi di laman [[Daftar Software Komputasi dan Tutorial Penggunaan|'''Daftar Software Komputasi dan Tutorial Penggunaan''']] dapat memandu memilih modul software yang tepat.
* Pada template umum (misalnya Default Template, MPI - Template Kosong, Python - Template Kosong, dll), user harus menulis sendiri module load yang dibutuhkan.  
* Daftar modul software yang lengkap dirangkum pada laman [[Katalog Software ALELEON Supercomputer|'''Katalog Software ALELEON Supercomputer''']].
* Daftar lengkap nama modul software dapat ditemukan pada [[Katalog Software ALELEON Supercomputer|'''Katalog Software ALELEON Supercomputer''']].

Revisi terkini sejak 4 Juni 2024 14.42

Berkas:Slurm.jpg

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:

  1. Header #!/bin/bash karena script ini ditulis dengan bahasa bash.
  2. 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.
  3. Apabila butuh, memuat modul software untuk menjalankan komputasi user dengan Module Environment
  4. Alur perintah jalannya program user.
Struktur dan contoh SLURM Submit Script

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
  • user tidak perlu menulis SBATCH parameter untuk epyc
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.
  • Daftar software komputasi ALELEON memberikan indikator program MPI atau non-MPI.
  • Dapat pula menghubungi admin untuk diskusi melalui email support@efisonlt.com.

Keterangan:

  1. Limitasi fair policy usage untuk menjaga kualitas layanan ALELEON Supercomputer.
  2. Program non-MPI hanya dapat berjalan satu node (maks 128 core di epyc dan 32 core di ampere).
  3. 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.
  4. Partisi epyc mempunyai satu node dengan jumlah memori 500GB yaitu epyc001.
    1. Tambahkan parameter #SBATCH --nodelist=epyc001
  5. 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.

#!/bin/bash

# SBATCH ......

module load [nama-modul-software]

# Alur jalannya program ...

Keterangan:

  • Tulis module load sebelum menulis script alur jalannya program.