FLACS-CFD: Perbedaan antara revisi

Dari ALELEON by EFISON
(overhaul 13/03/2023)
Baris 253: Baris 253:
  #SBATCH --mail-type=begin
  #SBATCH --mail-type=begin
  #SBATCH --mail-type=end
  #SBATCH --mail-type=end
*'''mail-user'''** Alamat email user untuk menerima notifikasi SLURM
*'''mail-user'''
**Alamat email user untuk menerima notifikasi SLURM
* '''mail-type=begin'''
* '''mail-type=begin'''
**Notifikasi email yang menginfokan job sudah berjalan.
**Notifikasi email yang menginfokan job sudah berjalan.

Revisi per 13 Maret 2023 08.46

FLACS-CFD adalah software industri CFD buatan Gexcon (in-house software) untuk pemodelan ledakan dan keamanan desain konstruksi pabrik khususnya dari sisi simulasi persebaran api, asap, dan gas beracun ketika terjadi kecelakaan.

LICENSED SOFTWARE!
Software ini berjalan di ALELEON Supercomputer melalui FLACS License Manager dengan izin lisensi yang dikelola oleh PT. Gexcon Indonesia.

Versi yang Tersedia

Versi Nama Modul Dukungan Hardware
CPU GPU OMP Threading MPI Multi-Node
21.3 flacs-cfd/21.3 V X V X
22.1 flacs-cfd/22.1 V X V X

FLACS-CFD tidak menggunakan MPI sehingga tidak bisa berjalan paralel multi-node atau hanya dapat berjalan pada 1 Compute Node.

Skema Menjalankan FLACS-CFD

Terdapat dua cara dalam menjalankan FLACS-CFD:

  1. Menjalankan satu simulasi per job submission.
  2. Menjalankan banyak simulasi sekaligus dalam satu job submission dengan metode SLURM Array.

Menjalankan FLACS-CFD dengan SLURM Array

Metode ini memungkinkan user untuk menjalankan banyak simulasi sekaligus dalam satu job submission. Terdapat beberapa hal yang perlu diperhatikan:

  • Menggunakan parameter SBATCH SLURM dengan rumus:
#SBATCH --array=1-<jumlah-job-simulasi>

Contoh user menjalankan 8 job simulasi, maka parameter array menjadi: 
#SBATCH --array=1-8
  • Nama file input menggunakan metode wildcard.
  • Ketika menjalankan array, alokasi SBATCH ntasks (core thread CPU) dan mem (memori RAM) digunakan oleh setiap array job.
Contoh user mengalokasikan ntasks 2 dan mem 4GB untuk 8 job array
#SBATCH --array=1-8
#SBATCH --ntasks=2
#SBATCH --mem=4GB 

Maka total alokasi adalah CPU 8*2 = 16 core dan memori RAM 8*4GB = 32GB 

Menjalankan FLACS-CFD

User dapat menjalankan FLACS-CFD dengan pilihan cara menjalankan komputasi:

EFIRO Job Composer

Menjalankan komputasi dengan tampilan grafis pada formulir job submission EFIRO Job Composer. Berikut adalah pilihan template FLACS-CFD yang tersedia:

Nama Template Penjelasan
FLACS-CFD 21.3 Menjalankan FLACS-CFD 21.3 untuk satu simulasi
FLACS-CFD 21.3 Array Menjalankan FLACS-CFD 21.3 dalam skema SLURM array untuk banyak simulasi sekaligus
FLACS-CFD 22.1 Menjalankan FLACS-CFD 22.1 untuk satu simulasi
FLACS-CFD 22.1 Array Menjalankan FLACS-CFD 22.1 dalam skema SLURM array untuk banyak simulasi sekaligus

SLURM sbatch via Terminal

Menjalankan komputasi pada terminal melalui job submission SLURM sbatch. Berikut adalah contoh referensi Submit Script untuk menjalankan FLACS-CFD dengan satu simulasi saja. Perhatikan nama modul mengacu versi FLACS-CFD yang akan digunakan.

Contoh SLURM Submit Script FLACS-CFD untuk satu simulasi
#!/bin/bash

# ------------------------------------------------------------------------
# | Template SLURM Submit Script
# | Software        : FLACS-CFD
# | Versi           : tergantung input user
# | Update script  r: 13/03/2023
# |
# | NOTES: 
# | 1. Isi bagian yang ditandai 4 garing (////).
# | 2. Template ini adalah referensi - user dapat mengubah bagian yang 
# |    sekiranya perlu diubah.
# | 3. Panduan mengisi alokasi komputasi (SBATCH) menurut spesifikasi 
# |    ALELEON Supercomputer lihat: 
# |    https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer
# ------------------------------------------------------------------------

# --------------------------------------------------
# Alokasi komputasi, modul software, dan file input
# --------------------------------------------------

# Alokasi jumlah compute node
#SBATCH --nodes=1

# Alokasi jumlah core thread CPU
#SBATCH --ntasks=////

# Alokasi jumlah memori RAM (satuan GB)
#SBATCH --mem=////GB

# Alokasi limit waktu menjalankan job, format HH:MM:SS atau D-HH:MM:SS 
#SBATCH --time=////

# Definisi file untuk menampung output terminal
#SBATCH --output=result-%j.txt

# Definisi file untuk menampung output error log    
#SBATCH --error=error-%j.txt 

# Memuat modul software FLACS-CFD
module load flacs-cfd////

# DAFTAR MODUL FLACS-CFD: 
# ----------------------------------------
# | Nama modul        | Versi FLACS-CFD  |
# ---------------------------------------- 
# | flacs-cfd/21.3    | 21.3             |
# | flacs-cfd/22.1    | 22.1             |
# ----------------------------------------

# -------------------------------------------------
# RUN SCRIPT
# -------------------------------------------------

# Run command
fgc - ////
run_flacscfd_omp ////

Berikut adalah contoh referensi Submit Script untuk menjalankan FLACS-CFD dengan SLURM array untuk menjalankan banyak simulasi sekaligus. Perhatikan nama modul mengacu versi FLACS-CFD yang akan digunakan.

Contoh SLURM Submit Script FLACS-CFD Array
#!/bin/bash

# ------------------------------------------------------------------------
# | Template SLURM Submit Script
# | Software        : FLACS-CFD (Array)
# | Versi           : tergantung input user
# | Update script  r: 13/03/2023
# |
# | NOTES: 
# | 1. Isi bagian yang ditandai 4 garing (////).
# | 2. Template ini adalah referensi - user dapat mengubah bagian yang 
# |    sekiranya perlu diubah.
# | 3. Panduan mengisi alokasi komputasi (SBATCH) menurut spesifikasi 
# |    ALELEON Supercomputer lihat: 
# |    https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer
# ------------------------------------------------------------------------

# --------------------------------------------------
# Alokasi komputasi, modul software, dan file input
# --------------------------------------------------

# Alokasi jumlah compute node
#SBATCH --nodes=1

# Alokasi jumlah core thread CPU
#SBATCH --ntasks=////

# Alokasi jumlah memori RAM (satuan GB)
#SBATCH --mem=////GB

# Alokasi limit waktu menjalankan job, format HH:MM:SS atau D-HH:MM:SS 
#SBATCH --time=////

# Definisi file untuk menampung output terminal
#SBATCH --output=result-%j.txt

# Definisi file untuk menampung output error log    
#SBATCH --error=error-%j.txt 

# Memuat modul software FLACS-CFD
module load flacs-cfd////

# DAFTAR MODUL FLACS-CFD: 
# ----------------------------------------
# | Nama modul        | Versi FLACS-CFD  |
# ---------------------------------------- 
# | flacs-cfd/21.3    | 21.3             |
# | flacs-cfd/22.1    | 22.1             |
# ----------------------------------------

# FLACS CS INPUT FILES WITH WILDCARD. Example: cs??????.dat3
INPUT_FILE='cs////.dat3'

# -------------------------------------------------
# RUN SCRIPT
# ------------------------------------------------- 

# Abbreviate some SLURM variables for brevity/readability
TASK_MIN=${SLURM_ARRAY_TASK_MIN}
TASK_MAX=${SLURM_ARRAY_TASK_MAX}
TASK_ID=${SLURM_ARRAY_TASK_ID}
TASK_COUNT=${SLURM_ARRAY_TASK_COUNT}

# Form a list of relevant files, and check the number of array elements
# matches the number of cases with 6-digit identifiers.
CS_FILES=(`ls -1 ${INPUT_FILE}`)

if test "${#CS_FILES[@]}" -ne "${TASK_COUNT}";
then
  printf "Number of files is:       %s\n" "${#CS_FILES[@]}"
  printf "Number of array tasks is: %s\n" "${TASK_COUNT}"
  printf "Do not match!\n"
fi

# All tasks loop through the entire list to find their specific case.

for (( jid = $((${TASK_MIN})); jid <= $((${TASK_MAX})); jid++ ));
do
  if test "${TASK_ID}" -eq "${jid}";
  then
      # File list index with offset zero
      file_id=$((${jid} - ${TASK_MIN}))
      # Form the substring file_id (recall syntax is :offset:length)
      my_file=${CS_FILES[${file_id}]}
      my_file_id=${my_file:2:6}
  fi
done

printf "Task %d has file %s id %s\n" "${TASK_ID}" "${my_file}" "${my_file_id}"

# Load FLACS module
module load flacs-cfd

# Running fgc and FLACS CFD
fgc - ${my_file_id}
run_flacscfd_omp ${my_file_id}

Notifikasi Status Jalannya Job Submission via email

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 pada SLURM Submit Script (dapat ditambahkan setelah SBATCH error) 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.