Building WPS
Building WPS
cloud_download
WPS source code
跟安裝 WRF 或任何Linux的軟體一樣,利用 tarball 原始碼安裝需要進行編譯,或是別人 (或好心人) 已經幫你編譯成portable 的形式,讓你可以帶著走,到處複製貼上都可以執行。
助教雖然不會幫你編好,但跟 WRF 一樣,助教幫你下載好原始碼了。非修課學生可以自行從 Github 下載官方的原始碼或下載其他版本。指令也大同小異,就不多解釋。
Configuring
已經有編譯過 WRF 經驗的你,應該已經不陌生了。確定環境有設定正確之後,就來 configure 一下吧。這裡如果執行上出錯,通常是有環境變數沒有設到或是設錯,請練習自己看錯誤訊息,跟著錯誤訊息的指引來更改成正確的環境。
Enter selection [1-40] :
執行成功的話,會進入需要請你依照自己環境的編譯器設置選擇合適的選項,選擇跟 WRF 一樣或差不多的即可,WPS 也沒有特別列出最佳化的選項在這個階段要調整或選擇。除了選適合的編譯器以外,主要是選擇能不能跨節點平行化以及能不能支援 grib2 格式。你可以選擇將 WPS 編譯成單核執行,出錯時 debug 也會容易一些。需要使用到多核平行執行的情境,也就表示需要跟時間賽跑,需要產出有時效性的預報等等。
另外 WPS 的執行時間一般不會到很誇張,單核心的版本直接在指令列執行 WPS 三支程式,只要不長時間占用或一次調用超過一定比例以上的核心數,也不一定需要使用到 PBS shell 送 job 。但如果在國網或其他公用主機上,建議就養成好習慣。
多使用 PBS shell 的好處,順便練習把整個 WPS 三支主要執行程式和一些指令串起來寫成腳本,以後就在 PBS 送出一個 job 就完成,這也是作業化 (或自動化) 需要用到的技能,總不可能每天固定時間在電腦前下指令吧。但以做研究或做這份作業來說,多等個幾分鐘讓你思考一下下一步要做什麼,也不全然是壞事啦。
Compiling
WPS 的編譯因為會使用到 NetCDF 、 zlib 、 libpng 、 JasPer 這四個函式庫,所以在函式庫都沒有設定或安裝好的情況下,感覺比 WRF 還要複雜,但不要猶豫先照著步驟走一遍,看看錯誤訊息給了什麼提示,就能完成。2024年課程所有函式庫都集中安裝在 NetCDF 目錄下,所以 module load 其實該有的必要函式庫都載入完成了,需要的環境有載入且邏輯順序正確,編譯這步驟應該不會出錯。
編譯前先檢查上一步執行 configure 產出的編譯設定檔 configure.wps,使用可跨節點記憶體分散式平行化的同學,請先將 configure.wps 中 Intel MPI Library 的 C 和 Fortran 指令修改成 mpiicc 和 mpiifort 之後,再進行編譯。這邊困難的部分就是如果環境設定不正確,需要在 configure.wps 中增加指定函式庫的路徑了。
若執行編譯失敗,需要檢查 logfile 中的錯誤訊息,所以重點是編譯時記得 log 要輸出成檔案,問問題才有依據,重新編譯前也要記得執行 ./clean -a 把先前編譯的結果先移除再重新 configure 和 compile。只要 WPS 目錄下有出現三支 exe 結尾的執行檔連結,就表示編譯成功囉。