FLACS-CFD: Perbedaan antara revisi

Dari ALELEON by EFISON
(menambahkan alokasi resources)
(overhaul 13/03/2023)
Baris 2: Baris 2:
{| class="wikitable"
{| class="wikitable"
|+LICENSED SOFTWARE!
|+LICENSED SOFTWARE!
!Software ini berjalan di ALELEON Supercomputer melalui FLACS License Manager dengan izin lisensi dan dikelola oleh PT. Gexcon Indonesia.
!Software ini berjalan di ALELEON Supercomputer melalui FLACS License Manager dengan izin lisensi yang dikelola oleh PT. Gexcon Indonesia.
|}
|}


Baris 17: Baris 17:
|-
|-
|21.3
|21.3
|flacs-cfd
|flacs-cfd/21.3
|V
|X
|V
|X
|-
|22.1
|flacs-cfd/22.1
|V
|V
|X
|X
Baris 23: Baris 30:
|X
|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:
# Menjalankan satu simulasi per job submission.
# 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''' ==
== '''Menjalankan FLACS-CFD''' ==
User dapat menjalankan FLACS-CFD melalui pilihan '''''(untuk tutorial lengkap klik judul)''''':
User dapat menjalankan FLACS-CFD dengan pilihan cara menjalankan komputasi:


=== [https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#3_-_Menjalankan_Komputasi_ke_Compute_Node_via_Job_Composer EFIRO Job Composer] ===
=== [https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#3_-_Menjalankan_Komputasi_ke_Compute_Node_via_Job_Composer EFIRO Job Composer] ===
Dengan pilihan template yang tersedia:  
Menjalankan komputasi dengan tampilan grafis pada formulir job submission EFIRO Job Composer. Berikut adalah pilihan template FLACS-CFD yang tersedia:  
{| class="wikitable"
{| class="wikitable"
!Nama Template
!Nama Template
Baris 34: Baris 68:
|-
|-
|FLACS-CFD 21.3
|FLACS-CFD 21.3
|Menjalankan FLACS-CFD 21.3 standar
|Menjalankan FLACS-CFD 21.3 untuk satu simulasi
|-
|-
|FLACS-CFD 21.3 Array
|FLACS-CFD 21.3 Array
|Menjalankan FLACS-CFD 21.3 dalam skema SLURM 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
|}
|}


=== [https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#4_-_Menjalankan_Komputasi_ke_Compute_Node_via_SLURM_sbatch SLURM sbatch via Terminal] ===
=== [https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#4_-_Menjalankan_Komputasi_ke_Compute_Node_via_SLURM_sbatch SLURM sbatch via Terminal] ===
Berikut adalah contoh Submit Script menjalankan FLACS-CFD standar ''(diambil dari template EFIRO Job Composer).'' Untuk nama modul software lihat tabel pada subbab Versi yang Tersedia.
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.
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
!Contoh Submit Script FLACS-CFD
!Contoh SLURM Submit Script FLACS-CFD untuk satu simulasi
|-
|-
|
|
  #!/bin/bash
  #!/bin/bash
   
   
  # ----------------------------------------------------------------------
  # ------------------------------------------------------------------------
  # Template FLACS-CFD 21.3
  # | Template SLURM Submit Script
  # Catatan:
# | Software        : FLACS-CFD
  # 1. User dapat mengisi parameter dengan mengganti bagian yang ditandai  
  # | Versi          : tergantung input user
#    4 garing (////). Contoh: #SBATCH --mem=//// -> #SBATCH --mem=64GB
# | Update script  r: 13/03/2023
  # 2. Panduan mengisi template:
# |
  #    <nowiki>https://wiki.efisonlt.com/wiki/SLURM_Script_ALELEON_Supercomputer</nowiki>
# | 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:  
  # |   <nowiki>https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer</nowiki>
  # ------------------------------------------------------------------------
   
   
  #------------- SBATCH Partisi epyc / Compute Node CPU  -----------------
  # --------------------------------------------------
  # Alokasi node, core thread CPU, RAM
  # Alokasi komputasi, modul software, dan file input
  #SBATCH --nodes=1   
  # --------------------------------------------------
#SBATCH --ntasks=////
#SBATCH --mem=////GB
   
   
  # Time, nama output, dan error dapat diganti sesuai keinginan user
  # Alokasi jumlah compute node
  #SBATCH --time=24:00:00
  #SBATCH --nodes=1
#SBATCH --output=result-%j.txt
#SBATCH --error=error-%j.txt
   
   
  # Notifikasi ke e-mail user tentang status jalannya job
  # Alokasi jumlah core thread CPU
  #SBATCH --mail-user=////
#SBATCH --ntasks=////
  #SBATCH --mail-type=begin
  #SBATCH --mail-type=end
# 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 ----------------------------------
  # -------------------------------------------------
# Load FLACS CFD software
# RUN SCRIPT
module load flacs-cfd
# -------------------------------------------------
   
   
  # Run command
  # Run command
Baris 81: Baris 144:
  run_flacscfd_omp ////
  run_flacscfd_omp ////
|}
|}
Berikut adalah contoh Submit Script menjalankan FLACS-CFD dalam skema array ''(diambil dari template EFIRO Job Composer)'':
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.
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
!Contoh Submit Script FLACS-CFD Array
!Contoh SLURM Submit Script FLACS-CFD Array
|-
|-
|
|
  #!/bin/bash
  #!/bin/bash
   
   
  # ----------------------------------------------------------------------
  # ------------------------------------------------------------------------
  # Template FLACS-CFD 21.3 Array
  # | Template SLURM Submit Script
  # Catatan:
# | Software        : FLACS-CFD (Array)
  # 1. User dapat mengisi parameter dengan mengganti bagian yang ditandai  
# | Versi          : tergantung input user
#    4 garing (////). Contoh: #SBATCH --mem=//// -> #SBATCH --mem=64GB
# | Update script  r: 13/03/2023
  # 2. Panduan mengisi template:
# |
  #    <nowiki>https://wiki.efisonlt.com/wiki/SLURM_Script_ALELEON_Supercomputer</nowiki>
  # | 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:  
  # |   <nowiki>https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer</nowiki>
  # ------------------------------------------------------------------------
# --------------------------------------------------
# Alokasi komputasi, modul software, dan file input
# --------------------------------------------------
   
   
#------------- SBATCH Partisi epyc / Compute Node CPU  -----------------
  # Alokasi jumlah compute node
  # Alokasi node, core thread CPU, RAM
  #SBATCH --nodes=1
  #SBATCH --nodes=1    
#SBATCH --ntasks=////
#SBATCH --mem=////GB
   
   
  # Jumlah job array, contoh: 1-128
  # Alokasi jumlah core thread CPU
  #SBATCH --array=////
  #SBATCH --ntasks=////
   
   
  # Time, nama output, dan error dapat diganti sesuai keinginan user
  # Alokasi jumlah memori RAM (satuan GB)
  #SBATCH --time=24:00:00
  #SBATCH --mem=////GB
#SBATCH --output=result-%j.txt
#SBATCH --error=error-%j.txt
   
   
  # Notifikasi ke e-mail user tentang status jalannya job
  # Alokasi limit waktu menjalankan job, format HH:MM:SS atau D-HH:MM:SS
  #SBATCH --mail-user=////
  #SBATCH --time=////
  #SBATCH --mail-type=begin
  #SBATCH --mail-type=end
# 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 ----------------------------------
  # FLACS CS INPUT FILES WITH WILDCARD. Example: cs??????.dat3
  # FLACS CS INPUT FILES WITH WILDCARD. Example: cs??????.dat3
  INPUT_FILE='cs////.dat3'
  INPUT_FILE='cs////.dat3'
# -------------------------------------------------
# RUN SCRIPT
# -------------------------------------------------
   
   
  # Abbreviate some SLURM variables for brevity/readability
  # Abbreviate some SLURM variables for brevity/readability
Baris 160: Baris 246:
  run_flacscfd_omp ${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.


=== Alokasi Resource SBATCH FLACS-CFD ===
Silahkan tambahan SBATCH berikut pada SLURM Submit Script (dapat ditambahkan setelah SBATCH error) apabila user ingin menerima notifikasi email dari SLURM:
Berikut adalah rentang alokasi resource SBATCH berdasarkan karakteristik software FLACS-CFD:  
#SBATCH --mail-user=<''alamat-email-user''>
{| class="wikitable"
#SBATCH --mail-type=begin
!Alokasi Komponen
#SBATCH --mail-type=end
!SBATCH
*'''mail-user'''** Alamat email user untuk menerima notifikasi SLURM
!Nilai MAKSIMAL
* '''mail-type=begin'''
|-
**Notifikasi email yang menginfokan job sudah berjalan.
|Jumlah Compute Node
*'''mail-type=end'''
| --nodes
**Notifikasi email yang menginfokan job sudah selesai.
|1
** Sekaligus memberikan cuplikan 20 baris terakhir dari file output SBATCH output dan error job user.
|-
|Jumlah Core thread CPU
| --ntasks
|128
|-
|Kapasitas RAM
| --mem
|240GB
|-
|Walltime
|<nowiki>--time</nowiki>
|maks 14-00:00:00
|-
|Array (untuk FLACS array)
| --array
|1-128
|-
| colspan="3" |Info lebih detail baca:
 
* [[Submit Script ALELEON Supercomputer|'''Submit Script ALELEON Supercomputer''']]
|}
Info lebih detail dan umum kunjungi:

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.