Module 概觀
環境變數管理工具
在 HPC 使用情境中,當編譯 (compile) 或是執行應用程式時,常會有複雜的工具或函式庫 (library) 之間的相依性,因此常使用 Module 作為管理環境變數 (environment variable) 的工具,方便您在不同的工具間轉換環境變數。
使用 Module 後,您可輕鬆切換,無需再使用 export
指令切換環境變數以使用特定軟體套件、工具函式庫,且不需要再透過 unset
移除環境變數,只要使用 module purge
以一個指令即可完全清除。
信息
HPC 管理環境變數的工具,最常見是使用 modules
的方式管理,傳統如台灣杉一號使用的 Environment Modules。而在台灣杉二號使用 Lmod。兩者的使用方法雷同,僅背後實踐的程式語言有差異。
Module 基本指令
- 列出可使用的 modules
module avail
- 列出已套用的 modules
module list
- 查看 modules 的說明
module whatis package1 package2 ...
- 套用指定的
module load package1 package2 ...
- 移除指定的 modules
module unload package1 package2 ...
- 移除全部的 modules
module purge
提示
您可以使用 ml
取代上述 module
的指令,以下列舉幾項簡短的使用方式:
- 列出可使用的 modules
ml av
- 套用指定的 modules
ml package1 package2 ...
- 移除指定的 modules
ml -package1 -package2 ...
Module 基本觀念
- 採用階層式的設計,要先 load 一個 module 後,才能看到下一層相依的 module,避免搭配錯相依套件
- 舉例來說,要先
ml cuda/11.3
後,才能看到和cuda/11.3
編譯相依的openmpi4/4.1.1
;載入openmpi4/4.1.1
後,才能看到和openmpi4/4.1.1
編譯相依的fftw3/3.3.9
- 上述例子可以如下使用:
# 卸載全部 module
ml purge
# 載入指定 module
ml cuda/11.3 openmpi4/4.1.1 fftw3/3.3.9