Submit Script ALELEON Supercomputer: Perbedaan antara revisi

Dari ALELEON by EFISON
(menghapus bagian cpus-per-task, heavy paraphrasing untuk membuang info tidak relevan)
(mempersingkat dan paraphrasing penjelasan SLURM)
Baris 3: Baris 3:
== '''Tanda ////''' ==
== '''Tanda ////''' ==
Tanda 4 garing (////) digunakan oleh admin EFISON untuk '''menandai bagian yang perlu diisi oleh user'''. Contoh terdapat bagian script untuk menaruh nama file input:  
Tanda 4 garing (////) digunakan oleh admin EFISON untuk '''menandai bagian yang perlu diisi oleh user'''. Contoh terdapat bagian script untuk menaruh nama file input:  
  file_input="////"
  file_input="////.inp"
Artinya user mengisi nama file input dengan menggantikan tanda //// di dalam braket tanda petik, contoh menjadi:  
Artinya user mengisi nama file input dengan menggantikan tanda //// di dalam braket tanda petik, contoh menjadi:  
  file_input="'''ayam_goreng.inp'''"
  file_input="'''ayam_goreng'''.inp"


=='''Struktur SLURM Script'''==
=='''Struktur SLURM Script'''==
Baris 13: Baris 13:
# Header '''#!/bin/bash''' karena SLURM Script adalah bash script.
# Header '''#!/bin/bash''' karena SLURM 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.
#* Terdapat ratusan jenis [https://slurm.schedmd.com/sbatch.html parameter SBATCH pada SLURM] dari yang standar hingga ''advanced''. Pada halaman ini, admin EFISON merangkum parameter SBATCH yang '''esensial untuk penggunaan ALELEON Supercomputer.'''
# [[Module Environment|'''Memuat software yang dibutuhkan untuk menjalankan job user dengan Module Environment.''']] Apabila user tidak memuat modul software yang benar maka job tidak akan berjalan.
# [[Module Environment|'''Memuat software yang dibutuhkan untuk menjalankan job user dengan Module Environment.''']] Apabila user tidak memuat modul software yang benar maka job tidak akan berjalan.
# Perintah utama untuk menjalankan program user.
# Perintah utama untuk menjalankan program user.
Baris 27: Baris 28:
|'''3'''
|'''3'''
|-
|-
|Core CPU Total
|Core CPU per node
|'''192''' core fisik / '''384''' core thread
|'''128'''
|-
|-
|Core CPU per node
|Core CPU total
|'''64''' core fisik / '''128''' core thread
|'''384'''
|-
|-
|RAM per node
|RAM per node
Baris 42: Baris 43:
|-
|-
|Core CPU
|Core CPU
|'''64''' core fisik / '''128''' core thread
|'''128'''
|-
|-
|GPU
|GPU
Baris 50: Baris 51:
|'''125GB'''
|'''125GB'''
|}
|}
Info lebih detail dapat dipelajari pada laman '''[[Spesifikasi ALELEON Supercomputer]]'''.
EFISON mengaktifkan '''SMT (Simultaneous Multi-Threading)''' pada semua CPU AMD di ALELEON Supercomputer sehingga masing-masing CPU mempunyai '''2 core thread per 1 core fisik'''. Info lebih detail dapat dipelajari pada laman '''[[Spesifikasi ALELEON Supercomputer]]'''.


---
Secara default, penggunaan CPU pada ALELEON Supercomputer didasarkan pada '''core thread,''' termasuk '''[[Core Hour|penghitungan penggunaan komputasi CPU Core Hour user]]'''.


==='''Core Thread CPU pada ALELEON Supercomputer'''===
== '''SBATCH Compute Node CPU / Partisi epyc''' ==
EFISON mengaktifkan '''SMT (Simultaneous Multi-Threading)''' pada semua CPU AMD di ALELEON Supercomputer sehingga masing-masing CPU mempunyai '''2 core thread per 1 core fisik'''. 
 
Secara default, '''penggunaan CPU pada ALELEON Supercomputer didasarkan pada core thread, termasuk [[Core Hour|penghitungan penggunaan komputasi CPU Core Hour user]]'''.
 
=='''Parameter Resources SBATCH Esensial'''==
Terdapat ratusan jenis [https://slurm.schedmd.com/sbatch.html parameter SBATCH pada SLURM] dari yang standar hingga ''advanced''. Admin EFISON merangkum penjelasan parameter esensial yang digunakan pada berbagai template SLURM Script di EFIRO.
----
 
=== Menggunakan Compute Node CPU / Partisi epyc ===
Berikut adalah parameter SBATCH yang direkomendasikan dan secara umum dapat digunakan untuk semua jenis job:
  #SBATCH --nodes=////
  #SBATCH --nodes=////
  #SBATCH --ntasks=////
  #SBATCH --ntasks=////
Baris 98: Baris 89:
** Output error sangat bermanfaat bagi user untuk melakukan troubleshooting disaat program gagal berjalan. Admin EFISON selalu merekomendasikan user untuk selalu menggunakan parameter error ini.
** Output error sangat bermanfaat bagi user untuk melakukan troubleshooting disaat program gagal berjalan. Admin EFISON selalu merekomendasikan user untuk selalu menggunakan parameter error ini.
** Format penamaan mengikuti parameter output diatas, contoh: '''#SBATCH --error=error-%j.txt'''
** Format penamaan mengikuti parameter output diatas, contoh: '''#SBATCH --error=error-%j.txt'''
---
== '''SBATCH Compute Node GPU / Partisi gpu_ampere''' ==
 
Secara umum mengikuti format SBATCH yang sama dengan menggunakan Partisi epyc diatas diikuti dengan tambahan parameter:  
=== Menggunakan Compute Node GPU / Partisi gpu_ampere ===
Secara umum mengikuti format SBATCH yang sama dengan menggunakan Partisi epyc, diikuti dengan tambahan:  
  '''#SBATCH --partition=gpu_ampere'''
  '''#SBATCH --partition=gpu_ampere'''
  '''#SBATCH --gres=gpu:////'''
  '''#SBATCH --gres=gpu:////'''
Baris 119: Baris 108:
* Nilai maksimal mem = '''125GB'''
* Nilai maksimal mem = '''125GB'''
* Nilai maksimal walltime = '''14-00:00:00'''
* Nilai maksimal walltime = '''14-00:00:00'''
---
* Output dan error lihat penjelasan SBATCH Compute Node CPU di atas.
 
== '''SBATCH Notifikasi e-mail''' ==
=== Notifikasi Status Jalannya Job via E-mail ===
SLURM pada 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. User dapat menambahkan parameter berikut untuk menerima notifikasi email dari SLURM:  
SLURM pada 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. User dapat menambahkan parameter berikut untuk menerima notifikasi email dari SLURM:  
  #SBATCH --mail-user=////
  #SBATCH --mail-user=////
Baris 136: Baris 124:


=='''Dasar Menentukan Alokasi nodes, ntasks, dan mem'''==
=='''Dasar Menentukan Alokasi nodes, ntasks, dan mem'''==
Berikut adalah aturan dan rekomendasi admin EFISON untuk user supaya dapat mengalokasikan resources komputasi nodes, ntasks, dan mem dengan benar dan efisien di ALELEON Supercomputer:
Berikut adalah aturan dan rekomendasi admin EFISON untuk user supaya dapat mengalokasikan resources komputasi nodes, ntasks, dan mem dengan benar di ALELEON Supercomputer:
----
----


===Menentukan Jumlah Node===
===Menentukan Jumlah Node===
Jumlah node ditentukan dari jenis program yang dijalankan yaitu program MPI dan non-MPI:
*Program MPI adalah program yang ditulis berdasarkan pemodelan MPI ('''Message Parallel Interface''') di mana '''dapat berjalan secara paralel atau lebih dari satu node (multi-node)'''. Berjalan multi-node artinya dapat memanfaatkan lebih dari 128 core thread CPU pada ALELEON Supercomputer.
*Program non-MPI adalah program yang tidak ditulis dengan pemodelan MPI atau paralel sehingga '''hanya dapat berjalan pada 1 node.'''
{| class="wikitable"
{| class="wikitable"
!Jenis Program
!Jenis Program
Baris 152: Baris 137:
|MPI atau paralel
|MPI atau paralel
|1 atau lebih
|1 atau lebih
|}Apabila user menjalankan program komputasi yang tersedia di ALELEON Supercomputer, user dapat mengetahui bahwa program tersebut adalah MPI atau tidak dengan memperhatikan kolom "Dukungan MPI" di [https://wiki.efisonlt.com/wiki/Katalog_Software_ALELEON_Supercomputer#Daftar_Software_Komputasi_.28Global.29 '''tabel daftar software komputasi ALELEON Supercomputer''']
|}Jumlah node ditentukan dari jenis program yang dijalankan yaitu program MPI dan non-MPI:
*Program MPI adalah program yang ditulis berdasarkan pemodelan MPI ('''Message Parallel Interface''') di mana '''dapat berjalan secara paralel atau lebih dari satu node (multi-node)'''. Berjalan multi-node artinya dapat memanfaatkan lebih dari 128 core thread CPU pada ALELEON Supercomputer.
*Program non-MPI adalah program yang tidak ditulis dengan pemodelan MPI atau paralel sehingga '''hanya dapat berjalan pada 1 node.'''
Apabila user menjalankan program komputasi yang tersedia di ALELEON Supercomputer, user dapat mengetahui bahwa program tersebut adalah MPI atau tidak dengan memperhatikan kolom "Dukungan MPI" di [https://wiki.efisonlt.com/wiki/Katalog_Software_ALELEON_Supercomputer#Daftar_Software_Komputasi_.28Global.29 '''tabel daftar software komputasi ALELEON Supercomputer''']


---
---
Baris 164: Baris 152:
*ntasks=32, alokasikan mem 16GB.
*ntasks=32, alokasikan mem 16GB.
User dapat menggunakan '''kapasitas RAM yang lebih besar''' (contoh 2GB per ntasks atau lebih) apabila user mengetahui bahwa program yang dijalankan membutuhkan kapasitas RAM besar atau program gagal berjalan dengan alokasi RAM 0.5GB per ntasks.
User dapat menggunakan '''kapasitas RAM yang lebih besar''' (contoh 2GB per ntasks atau lebih) apabila user mengetahui bahwa program yang dijalankan membutuhkan kapasitas RAM besar atau program gagal berjalan dengan alokasi RAM 0.5GB per ntasks.
== '''Optimasi Performa pada SLURM Script''' ==
ALELEON Supercomputer mempunyai aturan khusus supaya user dapat memanfaatkan kemampuan komputasinya dengan optimal pada '''beberapa skenario komputasi seperti program serial, MPI, Hybrid MPI, BLAS, dll.''' Aturan ini dituangkan pada penulisan SLURM Script.   
Pada template SLURM Script, admin EFISON memandu user untuk mengisi template dengan tepat sesuai jenis komputasi yang akan dijalankan melalui laman ini:   
[[Berkas:Wiki-13.jpg|1000x1000px |link=Optimasi Performa ALELEON Supercomputer| alt=Optimasi Performa ALELEON Supercomputer ]]

Revisi per 16 Februari 2022 03.45

Halaman ini menjelaskan panduan memahami dan mengisi parameter resources pada SLURM Script beserta contohnya berdasarkan hardware ALELEON Supercomputer.

Tanda ////

Tanda 4 garing (////) digunakan oleh admin EFISON untuk menandai bagian yang perlu diisi oleh user. Contoh terdapat bagian script untuk menaruh nama file input:

file_input="////.inp"

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

file_input="ayam_goreng.inp"

Struktur SLURM Script

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

  1. Header #!/bin/bash karena SLURM Script adalah bash script.
  2. Parameter SBATCH untuk mengalokasikan resources job seperti CPU, RAM, GPU, time, dll.
    • Terdapat ratusan jenis parameter SBATCH pada SLURM dari yang standar hingga advanced. Pada halaman ini, admin EFISON merangkum parameter SBATCH yang esensial untuk penggunaan ALELEON Supercomputer.
  3. Memuat software yang dibutuhkan untuk menjalankan job user dengan Module Environment. Apabila user tidak memuat modul software yang benar maka job tidak akan berjalan.
  4. Perintah utama untuk menjalankan program user.

Resources ALELEON Supercomputer di SLURM

Sebelum menentukan alokasi resource job pada SBATCH, user harus mengetahui spesifikasi hardware dari ALELEON Supercomputer:

Komponen Kapasitas
Partisi epyc - Compute Node CPU
Node 3
Core CPU per node 128
Core CPU total 384
RAM per node 240GB
Partisi gpu_ampere - Compute Node GPU
Node 1
Core CPU 128
GPU 2
RAM 125GB

EFISON mengaktifkan SMT (Simultaneous Multi-Threading) pada semua CPU AMD di ALELEON Supercomputer sehingga masing-masing CPU mempunyai 2 core thread per 1 core fisik. Info lebih detail dapat dipelajari pada laman Spesifikasi ALELEON Supercomputer.

Secara default, penggunaan CPU pada ALELEON Supercomputer didasarkan pada core thread, termasuk penghitungan penggunaan komputasi CPU Core Hour user.

SBATCH Compute Node CPU / Partisi epyc

#SBATCH --nodes=////
#SBATCH --ntasks=////
#SBATCH --mem=////
#SBATCH --time=////
#SBATCH --output=////
#SBATCH --error=////
  • nodes
    • Alokasi jumlah node yang digunakan.
    • Contoh mengalokasikan 1 node: #SBATCH --nodes=1
    • Nilai maksimal nodes = 3
  • ntasks
    • Alokasi jumlah core thread CPU yang digunakan.
    • Contoh mengalokasikan 32 core thread CPU: #SBATCH --ntasks=32
    • Nilai maksimal ntasks = 384
  • mem
    • Alokasi kapasitas RAM per node yang digunakan, diikuti dengan satuan KB, MB, atau GB.
    • Contoh mengalokasikan RAM 32GB: #SBATCH --mem=32GB
    • Nilai maksimal mem = 240GB
  • time
    • Alokasi walltime (waktu maksimal) yang diizinkan untuk menjalankan job, mengikuti format penulisan:
      • HH:MM:SS. Contoh alokasi 2 jam: #SBATCH --time=02:00:00
      • D-HH:MM:SS. Contoh alokasi 2 hari: #SBATCH --time=2-00:00:00
    • Nilai maksimal walltime = 14-00:00:00
  • 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 penamaan pattern dari SLURM yaitu %j yang merekap job-ID.
    • Contoh penamaan output yang sering digunakan: #SBATCH --output=result-%j.txt
    • Apabila job berjalan dengan no. ID 2555, maka nama output menjadi result-2555.txt
  • error
    • Merekap output verbose program yaitu status jalannya program seperti "job sudah berjalan!" dan error log ketika program gagal selesai.
    • Output error sangat bermanfaat bagi user untuk melakukan troubleshooting disaat program gagal berjalan. Admin EFISON selalu merekomendasikan user untuk selalu menggunakan parameter error ini.
    • Format penamaan mengikuti parameter output diatas, contoh: #SBATCH --error=error-%j.txt

SBATCH Compute Node GPU / Partisi gpu_ampere

Secara umum mengikuti format SBATCH yang sama dengan menggunakan Partisi epyc diatas diikuti dengan tambahan parameter:

#SBATCH --partition=gpu_ampere
#SBATCH --gres=gpu:////
#SBATCH --ntasks=////
#SBATCH --mem=////
#SBATCH --time=////
#SBATCH --output=////
#SBATCH --error=////
  • partition=gpu_ampere
    • Mengalokasikan job ke Compute Node GPU gpu_ampere
  • gres=gpu:<jumlah-GPU>
    • Alokasi Jumlah GPU yang digunakan.
    • Contoh mengalokasikan 1 GPU: #SBATCH --gres=gpu:1
    • Nilai maksimal GPU = gpu:2
  • Nilai maksimal ntasks = 128
  • Nilai maksimal mem = 125GB
  • Nilai maksimal walltime = 14-00:00:00
  • Output dan error lihat penjelasan SBATCH Compute Node CPU di atas.

SBATCH Notifikasi e-mail

SLURM pada 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. User dapat menambahkan parameter berikut untuk menerima notifikasi email dari SLURM:

#SBATCH --mail-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 mulai.
  • mail-type=end
    • Notifikasi email yang menginfokan job sudah selesai.
    • Sekaligus memberikan cuplikan 20 baris terakhir dari SBATCH output dan error job user.

Dasar Menentukan Alokasi nodes, ntasks, dan mem

Berikut adalah aturan dan rekomendasi admin EFISON untuk user supaya dapat mengalokasikan resources komputasi nodes, ntasks, dan mem dengan benar di ALELEON Supercomputer:


Menentukan Jumlah Node

Jenis Program nodes
Non-MPI 1
MPI atau paralel 1 atau lebih

Jumlah node ditentukan dari jenis program yang dijalankan yaitu program MPI dan non-MPI:

  • Program MPI adalah program yang ditulis berdasarkan pemodelan MPI (Message Parallel Interface) di mana dapat berjalan secara paralel atau lebih dari satu node (multi-node). Berjalan multi-node artinya dapat memanfaatkan lebih dari 128 core thread CPU pada ALELEON Supercomputer.
  • Program non-MPI adalah program yang tidak ditulis dengan pemodelan MPI atau paralel sehingga hanya dapat berjalan pada 1 node.

Apabila user menjalankan program komputasi yang tersedia di ALELEON Supercomputer, user dapat mengetahui bahwa program tersebut adalah MPI atau tidak dengan memperhatikan kolom "Dukungan MPI" di tabel daftar software komputasi ALELEON Supercomputer

---

Jumlah Core Thread CPU: Kelipatan 4

Berdasarkan arsiktektur CPU AMD yang digunakan oleh ALELEON Supercomputer, user direkomendasikan untuk memilih jumlah core thread CPU (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.

---

Memperkirakan Kapasitas RAM yang Digunakan

Tidak ada aturan baku untuk mengetahui hal ini karena bergantung dengan jenis software dan besarnya skala input yang dijalankan user. Admin EFISON dapat memberikan saran untuk menggunakan jumlah RAM 0.5GB per ntasks sebagai basis. Contoh:

  • ntasks=8, alokasikan mem 4GB.
  • ntasks=32, alokasikan mem 16GB.

User dapat menggunakan kapasitas RAM yang lebih besar (contoh 2GB per ntasks atau lebih) apabila user mengetahui bahwa program yang dijalankan membutuhkan kapasitas RAM besar atau program gagal berjalan dengan alokasi RAM 0.5GB per ntasks.