Submit Script ALELEON Supercomputer: Perbedaan antara revisi

Dari ALELEON by EFISON
(menghapus bagian cpus-per-task, heavy paraphrasing untuk membuang info tidak relevan)
Baris 1: Baris 1:
Halaman ini menjelaskan panduan memahami dan mengisi parameter resources pada SLURM Script beserta contohnya berdasarkan hardware ALELEON Supercomputer.   
Halaman ini menjelaskan panduan memahami dan mengisi parameter resources pada SLURM Script beserta contohnya berdasarkan hardware ALELEON Supercomputer.   


== '''Say Hello to ////''' ==
== '''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="////"
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="'''nasigoreng.inp'''"
  file_input="'''ayam_goreng.inp'''"


=='''Memahami Struktur SLURM Script'''==
=='''Struktur SLURM Script'''==
Secara umum, Submit Script atau SLURM Script dipecah menjadi 4 bagian penting.
Secara umum, Submit Script atau SLURM Script dipecah menjadi 4 bagian penting.
[[Berkas:Jcscriptrev.png|nir|jmpl|624x624px|'''Contoh template EFIRO Job Composer untuk menjalankan program ORCA''']]
Penjelasan bagian dari SLURM Script:


[[Berkas:Jcscriptrev.png|al=|nirbing|520x520px]]
# 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.
# [[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.
== '''Template SLURM Script di Job Composer EFIRO''' ==
Admin EFISON menyediakan berbagai '''template SLURM Script''' untuk berbagai jenis penggunaan dan software pada halaman '''Template Job Composer EFIRO''' yang dapat diakses user saat membuat job baru di Job Composer.
* Template untuk menjalankan software komputasi seperti GROMACS, NWChem, QE, dll telah dirancang sedemikian rupa supaya '''user hanya perlu mengisi parameter SBATCH yang telah disediakan dan nama file input'''. User juga dapat melihat penjelasan lebih detail pada masing-masing halaman software komputasi di [[Katalog Software ALELEON Supercomputer#Daftar%20Software%20Komputasi%20.28Global.29|'''daftar software komputasi ALELEON Supercomputer''']].
* Admin EFISON juga menyediakan template untuk menjalankan skenario komputasi umum seperti program serial, MPI, Hybrid MPI/OMP, Pure OMP, dll dan telah dirancang untuk berjalan sesuai arsitektur ALELEON Supercomputer.
* User dapat menyampaikan permintaan ke admin perihal pembuatan template SLURM Script untuk kebutuhan tertentu yang belum ada di EFIRO.
[[Berkas:Jctemplate.png|nir|jmpl|500x500px|'''Daftar template SLURM Script di Template Job Composer''']]


=='''Resources ALELEON Supercomputer di SLURM'''==
=='''Resources ALELEON Supercomputer di SLURM'''==
Baris 65: Baris 55:


==='''Core Thread CPU pada ALELEON Supercomputer'''===
==='''Core Thread CPU pada ALELEON Supercomputer'''===
EFISON menggunakan CPU [https://www.amd.com/en/products/cpu/amd-epyc-7702p '''AMD EPYC 7702P'''] pada Partisi epyc dan [https://www.amd.com/en/products/cpu/amd-ryzen-threadripper-3990x '''AMD Threadripper 3990X'''] pada Partisi gpu_ampere'''.''' 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'''.   
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]]'''.
Secara default, '''penggunaan CPU pada ALELEON Supercomputer didasarkan pada core thread, termasuk [[Core Hour|penghitungan penggunaan komputasi CPU Core Hour user]]'''.
Baris 71: Baris 61:
=='''Parameter Resources SBATCH Esensial'''==
=='''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.
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 ===
=== Menggunakan Compute Node CPU / Partisi epyc ===
Baris 130: Baris 119:
* Nilai maksimal mem = '''125GB'''
* Nilai maksimal mem = '''125GB'''
* Nilai maksimal walltime = '''14-00:00:00'''
* Nilai maksimal walltime = '''14-00:00:00'''
---
---


Baris 146: Baris 134:
** 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 SBATCH output dan error job user.
---
==='''Menggunakan Paralelisasi Threading OpenMP atau BLAS'''===
Berikut adalah parameter untuk mengalokasikan threading per core para program yang menggunakan paralelisasi OpenMP (OMP), hybrid MPI/OMP, atau terintegrasi dengan BLAS:
#SBATCH --cpus-per-task=////
# diikuti dengan pengalokasikan threads contoh dengan OMP:
export OMP_NUM_THREADS='''$SLURM_CPUS_PER_TASK'''
* cpus-per-task
** Alokasi jumlah threading per ntasks.
** User mendefinisikan jumlah threading ke ''environment variable'' (contoh ke OMP_NUM_THREADS) dengan variabel '''$SLURM_CPUS_PER_TASK.'''
** Contoh mengalokasikan 4 thread per core: '''$SBATCH --cpus-per-task=4'''


=='''Dasar Menentukan Alokasi nodes, ntasks, dan mem'''==
=='''Dasar Menentukan Alokasi nodes, ntasks, dan mem'''==
Penggunaan superkomputer pada umumnya dan ALELEON Supercomputer membebaskan user dalam memilih alokasi resources komputasi yaitu jumlah node, core thread CPU, dan RAM. '''Terdapat beberapa aturan yang harus diketahui supaya user dapat mengalokasikan resources komputasi 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 dan efisien di ALELEON Supercomputer:
 
----
---


===Menentukan Jumlah Node===
===Menentukan Jumlah Node===
Baris 172: Baris 145:
{| class="wikitable"
{| class="wikitable"
!Jenis Program
!Jenis Program
!Jumlah Node
!nodes
|-
|-
|Non-MPI
|Non-MPI
Baris 193: Baris 166:


== '''Optimasi Performa pada SLURM Script''' ==
== '''Optimasi Performa pada SLURM Script''' ==
ALELEON Supercomputer dan arsitektur AMD EPYC mempunyai beberapa '''aturan khusus supaya user dapat memanfaatkan kemampuan komputasinya dengan optimal.''' Aturan ini telah dituangkan pada template SLURM Script untuk beberapa skenario komputasi seperti program serial, MPI, Hybrid MPI/OMP, penggunaan BLAS, dan masih banyak lagi.  
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.  


Admin EFISON merangkum aturan optimasi performa untuk menggunakan ALELEON Supercomputer dengan efisien pada laman:  
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 ]]
[[Berkas:Wiki-13.jpg|1000x1000px |link=Optimasi Performa ALELEON Supercomputer| alt=Optimasi Performa ALELEON Supercomputer ]]

Revisi per 10 Februari 2022 08.48

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="////"

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.
  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 Total 192 core fisik / 384 core thread
Core CPU per node 64 core fisik / 128 core thread
RAM per node 240GB
Partisi gpu_ampere - Compute Node GPU
Node 1
Core CPU 64 core fisik / 128 core thread
GPU 2
RAM 125GB

Info lebih detail dapat dipelajari pada laman Spesifikasi ALELEON Supercomputer.

---

Core Thread CPU pada 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.

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

Parameter Resources SBATCH Esensial

Terdapat ratusan jenis 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 --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

---

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 --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

---

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:

#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 dan efisien di ALELEON Supercomputer:


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.
Jenis Program nodes
Non-MPI 1
MPI atau paralel 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 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.

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:

Optimasi Performa ALELEON Supercomputer