Submit Script ALELEON Supercomputer: Perbedaan antara revisi

Dari ALELEON by EFISON
(→‎SBATCH Partisi gpu_ampere / Compute Node GPU: finishing overhaul tabel SBATCH gpu)
Baris 1: Baris 1:
Halaman ini menjelaskan panduan memahami, membuat, dan mengisi SLURM Submit Script untuk melakukan job submission ke Compute Node.   
Halaman ini menjelaskan panduan memahami, membuat, dan mengisi SLURM Submit Script untuk melakukan job submission ke Compute Node.   
== '''Bahasa Bash''' ==
SLURM Submit Script menggunakan bahasa bash dengan standar versi 4.4.


=='''Struktur Submit Script'''==
=='''Struktur Submit Script'''==
Baris 8: Baris 11:
#'''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]'''.
# 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]'''.
# Perintah utama untuk menjalankan program user.
# Alur perintah untuk menjalankan program user.
{| class="wikitable"
{| class="wikitable"
|'''Note:'''
|'''Note:'''
Baris 40: Baris 43:
* Contoh mengalokasikan 1 node:
* Contoh mengalokasikan 1 node:


<code>#SBATCH --nodes=1</code>
<code>#SBATCH --nodes='''1'''</code>
{| class="wikitable"
{| class="wikitable"
!Jumlah nodes maksimal
!Jumlah nodes maksimal
Baris 52: Baris 55:
* Contoh mengalokasikan 32 core CPU:  
* Contoh mengalokasikan 32 core CPU:  


<code>#SBATCH --ntasks=32</code>
<code>#SBATCH --ntasks='''32'''</code>
{| class="wikitable"
{| class="wikitable"
! colspan="2" |Jumlah ntasks maksimal
! colspan="2" |Jumlah ntasks maksimal
Baris 77: Baris 80:
* Contoh mengalokasikan memori RAM 32GB:
* Contoh mengalokasikan memori RAM 32GB:


<code>#SBATCH --mem=32GB</code>
<code>#SBATCH --mem='''32GB'''</code>


* Contoh mengalokasikan memori RAM 7500MB:
* Contoh mengalokasikan memori RAM 7500MB:


<code>#SBATCH --mem=7500MB</code>
<code>#SBATCH --mem='''7500MB'''</code>
{| class="wikitable"
{| class="wikitable"
!Jumlah mem maksimal
!Jumlah mem maksimal
Baris 88: Baris 91:
|-
|-
|Partisi epyc mempunyai '''satu node spesial dengan kapasitas RAM hingga 500GB''' (dibandingkan standar 240GB). Apabila user membutuhkan RAM lebih dari 240GB, gunakan kombinasi SBATCH berikut:  
|Partisi epyc mempunyai '''satu node spesial dengan kapasitas RAM hingga 500GB''' (dibandingkan standar 240GB). Apabila user membutuhkan RAM lebih dari 240GB, gunakan kombinasi SBATCH berikut:  
  '''#SBATCH --nodelist=epyc01
  '''#SBATCH --nodelist=epyc001'''
  #SBATCH --mem=<''maks-hingga-500GB''>'''
  #SBATCH --mem=<''maks-hingga-500GB''>
'''Note:'''  
'''Note:'''  


* ''Hanya untuk user yang benar-benar membutuhkan komputasi dengan RAM lebih dari 240GB!''  
* ''Hanya untuk user yang benar-benar membutuhkan komputasi dengan RAM lebih dari 240GB!''  
* ''Nodelist epyc01 juga digunakan oleh user lainnya jadi bersiaplah untuk mengantri apabila alokasi epyc01 belum dapat memenuhi permintaan user dengan RAM lebih dari 240GB.''
* ''Compute  epyc001 juga digunakan oleh user lainnya jadi bersiaplah untuk mengantri apabila alokasi epyc01 belum dapat memenuhi permintaan user dengan RAM lebih dari 240GB.''
|-
|-
| rowspan="2" |'''time'''
| rowspan="2" |'''time'''
Baris 101: Baris 104:
* Contoh mengalokasikan limit waktu 10 jam 30 menit:
* Contoh mengalokasikan limit waktu 10 jam 30 menit:


<code>#SBATCH --time=10:30:00</code>
<code>#SBATCH --time='''10:30:00'''</code>


* Contoh mengalokasikan limit waktu 2 hari:
* Contoh mengalokasikan limit waktu 2 hari:


<code>#SBATCH --time=2-00:00:00</code>
<code>#SBATCH --time='''2-00:00:00'''</code>
{| class="wikitable"
{| class="wikitable"
!Jumlah time maksimal
!Jumlah time maksimal
Baris 111: Baris 114:
|}
|}
|-
|-
| rowspan="3" |'''output'''
| rowspan="2" |'''output'''
|'''Output textfile untuk merekap output terminal.'''
|'''Output textfile untuk merekap output terminal.''' User mendefinisikan nama dan format file.
|-
|User mendefinisikan nama dan format file.  
 
* Terdapat pola penamaan dari SLURM yaitu %j untuk merekap nomor Job ID.
* Terdapat pola penamaan dari SLURM yaitu %j untuk merekap nomor Job ID.
* Format file dibebaskan (biasanya menggunakan .txt atau .out).
* Format file dibebaskan (biasanya menggunakan .txt atau .out).
'''<code>#SBATCH --output=<''nama-file-output''>.<''format-file''></code>'''
|-
|-
|
|'''<code>#SBATCH --output=<''nama-file-output''>.<''format-file''></code>'''
* Contoh mendefinisikan file output dengan format txt bersama job-ID:<code>'''#SBATCH --output=result-%j.txt'''</code>  
*Contoh mendefinisikan file output dengan format txt bersama job-ID:  
<code>#SBATCH --output='''result-%j.txt'''</code>
* Ketika job berjalan (contoh) dengan job-ID 670, maka nama file output menjadi '''result-670.txt'''.
* Ketika job berjalan (contoh) dengan job-ID 670, maka nama file output menjadi '''result-670.txt'''.
|-
|-
| rowspan="3" |'''error'''
| rowspan="2" |'''error'''
|'''Output textfile untuk merekap output verbose (status jalannya program dan error log ketika program gagal berjalan).'''  
|'''Output textfile untuk merekap output verbose (status jalannya program dan error log ketika program gagal berjalan).'''
* 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 diatas.
|-
|-
|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 diatas:
|'''<code>#SBATCH --error=<''nama-file-output''>.<''format-file''></code>'''
 
* Contoh mendefinisikan file error dengan format txt bersama job-ID:
'''<code>#SBATCH --error=<''nama-file-output''>.<''format-file''></code>'''
<code>SBATCH --output='''error-%j.txt'''</code>
|-
|
* Contoh mendefinisikan file error dengan format txt bersama job-ID: <code>'''#SBATCH --output=error-%j.txt'''</code>  
* Ketika job berjalan (contoh) dengan job-ID 670, maka nama file error menjadi '''error-670.txt'''.
* Ketika job berjalan (contoh) dengan job-ID 670, maka nama file error menjadi '''error-670.txt'''.
|}
|}
== '''SBATCH Partisi gpu_ampere / Compute Node GPU''' ==
== '''SBATCH untuk Compute Node GPU (Partisi ampere)''' ==
# Alokasi GPU, core thread CPU, RAM, time limit, output program & error
Berikut adalah daftar SBATCH yang esensial untuk menjalankan komputasi di Compute Node GPU atau Partisi ampere.
  '''#SBATCH --partition=gpu_ampere'''
  '''#SBATCH --partition=ampere'''
  '''#SBATCH --gres=gpu:////'''
  '''#SBATCH --gres=gpu:'''<''jumlah-GPU''>
  #SBATCH --ntasks=////
  '''#SBATCH --ntasks='''<''jumlah-core-CPU''>
  #SBATCH --mem=////
  '''#SBATCH --mem='''<''jumlah-memori-RAM''>
  #SBATCH --time=////
  '''#SBATCH --time='''<''jumlah-limit-waktu-komputasi''>
  #SBATCH --output=////
  '''#SBATCH --output='''<''output-textfile''>
  #SBATCH --error=////
  '''#SBATCH --error='''<''output-verbose-dan-error-log-textfile''>
{| class="wikitable"
{| class="wikitable"
|+Penjelasan dan rentang nilai parameter SBATCH Partisi gpu_ampere
|+Info Detail SBATCH Partisi ampere
!Alokasi Komponen
!SBATCH
!SBATCH
!Nilai MAKSIMAL
!Penjelasan
!Contoh penulisan
|-
|-
|Compute Node GPU
| colspan="2" |'''<code>#SBATCH --partition=ampere</code>''' bertujuan untuk menjalankan job submission di Compute Node GPU.
| --partition
| colspan="2" |'''<code>#SBATCH --partition=gpu_ampere</code>'''
|-
|-
|Jumlah GPU
| rowspan="2" |'''gres=gpu'''
| --gres=gpu:
|'''Alokasi jumlah GPU yang digunakan.'''
|'''3'''
|'''<code>#SBATCH --gres=gpu:1</code>'''
|-
|-
|Jumlah Core thread CPU
|'''<code>#SBATCH --gres=gpu:<''jumlah-GPU''></code>'''
| --ntasks
* Contoh mengalokasikan 1 GPU:
|'''32'''
 
|<code>'''#SBATCH --ntasks=16'''</code>
<code>#SBATCH --gres=gpu:2</code>
{| class="wikitable"
!Jumlah gpu maksimal
!2
|}
|-
|-
| rowspan="2" |Kapasitas RAM
| rowspan="3" |'''ntasks'''
| rowspan="2" | --mem
|'''Alokasi jumlah core CPU yang digunakan.'''
|'''120GB'''  
|<code>'''#SBATCH --mem=64GB'''</code>
|-
|-
| colspan="2" |''Penulisan angka dan satuan digabung''
|'''<code>#SBATCH --ntasks=<''jumlah-core-CPU''></code>'''
* Contoh mengalokasikan 8 core CPU:
 
<code>#SBATCH --ntasks=8</code>
{| class="wikitable"
!Jumlah ntasks maksimal
!32
|}
|-
|-
| rowspan="2" |Walltime
|'''Note:'''
| rowspan="2" | --time
*''ALELEON Supercomputer menyalakan SMT (Simultaneous Multithreading) pada semua CPU sehingga '''ntasks mengisi core thread CPU.'''''  
|'''14-00:00:00'''
*''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.''
|<code>'''#SBATCH --time=08:00:00'''</code>
* ''Penghitungan kredit CPU Core Hour (CCH) berdasarkan jumlah ntasks yang didefinisikan user.''
|-
|-
| colspan="2" |''Format penulisan HH:MM:SS atau D-HH:MM:SS''
| rowspan="2" |'''mem'''
|'''Alokasi jumlah memori RAM yang digunakan. Admin merekomendasikan satuan MB atau GB.'''
|-
|-
|Output terminal
|'''<code>#SBATCH --mem=<''jumlah-memori''<nowiki>>MB|GB</nowiki></code>'''
| --output
* Contoh mengalokasikan memori RAM 32GB:
| colspan="2" rowspan="2" |''Lihat penjelasan dibawah''
 
<code>#SBATCH --mem=32GB</code>
 
* Contoh mengalokasikan memori RAM 7500MB:
 
<code>#SBATCH --mem=7500MB</code>
{| class="wikitable"
!Jumlah mem maksimal
!120GB
|}
|-
| rowspan="2" |'''time'''
|'''Alokasi limit waktu untuk menjalankan job. Apabila waktu jalannya program melebihi limit maka akan dihentikan (''kill'') secara otomatis oleh SLURM.'''
|-
|'''<code>#SBATCH --time=<''HH:MM:SS''></code>'''<code>atau '''#SBATCH --time=<''D-HH:MM:SS''>'''</code>
* Contoh mengalokasikan limit waktu 10 jam 30 menit:
 
<code>#SBATCH --time=10:30:00</code>
 
* Contoh mengalokasikan limit waktu 2 hari:
 
<code>#SBATCH --time=2-00:00:00</code>
{| class="wikitable"
!Jumlah time maksimal
!7-00:00:00 (7 hari)
|}
|-
| rowspan="2" |'''output'''
|'''Output textfile untuk merekap output terminal.''' 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).
|-
|'''<code>#SBATCH --output=<''nama-file-output''>.<''format-file''></code>'''
*Contoh mendefinisikan file output dengan format txt bersama job-ID:
<code>#SBATCH --output='''result-%j.txt'''</code>
* Ketika job berjalan (contoh) dengan job-ID 670, maka nama file output menjadi '''result-670.txt'''.
|-
| rowspan="2" |'''error'''
|'''Output textfile untuk merekap output verbose (status jalannya program dan error log ketika program gagal berjalan).'''
* 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 diatas.
|-
|-
|Output verbose
|'''<code>#SBATCH --error=<''nama-file-output''>.<''format-file''></code>'''
| --error
* Contoh mendefinisikan file error dengan format txt bersama job-ID:
<code>SBATCH --output='''error-%j.txt'''</code>
* Ketika job berjalan (contoh) dengan job-ID 670, maka nama file error menjadi '''error-670.txt'''.
|}
|}
'''Catatan penting:'''
*'''gres=gpu:''<jumlah-GPU>'''''
**Penghitungan kredit GPU Hour (GH) berdasarkan jumlah gres gpu yang didefinisikan user.
* '''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.
** Penghitungan kredit CPU Core Hour (CCH) berdasarkan jumlah ntasks yang didefinisikan user.
*'''output'''
** 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 Notifikasi e-mail''' ==
== '''SBATCH Notifikasi e-mail''' ==
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 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 --mail-user=////
 
Silahkan tambahan SBATCH berikut apabila user ingin menerima notifikasi email dari SLURM: 
  #SBATCH --mail-user=<''alamat-email-user''>
  #SBATCH --mail-type=begin
  #SBATCH --mail-type=begin
  #SBATCH --mail-type=end
  #SBATCH --mail-type=end
Baris 211: Baris 242:
** Alamat email user untuk menerima notifikasi SLURM
** Alamat email user untuk menerima notifikasi SLURM
* '''mail-type=begin'''
* '''mail-type=begin'''
** Notifikasi email yang menginfokan job sudah mulai.
** Notifikasi email yang menginfokan job sudah berjalan.
* '''mail-type=end'''
* '''mail-type=end'''
** Notifikasi email yang menginfokan job sudah selesai.
** Notifikasi email yang menginfokan job sudah selesai.
** Sekaligus memberikan cuplikan 20 baris terakhir dari SBATCH output dan error job user.
** Sekaligus memberikan cuplikan 20 baris terakhir dari file output SBATCH output dan error job user.


== '''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:'''  
Modul software pada SLURM Submit Script berfungsi supaya Compute Node dapat menjalankan software yang dibutuhkan oleh komputasi user. Masukkan line script berikut:
module load '''''nama-modul-software'''''
'''module load <''nama-modul-software-yang-digunakan-untuk-komputasi-user''>'''
 
Tulis script module load tersebut sebelum menulis run script jalannya program.
* Perintah module load harus ditaruh sebelum penulisan perintah menjalankan program.
 
* Template software komputasi sudah menyertakan module load yang diperlukan.
* Pada template umum (misalnya Default Template, MPI - Template Kosong, Python - Template Kosong, dll), user harus menulis sendiri module load yang dibutuhkan.  
* Daftar lengkap nama modul software dapat ditemukan pada [[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 per 2 Februari 2023 05.18

Halaman ini menjelaskan panduan memahami, membuat, dan mengisi SLURM Submit Script untuk melakukan job submission ke Compute Node.

Bahasa Bash

SLURM Submit Script menggunakan bahasa bash dengan standar versi 4.4.

Struktur Submit Script

Secara umum, Submit Script atau SLURM Script dipecah menjadi 4 bagian penting.

  1. Header #!/bin/bash karena Submit Script adalah bash script.
  2. Parameter SBATCH untuk mengalokasikan resources job seperti CPU, RAM, GPU, time, dll.
  3. Memuat modul software yang dibutuhkan untuk menjalankan komputasi user dengan Module Environment.
  4. Alur perintah untuk menjalankan program user.
Note:
  • Terdapat ratusan jenis parameter SBATCH pada SLURM dari yang standar hingga kompleks.
  • Pada halaman ini, admin EFISON merangkum parameter SBATCH yang esensial untuk menggunakan ALELEON Supercomputer.

Tanda ////

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:

FILE_INPUT="////.in"

Artinya user mengisi nama file input dengan menggantikan tanda //// di dalam braket tanda petik, contoh menjadi:

FILE_INPUT="myskripsi.in"

SBATCH untuk Compute Node CPU (Partisi epyc)

Berikut adalah daftar SBATCH yang esensial (dan biasanya akan ditemukan pada banyak template) untuk menjalankan komputasi di Compute Node CPU atau Partisi epyc.

#SBATCH --nodes=<jumlah-compute-node>
#SBATCH --ntasks=<jumlah-core-CPU>
#SBATCH --mem=<jumlah-memori-RAM>
#SBATCH --time=<jumlah-limit-waktu-komputasi>
#SBATCH --output=<output-textfile>
#SBATCH --error=<output-verbose-dan-error-log-textfile>
Info Detail SBATCH Partisi epyc
SBATCH Penjelasan
nodes Alokasi jumlah Compute Node CPU yang digunakan.
#SBATCH --nodes=<jumlah-compute-node>
  • Contoh mengalokasikan 1 node:

#SBATCH --nodes=1

Jumlah nodes maksimal 3
ntasks Alokasi jumlah core CPU yang digunakan.
#SBATCH --ntasks=<jumlah-core-CPU>
  • Contoh mengalokasikan 32 core CPU:

#SBATCH --ntasks=32

Jumlah ntasks maksimal
Per Compute Node 128
Semua Compute Node 384
Note:
  • ALELEON Supercomputer menyalakan SMT (Simultaneous Multithreading) pada semua CPU sehingga ntasks mengisi core thread CPU.
  • 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.
Apabila user ingin menjalankan komputasi paralel lebih dari 2 Compute Node (dengan program yang mendukung seperti MPI), silahkan lihat panduan tambahan:
mem Alokasi jumlah memori RAM yang digunakan. Admin merekomendasikan satuan MB atau GB.
#SBATCH --mem=<jumlah-memori>MB|GB
  • Contoh mengalokasikan memori RAM 32GB:

#SBATCH --mem=32GB

  • Contoh mengalokasikan memori RAM 7500MB:

#SBATCH --mem=7500MB

Jumlah mem maksimal 240GB
Partisi epyc mempunyai satu node spesial dengan kapasitas RAM hingga 500GB (dibandingkan standar 240GB). Apabila user membutuhkan RAM lebih dari 240GB, gunakan kombinasi SBATCH berikut:
#SBATCH --nodelist=epyc001
#SBATCH --mem=<maks-hingga-500GB>

Note:

  • Hanya untuk user yang benar-benar membutuhkan komputasi dengan RAM lebih dari 240GB!
  • Compute epyc001 juga digunakan oleh user lainnya jadi bersiaplah untuk mengantri apabila alokasi epyc01 belum dapat memenuhi permintaan user dengan RAM lebih dari 240GB.
time Alokasi limit waktu untuk menjalankan job. Apabila waktu jalannya program melebihi limit maka akan dihentikan (kill) secara otomatis oleh SLURM.
#SBATCH --time=<HH:MM:SS>atau #SBATCH --time=<D-HH:MM:SS>
  • Contoh mengalokasikan limit waktu 10 jam 30 menit:

#SBATCH --time=10:30:00

  • Contoh mengalokasikan limit waktu 2 hari:

#SBATCH --time=2-00:00:00

Jumlah time maksimal 7-00:00:00 (7 hari)
output Output textfile untuk merekap output terminal. 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).
#SBATCH --output=<nama-file-output>.<format-file>
  • Contoh mendefinisikan file output dengan format txt bersama job-ID:

#SBATCH --output=result-%j.txt

  • Ketika job berjalan (contoh) dengan job-ID 670, maka nama file output menjadi result-670.txt.
error Output textfile untuk merekap output verbose (status jalannya program dan error log ketika program gagal berjalan).
  • 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 diatas.
#SBATCH --error=<nama-file-output>.<format-file>
  • Contoh mendefinisikan file error dengan format txt bersama job-ID:

SBATCH --output=error-%j.txt

  • Ketika job berjalan (contoh) dengan job-ID 670, maka nama file error menjadi error-670.txt.

SBATCH untuk Compute Node GPU (Partisi ampere)

Berikut adalah daftar SBATCH yang esensial untuk menjalankan komputasi di Compute Node GPU atau Partisi ampere.

#SBATCH --partition=ampere
#SBATCH --gres=gpu:<jumlah-GPU>
#SBATCH --ntasks=<jumlah-core-CPU>
#SBATCH --mem=<jumlah-memori-RAM>
#SBATCH --time=<jumlah-limit-waktu-komputasi>
#SBATCH --output=<output-textfile>
#SBATCH --error=<output-verbose-dan-error-log-textfile>
Info Detail SBATCH Partisi ampere
SBATCH Penjelasan
#SBATCH --partition=ampere bertujuan untuk menjalankan job submission di Compute Node GPU.
gres=gpu Alokasi jumlah GPU yang digunakan.
#SBATCH --gres=gpu:<jumlah-GPU>
  • Contoh mengalokasikan 1 GPU:

#SBATCH --gres=gpu:2

Jumlah gpu maksimal 2
ntasks Alokasi jumlah core CPU yang digunakan.
#SBATCH --ntasks=<jumlah-core-CPU>
  • Contoh mengalokasikan 8 core CPU:

#SBATCH --ntasks=8

Jumlah ntasks maksimal 32
Note:
  • ALELEON Supercomputer menyalakan SMT (Simultaneous Multithreading) pada semua CPU sehingga ntasks mengisi core thread CPU.
  • 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.
  • Penghitungan kredit CPU Core Hour (CCH) berdasarkan jumlah ntasks yang didefinisikan user.
mem Alokasi jumlah memori RAM yang digunakan. Admin merekomendasikan satuan MB atau GB.
#SBATCH --mem=<jumlah-memori>MB|GB
  • Contoh mengalokasikan memori RAM 32GB:

#SBATCH --mem=32GB

  • Contoh mengalokasikan memori RAM 7500MB:

#SBATCH --mem=7500MB

Jumlah mem maksimal 120GB
time Alokasi limit waktu untuk menjalankan job. Apabila waktu jalannya program melebihi limit maka akan dihentikan (kill) secara otomatis oleh SLURM.
#SBATCH --time=<HH:MM:SS>atau #SBATCH --time=<D-HH:MM:SS>
  • Contoh mengalokasikan limit waktu 10 jam 30 menit:

#SBATCH --time=10:30:00

  • Contoh mengalokasikan limit waktu 2 hari:

#SBATCH --time=2-00:00:00

Jumlah time maksimal 7-00:00:00 (7 hari)
output Output textfile untuk merekap output terminal. 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).
#SBATCH --output=<nama-file-output>.<format-file>
  • Contoh mendefinisikan file output dengan format txt bersama job-ID:

#SBATCH --output=result-%j.txt

  • Ketika job berjalan (contoh) dengan job-ID 670, maka nama file output menjadi result-670.txt.
error Output textfile untuk merekap output verbose (status jalannya program dan error log ketika program gagal berjalan).
  • 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 diatas.
#SBATCH --error=<nama-file-output>.<format-file>
  • Contoh mendefinisikan file error dengan format txt bersama job-ID:

SBATCH --output=error-%j.txt

  • Ketika job berjalan (contoh) dengan job-ID 670, maka nama file error menjadi error-670.txt.

SBATCH Notifikasi e-mail

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.

Silahkan tambahan SBATCH berikut apabila user ingin menerima notifikasi email dari SLURM:

#SBATCH --mail-user=<alamat-email-user>
#SBATCH --mail-type=begin
#SBATCH --mail-type=end
  • mail-user
    • Alamat email user untuk menerima notifikasi SLURM
  • mail-type=begin
    • Notifikasi email yang menginfokan job sudah berjalan.
  • mail-type=end
    • Notifikasi email yang menginfokan job sudah selesai.
    • Sekaligus memberikan cuplikan 20 baris terakhir dari file output SBATCH output dan error job user.

Memuat Software dengan module load

Modul software pada SLURM Submit Script berfungsi supaya Compute Node dapat menjalankan software yang dibutuhkan oleh komputasi user. Masukkan line script berikut:

module load <nama-modul-software-yang-digunakan-untuk-komputasi-user>

Tulis script module load tersebut sebelum menulis run script jalannya program.