Submit Script ALELEON Supercomputer

Dari ALELEON by EFISON

Revisi sejak 7 Februari 2022 08.39 oleh WilsonLisan (bicara | kontrib) (prefix ////, mengembalikan panduan alokasi resources, paraphrasing)

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

Say Hello to ////

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="nasigoreng.inp"

Memahami Struktur SLURM Script

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

Contoh template EFIRO Job Composer untuk menjalankan program ORCA

Penjelasan bagian dari SLURM Script:

  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.

Template SLURM Script EFIRO

Admin EFISON menyediakan berbagai template SLURM Script untuk berbagai tipe penggunaan dan software pada halaman Template Job Composer EFIRO.

  • 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 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.
  • User dapat menyampaikan permintaan ke admin untuk pembuatan template SLURM Script untuk kebutuhan tertentu yang belum ada di EFIRO.

Resources ALELEON Supercomputer di SLURM

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

  • Partisi epyc atau pengelompokan Compute Node CPU.
    • 3 Node (unit server), total 192 core fisik / 384 core thread CPU
    • Masing-masing node berisikan:
      • 64 core fisik / 128 core thread CPU
      • RAM 240GB.
    • Secara default, komputasi pada ALELEON Supercomputer diarahkan ke Partisi epyc.
  • Partisi gpu_ampere atau pengelompokan Compute Node GPU
    • 1 Node, total 2 GPU
      • CPU 64 core fisik / 128 core thread CPU
      • RAM 125GB.

Info lebih detail dapat dipelajari pada laman Spesifikasi ALELEON Supercomputer.

---

Core Thread CPU pada ALELEON Supercomputer

EFISON menggunakan CPU AMD EPYC 7702P pada Partisi epyc dan 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.

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.

---

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 Jumlah 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. Akan tetapi terdapat beberapa aturan yang harus diketahui supaya user dapat mengalokasikan resources komputasi dengan benar dan efisien di ALELEON Supercomputer. Alokasi resources yang tidak benar akan membuat lambat komputasi user dan membuang percuma kredit CPU Hour.

---

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 Jumlah Node
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.

---

Semakin Besar Jumlah Core CPU = Komputasi Semakin Cepat?

Bisa iya bisa tidak. Besar jumlah core CPU yang dibutuhkan bergantung pada:

  • Apabila menjalankan program CPU: bergantung pada besarnya skala input komputasi user. Admin ALELEON Supercomputer sepenuhnya menyerahkan tanggung jawab kepada user untuk mengetahui sendiri apakah input komputasi yang dijalankan adalah skala kecil atau besar.
    • Input komputasi skala kecil cukup membutuhkan jumlah core kecil (rekomendasi dibawah 16) dan bisa jadi lambat apabila dijalankan dengan jumlah core besar.
    • Input komputasi skala besar dapat menggunakan jumlah core CPU yang besar seperti 32, 64, 128, atau diatasnya.
  • Apabila menjalankan program GPU: kebanyakan membutuhkan jumlah core kecil karena pada dasarnya semua komputasi dikerjakan oleh GPU. Cukup jarang ada program GPU yang membutuhkan jumlah core CPU besar.

---

Memperkirakan Kapasitas RAM yang Digunakan

Apakah program user membutuhkan banyak RAM atau tidak? 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 ALELEON Supercomputer

ALELEON Supercomputer dan arsitektur AMD EPYC mempunyai beberapa aturan khusus supaya user dapat memanfaatkan kemampuan komputasinya dengan optimal. Aturan ini juga dituangkan pada SLURM Script untuk beberapa skenario komputasi seperti MPI, Hybrid MPI/OMP, penggunaan BLAS, dan masih banyak lagi. Admin EFISON merangkum rules of thumb bagi user untuk mengalokasikan jumlah resources komputasi dan melakukan optimasi performa pada ALELEON Supercomputer di:

Optimasi Performa ALELEON Supercomputer