Thursday, October 9, 2025

Research Note #29 - Instalasi WRF-Chem di HPC BRIN (Mahameru)

Instalasi model WRF itu selalu menantang (baca: bikin stress), apalagi kalau terakhir kali installnya itu lebih dari 5 tahun yang lalu. Butuh waktu untuk mereview ulang langkah-langkah yang dulu pernah dilakukan, termasuk merefresh ilmu per-Linux-an yang sudah lumayan lama terlupa. Untungnya, berkat catatan-catatan proses instalasi njelimet yang masih tersimpan rapih di blog ini, ditambah dengan bantuan asisten virtual yang setia mendampingi (baca: chatGPT), akhirnya WRF bisa terinstall di HPC BRIN (selanjutnya kita sebut saja Mahameru). Yang lebih bikin senang, yg terinstall bukan cuma WRF, tapi juga WRF-Chem, dan ada beberapa hal baru yang saya pelajari dari proses instalasi ini.

Secara umum, proses intalasi model WRF-Chem di Mahameru hampir sama dengan Oakforest UTokyo dulu, dengan beberapa trik baru. Kalau dirangkum prosesnya kurang lebih seperti ini:

  1. Pastikan jenis C dan Fortran compiler yang tersedia di sistem. Mahameru menggunakan gcc dan gfortran, berbeda dengan Oakforest yang menggunakan icc dan ifort.  
  2. Install library-library yg dibutuhkan WRF, seperti NetCDF, grib2, Jasper, LibPNG dll. Sebagian library ini sudah tersedia di Mahameru, tinggal di-load saja modulnya. Untuk kasus saya, seluruh library ini saya install kembali di direktori user saya. Kenapa? Karena kl misal ada masalah, akan lebih gampang melacak dan memodifikasi path library-nya tanpa harus memuat ulang modul yang ada di sistem.
  3. Cara paling mudah instalasi library adalah dengan mengikuti panduan yang ada di website ini. Ikuti saja langkah-langkahnya sampai sebelum instalasi WRF/WPS. Kenapa tidak sampai selesai? Karena instalasi WRF/WPS di Mahameru perlu beberapa trik khusus yang tidak ada di panduan tersebut.
  4. Download WRF dan WPS terbaru via github. Ini termasuk hal baru karena sebelumnya saya download manual dari website WRF (UCAR). Bedanya, download WRF via github memungkin modul WRF seperti Chem, WRFDA dll otomatis terunduh, jadi tidak perlu didownload satu-per-satu lagi. Praktis.
  5. Mulai dengan konfigurasi kompilasi WRF dahulu. Bila menggunakan bash shell, pastikan WRF_CHEM=1 dan NETCDF_classic=1 sudah tersimpan di environment. Jalankan configure script, pilih opsi #34 (dmpar, gcc/gfortran) dan basic nesting (#1). Pastikan proses configure berjalan normal.
  6. Untuk WRF-Chem, pastikan YACC (Yet Another Compiler-Compiler) sudah terinstall. Bila tidak ada (di Mahameru tidak ada), lakukan instalasi manual dengan Bison (YACC sudah include di dalamnya). Jangan lupa, deklarasikan pathnya, misal: export YACC="$CUSLIB/bison/bin/yacc -d". Bison bisa diunduh di sini.
  7. Trik pertama. Setelah configure selesai, edit file configure.wrf, dan hilangkan 'time' pada bagian deklarasi variabel FC (fortran compiler). Misal:   FC  =  time $(DM_FC) menjadi  FC  =  $(DM_FC). Kenapa ini penting? Karena script compiler WRF menggunakan 'time' untuk mencatat proses kompilasi, sedangkan Mahameru tidak memiliki modul 'time' ini, sehingga kalau script configure.wrf tidak diubah, maka proses kompilasi nantinya akan gagal (dikenal juga dengan Error 127).
  8. Trik berikutnya, jalankan kompilasi dengan batch job di Mahameru. Kenapa harus pakai batch job? Proses kompilasi ini memakan memori yg besar, sehingga bila dijalankan langsung dari login node (shell tempat anda mulai login), akan ada suatu saat di mana sistem akan menghentikan proses kompilasi secara paksa (kill/terminate) karena batasan memori untuk login node (dikenal juga dengan Error 1). Untuk instalasi ini, saya menggunakan opsi  #SBATCH --mem-per-cpu=16G pada script batch job untuk memastikan kompilasi mendapat alokasi yang cukup.
  9. Bila proses kompilasi berjalan lancar, beberapa file executable akan tersedia di direktori /main WRF, antara lain: real.exe, wrf.exe, ndown.exe dan tc.exe. Kalau tidak ada, ya berarti proses kompilasi gagal dan kompilasi WPS selanjutnya tidak akan bisa dilakukan.
  10. Untuk WPS, pastikan library fortran yg dibutuhkan sudah dimuat pada environment. Bila belum, jalankan: export LD_LIBRARY_PATH=$NETCDF/lib64, di mana $NETCDF adalah direktori library netcdf yg aktif digunakan. Pastikan juga WRF_DIR=[direktori WRF] karena WPS perlu executable WRF untuk mengkompilasi WPS.
  11. Jalankan script configure WPS, pilih opsi #1 (serial), dan pastikan proses configure lancar. Bila ada pesan "Your Fortran + NETCDF did not run successfully" itu artinya langkah 10 di atas msh belum benar.
  12. Jalankan script kompilasi WPS. Proses ini bisa dilakukan di login node dan tidak sampai 5 menit selesai. Bila proses lancar, akan ada tiga file executable baru di direktori WPS: geogrid.exe, metgrid.exe dan ungrib.exe.
  13. Pastikan ketiga file tadi terhubung dengan library yang dibutuhkan dengan menggunakan perintah 'ldd'. Misalnya: ldd geogrid.exe. Kalau tidak ada masalah, seharusnya sistem akan menunjukkan link ke tiap library untuk file tersebut tanpa ada pesan error.
Catatan:
Dengan asumsi langkah 1-4 tidak ada masalah, saya menggunakan konfigurasi berikut untuk file ~/.bashrc, supaya langkah 5 dst tidak perlu capek-capek memuat konfigurasi ke environment sistem tiap kali login. Konfigurasi ini bisa berbeda-beda untuk tiap orang/user dan sistemnya.

export CUSLIB=$HOME/source/wrf_dependencies
export NETCDF=$CUSLIB/netcdf
export LD_LIBRARY_PATH=$NETCDF/lib:$CUSLIB/mpich/lib:$CUSLIB/grib2/lib:$CUSLIB/flex/lib:$NETCDF/lib64
export PATH=$NETCDF/bin:$CUSLIB/mpich/bin:$HOME/opengrads/Contents:$PATH
export JASPERLIB=$CUSLIB/grib2/lib
export JASPERINC=$CUSLIB/grib2/include
export YACC="$CUSLIB/bison/bin/yacc -d"


No comments:

Post a Comment