Submit Script ALELEON Supercomputer

Dari ALELEON by EFISON

Revisi sejak 4 Februari 2022 15.17 oleh WilsonLisan (bicara | kontrib) (memindahkan bagian optimasi performa ke halaman terpisah)

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

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 dan langkah user membuat SLURM Script:

  1. Menulis header #!/bin/bash karena SLURM Script adalah bash script.
  2. Membuat dan menentukan 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. Menulis perintah untuk menjalankan program user.

Resources ALELEON Supercomputer di SLURM

Sebelum menentukan alokasi resource job, 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 parameter esensial yang digunakan pada ALELEON Supercomputer.

---

Menggunakan Compute Node CPU / Partisi epyc

Berikut adalah parameter SBATCH yang direkomendasikan dan secara umum dapat digunakan untuk semua jenis job:

# user mengisi parameter dengan mengganti bagian yang ditandai dengan ////

#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
  • ntasks
    • Alokasi jumlah core thread CPU yang digunakan.
    • Contoh mengalokasikan 32 core thread CPU: #SBATCH --ntasks=32
  • mem
    • Alokasi kapasitas RAM per node yang digunakan, diikuti dengan satuan KB, MB, atau GB.
    • Contoh mengalokasikan RAM 32GB: #SBATCH --mem=32GB
  • 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
  • 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:

# user mengisi parameter dengan mengganti bagian yang ditandai dengan ////

#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
    • Contoh mengalokasikan 2 GPU: #SBATCH --gres=gpu:2

---

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 tambahan untuk mengalokasikan threading per core para programyang 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 (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

Superkomputer membebaskan user dalam menentukan jumlah core prosesor, RAM, dan node yang akan digunakan. Apakah program user cukup menggunakan 8 core atau sekalian 64 core? Apakah program user hanya dapat berjalan pada 1 node atau bisa lebih? Apakah RAM 16GB sudah cukup atau butuh lebih? Hal ini ditambah dengan ALELEON Supercomputer dan arsitektur AMD EPYC mempunyai beberapa aturan khusus supaya user dapat memanfaatkan kemampuan komputasinya dengan optimal.

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

Contoh SLURM Script

EFISON merangkum contoh SLURM script untuk penggunaan berbagai skenario komputasi pada laman Contoh SLURM Script.

Contoh SLURM Script Software Spesifik

EFISON juga merangkum contoh SLURM script untuk software komputasi saintifik pada laman Software di HPC Aleleon Mk.II.