GROMACS: Perbedaan antara revisi

Dari ALELEON by EFISON
(test)
(overhaul total halaman dengan membuat standar penulisan baru untuk OOD)
Baris 19: Baris 19:
|}
|}


== '''Menjalankan Perintah Interaktif GROMACS di Terminal''' ==
== '''Menjalankan GROMACS''' ==
Beberapa perintah GROMACS bekerja secara interaktif dan membutuhkan input dari user (contoh: '''pdb2gmx, grompp''') sehingga harus dijalankan via terminal atau menu '''Open Terminal'''. Adapun untuk perintah '''mdrun''' harus dijalankan via Job Composer.
User menjalankan GROMACS di '''Job Composer''' EFIRO yang dapat dibuka melalui menu Jobs > Jobs Composer


[[Berkas:Efirojobcomposermenu.png|nirbing|400x400px]]
----
=== 1. Memilih template GROMACS ===
Pilih '''New Jobs > From Template''' kemudian user memilih template untuk menjalankan GROMACS. Pilih template GROMACS yang dibutuhkan, isi '''Job Name''' sesuai keinginan user kemudian klik '''Create New Job'''.
[[Berkas:Jcnewjob.png|nirbing|200x200px]]
[[Berkas:Jcselecttemplate2.png|al=|nirbing|600x600px|pra=https://wiki.efisonlt.com/wiki/Berkas:Jcselecttemplate2.png]]
{| class="wikitable"
!Template GROMACS yang tersedia
|-
|'''GROMACS (CPU) - Standard Template'''
* Template standar menjalankan GROMACS di Compute Node CPU.
|-
|'''GROMACS dengan 1 GPU'''
* Menjalankan GROMACS dengan bantuan akselerasi 1 GPU.
|-
|'''GROMACS dengan 2 GPU'''
* Menjalankan GROMACS dengan bantuan akselerasi 2 GPU.
|}
----
=== 2. Mempersiapkan file input dan menjalankan interaktif GROMACS ===
[[Berkas:Jcjoboption.png|nirbing|600x600px]]
[[Berkas:Jcjoboption.png|nirbing|600x600px]]


Sebelum melakukan perintah interaktif GROMACS, load module GROMACS:
* User dapat melakukan manajemen file seperti upload input file, editing input file, rename, dll melalui menu '''Edit Files.'''
 
* Beberapa perintah GROMACS bekerja secara interaktif dan membutuhkan input dari user (contoh: '''pdb2gmx, grompp''') sehingga harus dijalankan via terminal melalui menu '''Open Terminal.'''
** Muat modul GROMACS untuk mengaktifkan software GROMACS:
** Lanjutkan dengan melakukan perintah interaktif GROMACS (contoh: pdb2gmx):
 
  $ module load gromacs
  $ module load gromacs
Lanjutkan dengan melakukan perintah interaktif GROMACS (contoh: pdb2gmx):
  $ gmx_mpi pdb2gmx <parameter_input_dan_output>
  $ gmx_mpi pdb2gmx <parameter_input_dan_output>
----


== '''Menjalankan GROMACS via Job Composer''' ==
=== 3. Melengkapi Submit Script Template ===
Test
Submit Script adalah set perintah untuk menjalankan program user ke Compute Node melalui '''manajemen SLURM'''. User perlu melengkapi script template supaya program GROMACS dapat berjalan melalui menu '''Open Editor.'''


== '''Contoh SLURM Script''' ==
[[Berkas:Jceditor.png|nirbing|500x500px]]
User harus menggunakan [[Manajemen SLURM Aleleon|'''manajemen SLURM''']] untuk menjalankan komputasi GROMACS di Compute Node. User dapat menjalankan GROMACS dengan satu node atau paralel (lebih dari satu node) untuk performa lebih kencang.


=== '''Satu Node CPU''' ===
* User dapat memahami script dan mengikuti instruksi melalui penjelasan di deretan comment script template.
Contoh berikut untuk menjalankan GROMACS pada satu node CPU.
* Panduan lengkap untuk mengisi Submit Script dengan benar pada ALELEON Supercomputer:  
#!/bin/bash
#SBATCH --ntasks=64              # Contoh menggunakan 64 core CPU
#SBATCH --mem=128GB              # Contoh menggunakan RAM 128GB
#SBATCH --time=10:00:00          # Contoh menetapkan walltime maks 10 jam
#SBATCH --output=result-%j.out    # Output terminal program
#SBATCH --error=result-%j.err    # Output verbose program
# Memuat modul GROMACS
module load gromacs
# RUN COMMAND
# mpirun wajib menggunakan flag protokol UCX
'''mpirun -np $SLURM_NTASKS --mca pml ucx --mca osc ucx gmx_mpi mdrun''' <parameter_input_dan_output>


=== '''Multi Node CPU''' ===
[[Berkas:Wiki-14.jpg|1000x1000px|link=SLURM Script ALELEON Supercomputer |alt=SLURM Script ALELEON Supercomputer ]]
Contoh berikut untuk menjalankan GROMACS pada lebih dari satu node CPU.
#!/bin/bash
#SBATCH --nodes=2                # Contoh menggunakan 2 node ...
#SBATCH --ntasks-per-node=64      # dengan 64 core per node.
                                  # Maka dari itu total menggunakan 128 core CPU
#SBATCH --mem=128GB              # Contoh menggunakan RAM 128GB per node
#SBATCH --time=10:00:00          # Contoh menggunakan walltime maks 10 jam
#SBATCH --output=result-%j.out    # Output terminal program
#SBATCH --error=result-%j.err    # Output verbose program
# Memuat modul GROMACS
module load gromacs
# RUN COMMAND
# mpirun wajib menggunakan flag protokol UCX
# $SLURM_NTASKS menangkap total proses MPI (nodes * ntasks-per-node)
'''mpirun -np $SLURM_NTASKS --mca pml ucx --mca osc ucx gmx_mpi mdrun''' <parameter_input_dan_output>


=== '''Akselerasi Satu GPU di GPU Node''' ===
[[Berkas:Jcsaveedit.png|nirbing|400x400px|pra=https://wiki.efisonlt.com/wiki/Berkas:Jcsaveedit.png]]
User juga dapat menjalankan pekerjaan di GPU node menggunakan resource GPU. Perlu diketahui '''tidak semua input dan parameter berjalan kencang dengan akselerasi GPU'''. Harap user dapat menguji terlebih dahulu mdrun-nya dengan nsteps kecil untuk mengetahui peningkatan performa yang bisa diperoleh melalui akselerasi GPU. Perlu diketahui pula akselerasi GPU umumnya hanya bisa berjalan dengan '''hybrid OpenMP'''.
----
 
=== 4. Menjalankan Job ===
Semua file untuk menjalankan program dan Submit Script sudah siap? Jalankan job tersebut dengan menekan tombol '''Submit'''.
 
[[Berkas:Jcsubmit.png|nirbing|700x700px|al=|pra=https://wiki.efisonlt.com/wiki/Berkas:Jcsubmit.png]]
 
Perhatikan kolom '''Status''' pada job tersebut. User dapat memantau perubahan kolom Status dengan me-refresh halaman Job. Berikut adalah daftar Status yang terjadi:
{| class="wikitable"
|+Status jalannya 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 di tengah berjalan.
Bisa karena di Stop atau Delete oleh user atau server tiba-tiba mati.
|}Apabila user ingin menghentikan job yang sedang berjalan, klik tombol '''Stop''' yang berada di sebelah tombol Submit.
----
 
=== 5. Melihat hasil job yang selesai ===
Apabila job sudah selesai berjalan, user dapat melihat hasil file yang dihasilkan melalui '''Edit Pages''' atau melihat secara cepat pada kolom '''Folder Contents'''.
 
[[Berkas:Jcfoldercontentsedit.png|al=|nirbing|399x399px|pra=https://wiki.efisonlt.com/wiki/Berkas:Jcfoldercontentsedit.png]]
----
 
=== 6. Submit ulang job ===
User dapat '''menjalankan ulang job pada ruang job yang sama''' (misalkan ketika ada error dan mau dijalankan ulang setelah koreksi file input) dengan mengklik kembali tombol Submit.
 
=='''Akselerasi GPU di GROMACS'''==
User dapat menjalankan GROMACS dengan bantuan akselerasi GPU di Compute Node GPU. Perlu diketahui '''tidak semua input dan parameter berjalan kencang dengan akselerasi GPU'''. Harap user dapat menguji terlebih dahulu mdrun-nya dengan nsteps kecil untuk mengetahui peningkatan performa yang bisa diperoleh melalui akselerasi GPU.  


Biasanya, GROMACS mdrun '''tidak memerlukan parameter tambahan''' untuk menjalankan akselerasi GPU. Namun dalam beberapa kasus, optimasi menggunakan parameter tambahan bisa berpengaruh positif ke kecepatan komputasi. Referensi mengenai parameter akselerasi GPU lanjutan (-nb, -bonded, -pme) dapat dibaca di laman [https://manual.gromacs.org/current/user-guide/mdrun-performance.html '''Getting good performance from mdrun — GROMACS 2021.1 documentation'''] dan '''[https://developer.nvidia.com/blog/creating-faster-molecular-dynamics-simulations-with-gromacs-2020 Creating Faster Molecular Dynamics Simulations with GROMACS 2020 | NVIDIA Developer Blog].'''
Biasanya, GROMACS mdrun '''tidak memerlukan parameter tambahan''' untuk menjalankan akselerasi GPU. Namun dalam beberapa kasus, optimasi menggunakan parameter tambahan bisa berpengaruh positif ke kecepatan komputasi. Referensi mengenai parameter akselerasi GPU lanjutan (-nb, -bonded, -pme) dapat dibaca di laman [https://manual.gromacs.org/current/user-guide/mdrun-performance.html '''Getting good performance from mdrun — GROMACS 2021.1 documentation'''] dan '''[https://developer.nvidia.com/blog/creating-faster-molecular-dynamics-simulations-with-gromacs-2020 Creating Faster Molecular Dynamics Simulations with GROMACS 2020 | NVIDIA Developer Blog].'''


Berikut adalah contoh SLURM script dengan penggunaan 1 GPU.
=== Ikuti Arahan Template ===
#!/bin/bash
User disarankan untuk '''tidak mengubah parameter CPU, GPU, RAM, dan OMP pada template''' karena telah dirancang untuk berjalan optimal di Compute Node GPU ALELEON Supercomputer - kecuali user bersedia mempelajari aturan menjalankan GROMACS pada GPU di ALELEON Supercomputer:
 
#SBATCH --partition=gpu_ampere    # Menggunakan Compute Node GPU.
---
#SBATCH --ntasks=32              # Contoh menggunakan 32 core CPU ...
 
#SBATCH --gres=gpu:1              # dengan 1 GPU.
=== Akselerasi Satu GPU ===
#SBATCH --mem=48GB                # Contoh menggunakan RAM 48GB.
Berikut adalah aturan (dan rekomendasi dari admin EFISON) menjalankan GROMACS dengan 1 GPU di ALELEON Supercomputer:
#SBATCH --time=10:00:00          # Contoh menetapkan walltime maks 10 jam.
 
#SBATCH --output=result-%j.out    # Output terminal program.
* Berjalan dengan paralelisasi OpenMP (OMP) dengan jumlah thread sama dengan jumlah core thread CPU.
#SBATCH --error=result-%j.err    # Output verbose program.
 
  export OMP_NUM_THREADS=$SLURM_NTASKS
# Memuat modul GROMACS
 
module load gromacs
* Jumlah CPU dan RAM kecil karena semua komputasi ditumpahkan ke GPU. Admin EFISON merekomendasikan nilai ntasks antara 4 atau 8 dengan RAM 2GB per ntasks.
 
# RUN COMMAND
---
'''# Definisikan jumlah thread OpenMP menyesuaikan ntasks'''
  export OMP_NUM_THREADS=${SLURM_NTASKS}
gmx_mpi mdrun <parameter_input_dan_output>


=== '''Akselerasi Banyak GPU di GPU Node dan Hybrid MPI/OMP''' ===
=== '''Akselerasi Banyak GPU di GPU Node dan Hybrid MPI/OMP''' ===
User dapat menggunakan lebih dari satu GPU dengan '''paralelisme hybrid MPI dan OpenMP'''. Terdapat beberapa aturan untuk menjalankan GROMACS dengan lebih dari satu GPU:
Berikut adalah aturan (dan rekomendasi dari admin EFISON) menjalankan GROMACS dengan multi-GPU di ALELEON Supercomputer:  


* Berjalan dengan '''Hybrid MPI/OMP'''.
* Pada jumlah proses MPI, EFISON merekomendasikan (atau sangat menganjurkan) untuk disamakan dengan jumlah GPU yang dipakai, sehingga:
* Pada jumlah proses MPI, EFISON merekomendasikan (atau sangat menganjurkan) untuk disamakan dengan jumlah GPU yang dipakai, sehingga:
  '''Jumlah proses MPI''' = jumlah GPU yang digunakan
  '''Jumlah proses MPI''' = jumlah GPU yang digunakan
Baris 108: Baris 140:


  '''ntasks''' = jumlah GPU yang dipakai * jumlah thread OMP per MPI yang dipilih user
  '''ntasks''' = jumlah GPU yang dipakai * jumlah thread OMP per MPI yang dipilih user
Berikut adalah contoh SLURM script dengan penggunaan 2 GPU dimana user memilih untuk menggunakan 4 thread OMP per MPI.
#!/bin/bash
#SBATCH --partition=gpu_ampere    # Menggunakan Compute Node GPU.
#SBATCH --ntasks=8                # Pada contoh ini, user menggunakan 4 thread OMP per MPI ...
                                  # sehingga ntasks = 2 GPU * 4 OMP = 8
#SBATCH --gres=gpu:2              # Menggunakan 2 GPU.
#SBATCH --mem=48GB                # Contoh menggunakan RAM 48GB.
#SBATCH --time=10:00:00          # Contoh menetapkan walltime maks 10 jam.
#SBATCH --output=result-%j.out    # Output terminal program.
#SBATCH --error=result-%j.err    # Output verbose program.
# Memuat modul GROMACS
module load gromacs
# Set nilai OMP
export OMP_NUM_THREADS=4
'''# PERINTAH SPESIFIK UNTUK OPENMPI DI PARTITION gpu_ampere
# Tanpa unset, proses MPI tidak akan berjalan di partition gpu_ampere'''
unset UCX_TLS
unset UCX_NET_DEVICES
# RUN COMMAND
'''# Jumlah mpirun = jumlah GPU yang dipakai'''
mpirun -np 2 --mca pml ucx --mca osc ucx gmx_mpi mdrun <parameter_input_dan_output>

Revisi per 15 Februari 2022 09.55

Deskripsi

GROMACS adalah package berkecepatan tinggi untuk komputasi dinamika molekular baik untuk biokimia (seperti protein, lipids) maupun non-biokimia (seperti polimer).

Versi yang Tersedia

Versi Nama Modul Dukungan MPI Dukungan Hardware Partisi
2021.1 gromacs Hybrid MPI/OMP CPU-GPU

parallel multi-node

epyc

gpu_ampere

Menjalankan GROMACS

User menjalankan GROMACS di Job Composer EFIRO yang dapat dibuka melalui menu Jobs > Jobs Composer

Efirojobcomposermenu.png


1. Memilih template GROMACS

Pilih New Jobs > From Template kemudian user memilih template untuk menjalankan GROMACS. Pilih template GROMACS yang dibutuhkan, isi Job Name sesuai keinginan user kemudian klik Create New Job.

Jcnewjob.png

Template GROMACS yang tersedia
GROMACS (CPU) - Standard Template
  • Template standar menjalankan GROMACS di Compute Node CPU.
GROMACS dengan 1 GPU
  • Menjalankan GROMACS dengan bantuan akselerasi 1 GPU.
GROMACS dengan 2 GPU
  • Menjalankan GROMACS dengan bantuan akselerasi 2 GPU.

2. Mempersiapkan file input dan menjalankan interaktif GROMACS

Jcjoboption.png

  • User dapat melakukan manajemen file seperti upload input file, editing input file, rename, dll melalui menu Edit Files.
  • Beberapa perintah GROMACS bekerja secara interaktif dan membutuhkan input dari user (contoh: pdb2gmx, grompp) sehingga harus dijalankan via terminal melalui menu Open Terminal.
    • Muat modul GROMACS untuk mengaktifkan software GROMACS:
    • Lanjutkan dengan melakukan perintah interaktif GROMACS (contoh: pdb2gmx):
$ module load gromacs
$ gmx_mpi pdb2gmx <parameter_input_dan_output>

3. Melengkapi Submit Script Template

Submit Script adalah set perintah untuk menjalankan program user ke Compute Node melalui manajemen SLURM. User perlu melengkapi script template supaya program GROMACS dapat berjalan melalui menu Open Editor.

Jceditor.png

  • User dapat memahami script dan mengikuti instruksi melalui penjelasan di deretan comment script template.
  • Panduan lengkap untuk mengisi Submit Script dengan benar pada ALELEON Supercomputer:

SLURM Script ALELEON Supercomputer

Jcsaveedit.png


4. Menjalankan Job

Semua file untuk menjalankan program dan Submit Script sudah siap? Jalankan job tersebut dengan menekan tombol Submit.

Perhatikan kolom Status pada job tersebut. User dapat memantau perubahan kolom Status dengan me-refresh halaman Job. Berikut adalah daftar Status yang terjadi:

Status jalannya 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 di tengah berjalan.

Bisa karena di Stop atau Delete oleh user atau server tiba-tiba mati.

Apabila user ingin menghentikan job yang sedang berjalan, klik tombol Stop yang berada di sebelah tombol Submit.


5. Melihat hasil job yang selesai

Apabila job sudah selesai berjalan, user dapat melihat hasil file yang dihasilkan melalui Edit Pages atau melihat secara cepat pada kolom Folder Contents.


6. Submit ulang job

User dapat menjalankan ulang job pada ruang job yang sama (misalkan ketika ada error dan mau dijalankan ulang setelah koreksi file input) dengan mengklik kembali tombol Submit.

Akselerasi GPU di GROMACS

User dapat menjalankan GROMACS dengan bantuan akselerasi GPU di Compute Node GPU. Perlu diketahui tidak semua input dan parameter berjalan kencang dengan akselerasi GPU. Harap user dapat menguji terlebih dahulu mdrun-nya dengan nsteps kecil untuk mengetahui peningkatan performa yang bisa diperoleh melalui akselerasi GPU.

Biasanya, GROMACS mdrun tidak memerlukan parameter tambahan untuk menjalankan akselerasi GPU. Namun dalam beberapa kasus, optimasi menggunakan parameter tambahan bisa berpengaruh positif ke kecepatan komputasi. Referensi mengenai parameter akselerasi GPU lanjutan (-nb, -bonded, -pme) dapat dibaca di laman Getting good performance from mdrun — GROMACS 2021.1 documentation dan Creating Faster Molecular Dynamics Simulations with GROMACS 2020 | NVIDIA Developer Blog.

Ikuti Arahan Template

User disarankan untuk tidak mengubah parameter CPU, GPU, RAM, dan OMP pada template karena telah dirancang untuk berjalan optimal di Compute Node GPU ALELEON Supercomputer - kecuali user bersedia mempelajari aturan menjalankan GROMACS pada GPU di ALELEON Supercomputer:

---

Akselerasi Satu GPU

Berikut adalah aturan (dan rekomendasi dari admin EFISON) menjalankan GROMACS dengan 1 GPU di ALELEON Supercomputer:

  • Berjalan dengan paralelisasi OpenMP (OMP) dengan jumlah thread sama dengan jumlah core thread CPU.
export OMP_NUM_THREADS=$SLURM_NTASKS
  • Jumlah CPU dan RAM kecil karena semua komputasi ditumpahkan ke GPU. Admin EFISON merekomendasikan nilai ntasks antara 4 atau 8 dengan RAM 2GB per ntasks.

---

Akselerasi Banyak GPU di GPU Node dan Hybrid MPI/OMP

Berikut adalah aturan (dan rekomendasi dari admin EFISON) menjalankan GROMACS dengan multi-GPU di ALELEON Supercomputer:

  • Berjalan dengan Hybrid MPI/OMP.
  • Pada jumlah proses MPI, EFISON merekomendasikan (atau sangat menganjurkan) untuk disamakan dengan jumlah GPU yang dipakai, sehingga:
Jumlah proses MPI = jumlah GPU yang digunakan
  • Berikutnya user memilih jumlah thread OMP per MPI. Jumlah thread OMP maksimal adalah 6 thread OMP per MPI.
  • Jumlah core CPU yang dipakai (ntasks) pada script SLURM mengikuti perumusan:
ntasks = jumlah GPU yang dipakai * jumlah thread OMP per MPI yang dipilih user