FLACS-CFD: Perbedaan antara revisi

Dari ALELEON by EFISON
(paraphrasing)
 
(8 revisi perantara oleh pengguna yang sama tidak ditampilkan)
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 yang dikelola oleh PT. Gexcon Indonesia.
!Software ini berjalan di ALELEON Supercomputer dengan izin lisensi yang dikelola oleh PT. Gexcon Indonesia.
|}
|}


== '''Versi yang Tersedia''' ==
== '''Modul FLACS-CFD''' ==
Berikut adalah detail versi FLACS-CFD yang tersedia secara global di ALELEON Supercomputer:
Berikut adalah detail versi FLACS-CFD yang tersedia secara global di ALELEON Supercomputer:
{| class="wikitable"
{| class="wikitable"
Baris 27: Baris 27:
|22.1
|22.1
|flacs-cfd/22.1
|flacs-cfd/22.1
|V
|X
|V
|X
|-
|24.1
|flacs-cfd/24.1
|V
|V
|X
|X
Baris 32: Baris 39:
|X
|X
|}
|}
{| class="wikitable"
== '''Pilihan Skema Menjalankan FLACS-CFD''' ==
|+Program non-MPI!
Terdapat dua cara menjalankan FLACS-CFD:  
!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 satu simulasi per job submission.
Baris 62: Baris 64:
   
   
  ''Maka total alokasi adalah CPU 8*2 = 16 core dan memori RAM 8*4GB = 32GB''  
  ''Maka total alokasi adalah CPU 8*2 = 16 core dan memori RAM 8*4GB = 32GB''  
=='''Pilihan Menjalankan Komputasi'''==
User dapat memilih metode menjalankan komputasi sesuai keinginan:
*'''Job submission terminal'''
**''Berjalan di [[Spesifikasi ALELEON Supercomputer#Spesifikasi%20Compute%20Node|compute node]] melalui manajemen Slurm.''
*'''Job submission web EFIRO'''
**''Berjalan di [[Spesifikasi ALELEON Supercomputer#Spesifikasi%20Compute%20Node|compute node]] melalui manajemen Slurm via web EFIRO.''
===Job Submission Terminal===
{| class="wikitable mw-collapsible mw-collapsed"
!Langkah Job Submission Terminal
[[Berkas:Sbatch Terminal.png|tepi|400x400px]]
|-
!1
|-
| Lakukan [https: / wiki.efisonlt.com wiki Menggunakan_ALELEON_Supercomputer_via_Terminal#1_ |'''[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#Login_SSH Login SSH]''' ke ALELEON Supercomputer.
|-
!2
|-
|Siapkan file komputasi yang dibutuhkan.
*User dapat upload / download file dengan [[Upload File dengan Aplikasi FTP|'''software FTP''']].
|-
!3
|-
|Buat '''Submit Script''' yaitu 'formulir' untuk menjalankan job komputasi.


== '''Menjalankan FLACS-CFD''' ==
* Nama file bebas dengan format .sh, contoh '''<code>submit.sh</code>'''
User dapat menjalankan FLACS-CFD dengan pilihan cara menjalankan komputasi:
|-
!
|-
|Contoh template Submit Script, ikuti petunjuk NOTES didalamnya.
 
* ''<small>Klik expand / kembangkan</small>''


=== [https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#3_-_Menjalankan_Komputasi_ke_Compute_Node_via_Job_Composer EFIRO Job Composer] ===
{| class="wikitable mw-collapsible mw-collapsed"
Menjalankan komputasi dengan tampilan grafis pada formulir job submission EFIRO Job Composer. Berikut adalah pilihan template FLACS-CFD yang tersedia:  
!Template Submit Script FLACS-CFD
|-
|<syntaxhighlight lang="bash" line="1">
#!/bin/bash
 
# -----------------------------------------------------
# Template SLURM Submit Script
# FLACS-CFD | rev.080124
#
# NOTES:
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------
 
# -----------------------------------------------------
# Alokasi komputasi SBATCH, input, dan module
# -----------------------------------------------------
 
# 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 program
#SBATCH --output=result-%j.txt
 
# Definisi file untuk menampung output error log   
#SBATCH --error=error-%j.txt
 
# Memuat modul software FLACS-CFD
# Daftar modul lihat subbab "Modul FLACS-CFD" di atas
module load flacs-cfd////
 
# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------
 
fgc - ////
run_flacscfd_omp ////
</syntaxhighlight>
|}
{| class="wikitable mw-collapsible mw-collapsed"
!Template Submit Script FLACS-CFD dengan skema Array
|-
|<syntaxhighlight lang="bash" line="1">
#!/bin/bash
 
# -----------------------------------------------------
# Template SLURM Submit Script
# FLACS-CFD Array | rev.080124
#
# NOTES:
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------
 
# -----------------------------------------------------
# Alokasi komputasi SBATCH, input, dan module
# -----------------------------------------------------
 
# Alokasi jumlah core thread CPU
#SBATCH --ntasks=////
 
# Jumlah job array, contoh: 1-128
#SBATCH --array=////
 
# 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 program
#SBATCH --output=result-%j.txt
 
# Definisi file untuk menampung output error log   
#SBATCH --error=error-%j.txt
 
# FLACS CS INPUT FILES WITH WILDCARD. Example: cs??????.dat3
INPUT_FILE="cs////.dat3"
 
# Memuat modul software FLACS-CFD
# Daftar modul lihat subbab "Modul FLACS-CFD" di atas
module load flacs-cfd////
 
# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------
 
# 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}"
 
# Running fgc and FLACS CFD
fgc - ${my_file_id}
run_flacscfd_omp ${my_file_id}
</syntaxhighlight>
|}
|-
|
* ''<small>Info script lebih detail lihat [[Submit Script ALELEON Supercomputer|'''Submit Script ALELEON Supercomputer''']].</small>''
 
*''<small>Untuk SBATCH notifikasi email status jalannya job lihat [https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer#SBATCH_untuk_notifikasi_email_SLURM '''Slurm Jojo'''].</small>''
|-
!4
|-
|Jalankan job komputasi dengan perintah:
$ '''sbatch ''[nama-submit-script]'''''
''Contoh:''
$ sbatch submit.sh
|-
!5
|-
|User dapat melihat status jalannya job dengan perintah:
'''<code>$ squeue -ul $USER</code>'''
 
Kolom ST atau STATE menunjukkan status jalannya job.
{| class="wikitable"
{| class="wikitable"
|+Template Job Composer FLACS-CFD
! colspan="2" |''Kolom ST atau STATE menunjukkan status jalannya job.''
!Nama Template
|-
!STATE
!Penjelasan
|-
| R (RUN)
|Job berjalan
|-
|PD (PENDING)
|Job tertahan, lihat [[Daftar Reason NODELIST ALELEON Supercomputer|'''NODELIST(REASON)''']]
|-
|CG (COMPLETING)
|Job selesai dan dalam proses clean-up
|-
|CA (CANCELED)
|Job dibatalkan user
|-
|PR (PREEMPETED)
|Job dibatalkan admin, alasan dikabarkan via email
|-
|S (SUSPENDED)
|Job ditahan admin, alasan dikabarkan via email
|}
|-
!
|-
|Apabila user ingin menghentikan job yang berjalan, jalankan perintah:
'''$ scancel ''[job-ID]'''''
''Job ID ada pada squeue diatas.''
contoh membatalkan job ID 231:
$ scancel 231
|}
===Job Submission Web EFIRO===
{| class="wikitable mw-collapsible mw-collapsed"
!Langkah Job Submission Web EFIRO
[[Berkas:Efirojobcomposer3.png|nirbing|400x400px]]
|-
!1
|-
| Lakukan [https: / wiki.efisonlt.com wiki Menggunakan_ALELEON_Supercomputer_via_Terminal#1_ |'''[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#Login_Web_EFIRO Login ke web EFIRO]''' ALELEON Supercomputer.
|-
! 2
|-
|[[Berkas:New Pinnedapps jc.png|nirbing|128x128px]]Buka pinned apps '''Job Composer'''  di homepage EFIRO.
Pilih menu '''<code>New Job</code>''' -> '''<code>From Template</code>'''
 
[[Berkas:Jcnewjobmarked.png|nirbing|180x180px]]
|-
! 3
|-
|
{| class="wikitable"
! colspan="2" |Pilih template FLACS-CFD yang diinginkan:
|-
! Nama Template
!Penjelasan
!Penjelasan
|-
|-
|FLACS-CFD 21.3
|FLACS-CFD 21.3
|Menjalankan FLACS-CFD 21.3 untuk satu simulasi  
|Menjalankan FLACS-CFD 21.3 satu simulasi
|-
|-
|FLACS-CFD 21.3 Array
|FLACS-CFD 21.3 Array
|Menjalankan FLACS-CFD 21.3 dalam skema SLURM array untuk banyak simulasi sekaligus
|Menjalankan FLACS-CFD 21.3 skema array
|-
|-
|FLACS-CFD 22.1
|FLACS-CFD 22.1
|Menjalankan FLACS-CFD 22.1 untuk satu simulasi
|Menjalankan FLACS-CFD 22.1 satu simulasi
|-
|-
|FLACS-CFD 22.1 Array
|FLACS-CFD 22.1 Array
|Menjalankan FLACS-CFD 22.1 dalam skema SLURM array untuk banyak simulasi sekaligus
|Menjalankan FLACS-CFD 22.1 skema array
|}
|-
|FLACS-CFD 24.1
|Menjalankan FLACS-CFD 24.1 satu simulasi
|-
|FLACS-CFD 24.1 Array
|Menjalankan FLACS-CFD 24.1 skema array
|}Kemudian Isi '''<code>Job Name</code>''' dan klik '''<code>Create New Job</code>'''


=== [https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#4_-_Menjalankan_Komputasi_ke_Compute_Node_via_SLURM_sbatch SLURM sbatch via Terminal] ===
[[Berkas:Jctemplate-2.png|nirbing]]
Menjalankan komputasi pada terminal melalui job submission SLURM sbatch.  
|-
!4
|-
| Siapkan file komputasi yang dibutuhkan:
* Upload / download / edit file via menu <code>'''Edit Files'''</code>
**Untuk upload file tunggal diatas 2GB gunakan [[Upload File dengan Aplikasi FTP|'''software FTP''']].
[[Berkas:JC job menu.png|nirbing|500x500px]]
|-
!5
|-
|Lengkapi '''Submit Script''' melalui tombol '''<code>Open Editor:</code>'''
*Submit script adalah 'formulir' untuk menjalankan job komputasi.
**Ikuti petunjuk NOTES didalamnya.
*Klik '''<code>Save</code>''' setiap kali mengubah script.
[[Berkas:Jceditor3.png|al=|nirbing|400x400px]]
|-
|
* ''<small>Info script lebih detail lihat [[Submit Script ALELEON Supercomputer|'''Submit Script ALELEON Supercomputer''']].</small>''


Berikut adalah contoh referensi Submit Script untuk menjalankan FLACS-CFD dengan satu simulasi saja. Perhatikan nama modul mengacu versi FLACS-CFD yang akan digunakan.
*''<small>Untuk SBATCH notifikasi email status jalannya job lihat [https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer#SBATCH_untuk_notifikasi_email_SLURM '''Slurm Jojo'''].</small>''
{| class="wikitable mw-collapsible"
!Contoh SLURM Submit Script FLACS-CFD untuk satu simulasi
|-
|-
|
!6
#!/bin/bash
|-
|Jalankan job dengan klik tombol '''<code>Submit</code>'''.
# ------------------------------------------------------------------------
*Pantau kolom status yang menjelaskan status jalannya job.
# | Template SLURM Submit Script
*Apabila ingin membatalkan job yang berjalan, klik '''<code>Stop</code>'''.
# | Software        : FLACS-CFD
[[Berkas:JC job runstop.png|al=|nirbing|500x500px]]
# | Versi          : tergantung input user
{| class="wikitable"
# | Update script  r: 13/03/2023
! colspan="2" |Daftar Status Job
# |
|-
# | NOTES:
!Status
# | 1. Isi bagian yang ditandai 4 garing (////).
!Arti
# | 2. Template ini adalah referensi - user dapat mengubah bagian yang
|-
# |   sekiranya perlu diubah.
| Not Submitted
# | 3. Panduan mengisi alokasi komputasi (SBATCH) menurut spesifikasi
|Job belum pernah dijalankan.
# |   ALELEON Supercomputer lihat:
|-
# |   <nowiki>https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer</nowiki>
|Running
# ------------------------------------------------------------------------
|Job berjalan.
|-
# --------------------------------------------------
|Queue
# Alokasi komputasi, modul software, dan file input
|Job mengantri dan belum berjalan.
# --------------------------------------------------
|-
|Completed
# Alokasi jumlah compute node
|Job selesai berjalan.
#SBATCH --nodes=1
|-
|Failed
# Alokasi jumlah core thread CPU (maks 128)
|Job berhenti karena error atau di stop user.
#SBATCH --ntasks=////
|-
| colspan="2" |'''''Untuk melihat alasan job yang queue:'''''[[Berkas:Active Jobs detail.png|nir|jmpl|300x300px|''Buka pinned apps '''Active Jobs''' di homepage EFIRO. Ubah opsi All jobs ke '''Your Jobs'''. Klik simbol '''>''' untuk melihat status job yang pending pada kolom Reason. Arti reason lihat laman [[Daftar Reason NODELIST ALELEON Supercomputer|'''Daftar Reason NODELIST ALELEON Supercomputer''']].'']]
# 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.
{| class="wikitable mw-collapsible"
!Contoh SLURM Submit Script FLACS-CFD Array
|-
|-
|
! 7
#!/bin/bash
|-
|Lihat output file komputasi pada kolom '''<code>Folder Contents</code>'''
# ------------------------------------------------------------------------
*Atau dengan membuka '''<code>Edit Files</code>'''
# | Template SLURM Submit Script
[[Berkas:Jcfoldercontentsedit.png|al=|nir|jmpl|''Kolom '''<code>Folder Contents</code>'''.'']]
# | Software        : FLACS-CFD (Array)
|-
# | Versi          : tergantung input user
!8
# | Update script  r: 13/03/2023
|-
# |
|Untuk menghapus ruang job dan datanya:
# | NOTES:  
* Pilih ruang job yang akan dihapus.
# | 1. Isi bagian yang ditandai 4 garing (////).
*Klik menu '''<code>Delete</code>'''
# | 2. Template ini adalah referensi - user dapat mengubah bagian yang
[[Berkas:JC delete menu.png|nirbing|500x500px]]
# |   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
# --------------------------------------------------
# Alokasi jumlah compute node
#SBATCH --nodes=1
# Alokasi jumlah core thread CPU (maks 128)
#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'''==
=='''Pelaporan Kendala dan Support'''==
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.
Apabila menjumpai masalah teknis dalam menjalankan komputasi, silahkan lapor dengan klik gambar berikut ini.
 
[[Berkas:Wiki-pelaporankendala.jpg|1000x1000px|link=https://efisonlt.com/aleleonbugreport]]
 
---


Silahkan tambahan SBATCH berikut pada SLURM Submit Script (dapat ditambahkan setelah SBATCH error) apabila user ingin menerima notifikasi email dari SLURM:
Bila terdapat pertanyaan lainnya, silahkan hubungi admin EFISON melalui email:
  #SBATCH --mail-user=<''alamat-email-user''>
  '''support@efisonlt.com'''
#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.

Revisi terkini sejak 22 Juli 2024 09.53

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 dengan izin lisensi yang dikelola oleh PT. Gexcon Indonesia.

Modul FLACS-CFD

Berikut adalah detail versi FLACS-CFD yang tersedia secara global di ALELEON Supercomputer:

Modul FLACS-CFD
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
24.1 flacs-cfd/24.1 V X V X

Pilihan Skema Menjalankan FLACS-CFD

Terdapat dua cara 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 

Pilihan Menjalankan Komputasi

User dapat memilih metode menjalankan komputasi sesuai keinginan:

  • Job submission terminal
  • Job submission web EFIRO
    • Berjalan di compute node melalui manajemen Slurm via web EFIRO.

Job Submission Terminal

Langkah Job Submission Terminal

Sbatch Terminal.png

1
Login SSH ke ALELEON Supercomputer.
2
Siapkan file komputasi yang dibutuhkan.
3
Buat Submit Script yaitu 'formulir' untuk menjalankan job komputasi.
  • Nama file bebas dengan format .sh, contoh submit.sh
Contoh template Submit Script, ikuti petunjuk NOTES didalamnya.
  • Klik expand / kembangkan
Template Submit Script FLACS-CFD
#!/bin/bash

# -----------------------------------------------------
# Template SLURM Submit Script
# FLACS-CFD | rev.080124
# 
# NOTES: 
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------

# -----------------------------------------------------
# Alokasi komputasi SBATCH, input, dan module
# -----------------------------------------------------

# 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 program
#SBATCH --output=result-%j.txt

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

# Memuat modul software FLACS-CFD
# Daftar modul lihat subbab "Modul FLACS-CFD" di atas 
module load flacs-cfd////

# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------

fgc - ////
run_flacscfd_omp ////
Template Submit Script FLACS-CFD dengan skema Array
#!/bin/bash

# -----------------------------------------------------
# Template SLURM Submit Script
# FLACS-CFD Array | rev.080124
# 
# NOTES: 
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------

# -----------------------------------------------------
# Alokasi komputasi SBATCH, input, dan module
# -----------------------------------------------------

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

# Jumlah job array, contoh: 1-128
#SBATCH --array=////

# 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 program
#SBATCH --output=result-%j.txt

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

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

# Memuat modul software FLACS-CFD
# Daftar modul lihat subbab "Modul FLACS-CFD" di atas 
module load flacs-cfd////

# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------

# 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}"

# Running fgc and FLACS CFD
fgc - ${my_file_id}
run_flacscfd_omp ${my_file_id}
  • Untuk SBATCH notifikasi email status jalannya job lihat Slurm Jojo.
4
Jalankan job komputasi dengan perintah:
$ sbatch [nama-submit-script]

Contoh:
$ sbatch submit.sh 
5
User dapat melihat status jalannya job dengan perintah:

$ squeue -ul $USER

Kolom ST atau STATE menunjukkan status jalannya job.

Kolom ST atau STATE menunjukkan status jalannya job.
STATE Penjelasan
R (RUN) Job berjalan
PD (PENDING) Job tertahan, lihat NODELIST(REASON)
CG (COMPLETING) Job selesai dan dalam proses clean-up
CA (CANCELED) Job dibatalkan user
PR (PREEMPETED) Job dibatalkan admin, alasan dikabarkan via email
S (SUSPENDED) Job ditahan admin, alasan dikabarkan via email
Apabila user ingin menghentikan job yang berjalan, jalankan perintah:
$ scancel [job-ID]

Job ID ada pada squeue diatas.
contoh membatalkan job ID 231:
$ scancel 231

Job Submission Web EFIRO

Langkah Job Submission Web EFIRO

Efirojobcomposer3.png

1
Login ke web EFIRO ALELEON Supercomputer.
2
New Pinnedapps jc.pngBuka pinned apps Job Composer di homepage EFIRO.

Pilih menu New Job -> From Template

Jcnewjobmarked.png

3
Pilih template FLACS-CFD yang diinginkan:
Nama Template Penjelasan
FLACS-CFD 21.3 Menjalankan FLACS-CFD 21.3 satu simulasi
FLACS-CFD 21.3 Array Menjalankan FLACS-CFD 21.3 skema array
FLACS-CFD 22.1 Menjalankan FLACS-CFD 22.1 satu simulasi
FLACS-CFD 22.1 Array Menjalankan FLACS-CFD 22.1 skema array
FLACS-CFD 24.1 Menjalankan FLACS-CFD 24.1 satu simulasi
FLACS-CFD 24.1 Array Menjalankan FLACS-CFD 24.1 skema array
Kemudian Isi Job Name dan klik Create New Job

Jctemplate-2.png

4
Siapkan file komputasi yang dibutuhkan:
  • Upload / download / edit file via menu Edit Files

JC job menu.png

5
Lengkapi Submit Script melalui tombol Open Editor:
  • Submit script adalah 'formulir' untuk menjalankan job komputasi.
    • Ikuti petunjuk NOTES didalamnya.
  • Klik Save setiap kali mengubah script.

  • Untuk SBATCH notifikasi email status jalannya job lihat Slurm Jojo.
6
Jalankan job dengan klik tombol Submit.
  • Pantau kolom status yang menjelaskan status jalannya job.
  • Apabila ingin membatalkan job yang berjalan, klik Stop.

Daftar Status Job
Status Arti
Not Submitted Job belum pernah dijalankan.
Running Job berjalan.
Queue Job mengantri dan belum berjalan.
Completed Job selesai berjalan.
Failed Job berhenti karena error atau di stop user.
Untuk melihat alasan job yang queue:
Buka pinned apps Active Jobs di homepage EFIRO. Ubah opsi All jobs ke Your Jobs. Klik simbol > untuk melihat status job yang pending pada kolom Reason. Arti reason lihat laman Daftar Reason NODELIST ALELEON Supercomputer.
7
Lihat output file komputasi pada kolom Folder Contents
  • Atau dengan membuka Edit Files
Kolom Folder Contents.
8
Untuk menghapus ruang job dan datanya:
  • Pilih ruang job yang akan dihapus.
  • Klik menu Delete

JC delete menu.png

Pelaporan Kendala dan Support

Apabila menjumpai masalah teknis dalam menjalankan komputasi, silahkan lapor dengan klik gambar berikut ini.

Wiki-pelaporankendala.jpg

---

Bila terdapat pertanyaan lainnya, silahkan hubungi admin EFISON melalui email:

support@efisonlt.com