Building WRF
助教已幫下載 WRF-4.5.2 原始碼,請至首頁 data 路徑尋找檔名含有 tar.gz 的打包壓縮檔。頻寬及硬碟有限下,不需要每個人都去下載一次。拿到 tar 檔,首先要解壓縮,才能進去 WRF 原始碼的目錄。看看目錄下有什麼東西。
Configuring
編譯第一步檢查環境設定生成一份給編譯器的食譜書 "Makefile"
依序執行 clean configure compile 三支腳本,除了單純的直接以./執行之外,還可以用 -help 選項查看有什麼其他的有趣設定。而編譯的第一步,就是檢查環境設定,生成一份給編譯器的食譜書 "Makefile",在 WRF 的目錄中還會生成一個可以控制編譯的設定檔 ${WRF_DIR}/configure.wrf 。
另外,要使用單核心、單節點、跨節點、OpenMP 加速等功能也要在 configure 前先設定好,先前已執行過一次 configure 的使用者也可以到 configure 結束後所生成的 ${WRF_DIR}/configure.wrf 檔案中調整。
[serial]
serial : computes with a single processor
serial : computes with a single processor. This is only useful for small cases with domain size of about 100x100 grid spaces.
[smpar]
smpar : Symmetric Multi-processing/Shared Memory Parallel (OpenMP)
smpar : Symmetric Multi-processing/Shared Memory Parallel (OpenMP). This option is only recommended for those who are knowledgeable with computation and processing. It works most reliably for IBM machines.
[dmpar]
dmpar : Distributed Memory Parallel (MPI)
跨節點記憶體分散式平行計算(可以使用兩台以上的電腦,分配到自己需要使用的記憶體)
[dm+sm]
dm+sm : Distributed Memory with Shared Memory
dm+sm : Distributed Memory with Shared Memory (for e.g., MPI across nodes with OpenMP within a node). Performance is typically better with the dmpar-only option, and this option is not recommended for those without extensive computation/processing experience.
If you REALLY want Grib2 output from WRF, modify the arch/Config.pl script.Right now you are not getting the Jasper lib, from the environment, compiled into WRF.
------------------------------------------------------------------------Please select from among the following Linux x86_64 options:
1. (serial) 2. (smpar) 3. (dmpar) 4. (dm+sm) PGI (pgf90/gcc) 5. (serial) 6. (smpar) 7. (dmpar) 8. (dm+sm) PGI (pgf90/pgcc): SGI MPT 9. (serial) 10. (smpar) 11. (dmpar) 12. (dm+sm) PGI (pgf90/gcc): PGI accelerator 13. (serial) 14. (smpar) 15. (dmpar) 16. (dm+sm) INTEL (ifort/icc) 17. (dm+sm) INTEL (ifort/icc): Xeon Phi (MIC architecture) 18. (serial) 19. (smpar) 20. (dmpar) 21. (dm+sm) INTEL (ifort/icc): Xeon (SNB with AVX mods) 22. (serial) 23. (smpar) 24. (dmpar) 25. (dm+sm) INTEL (ifort/icc): SGI MPT 26. (serial) 27. (smpar) 28. (dmpar) 29. (dm+sm) INTEL (ifort/icc): IBM POE 32. (serial) 33. (smpar) 34. (dmpar) 35. (dm+sm) GNU (gfortran/gcc) 48. (serial) 49. (smpar) 50. (dmpar) 51. (dm+sm) INTEL (ftn/icc): Cray XC 64. (serial) 65. (smpar) 66. (dmpar) 67. (dm+sm) INTEL (ifort/icc): HSW/BDW 68. (serial) 69. (smpar) 70. (dmpar) 71. (dm+sm) INTEL (ifort/icc): KNL MIC~~~~~~~~ 76. (serial) 77. (smpar) 78. (dmpar) 79. (dm+sm) INTEL (ifx/icx) : oneAPI LLVM 80. (serial) 81. (smpar) 82. (dmpar) 83. (dm+sm) FUJITSU (frtpx/fccpx): FX10/FX100 SPARC64 IXfx/Xlfx
Enter selection [1-83] :
請依照自己的環境設定選取,一般而言,隨著越高解析模式的進展, WRF 需要去模擬更細的網格,整個三維體積的網格點數目增加,就表示計算量加倍,除非有特殊需求,例如理想化研究通常比較(龜毛X)會有限用單核或不能跨節點等等的要求,不然基本上都是選(dmpar)分散式記憶體平行化,至於我們環境設定是使用什麼編譯器就請你照實際狀況選即可,應該不至於到這一步還搞不清楚目前使用哪一個編譯器都不清楚吧。
經過 2024.05.01 測試,選用 20 的選項在編譯時加入最佳化選項,能以 AVX 指令集將程式向量化編譯,雖然增加編譯時間,但之後模式執行的速度會較未優化的快。
本次作業請選擇 1 ,未來請依實際需求選取。執行結束時如果結尾的說明有印出成功或回應有偵測到NETCDF環境,基本上就是沒問題了。如果結尾出現 warning 後面跟著 Fortran 2003 就表示所使用的編譯器不支援 Fortran 2003 語法,所以有使用到 2003 標準的 Fortran 程式不會被編譯到,當然也就不能使用囉,後續如果在模式設計時, namelist.input 選用到沒被編譯到的選項,是無法成功執行的喔。
可以使用ls來看一下configure.wrf是否有產出新的檔案,如果要調整一些編譯的最佳化設定或是新增額外函式庫可以在這份檔案中做設定,只要有這份檔案加上之前的環境設定都有完成,那即使不用執行configure也可以直接開始執行編譯。
Compiling WRF
WRF模式下除了有一個真實模組:em_real 以外,還有數種不同的理想化模組。
em_real
em_b_wave
em_convrad
em_fire
em_les
em_quarter_ss
em_tropical_cyclone
em_grav2d_x
em_hill2d_x
em_seabreeze2d_x
em_squall2d_x, em_squall2d_y
執行編譯指令時,後方要加上模組名稱,這樣 WRF 才會變成指定的樣子。實作課程以真實個案作為教學,因為理想個案模擬只需要安裝WRF即可,請自行練習。
執行編譯指令時,後方要加上模組名稱,這樣 WRF 才會變成指定的樣子。實作課程以真實個案作為教學,因為理想個案模擬只需要安裝WRF即可,請自行練習。
第一行 grep 指令是尋找編譯輸出的 logfile 有沒有 Error 出現,有的話就是編譯失敗了,請 vi 打開 logfile 去看看 Error 出現在編譯到什麼程式的時候,依照 logfile 的指示去除錯。第二行指令是去看編譯完的執行檔是否都有出現在 run 資料夾底下,應該要出現:ndown.exe、real.exe、tc.exe、wrf.exe 四個執行檔。理想化模擬應該要出現:ideal.exe、wrf.exe 二個執行檔。
編譯失敗就要先到 logfile 中尋找 Error 的地方,接著執行 ./clean –a 清除編譯的資料,再從 WRF 目錄下的 configure 開始修正錯誤重新來過。兩個檢查都通過的話,恭喜你。WRF 已經安裝完成囉,已經可以進行理想模式模擬,真實個案模擬/預報就接著下一步開始安裝 WPS 了。