# Modules 基本說明 在 HPC 使用環境中,應用程式在編譯(compile)或執行時,常伴隨複雜的工具或函式庫(library)相依性。為簡化環境設定與管理,系統提供 Modules 工具,協助使用者在不同軟體環境間快速切換並管理環境變數(environment variables)。 ## Modules 的好處 使用 Module 可以簡化環境變數管理,例如: * 不需手動使用 `export` 設定路徑 * 不需逐一 `unset` 移除變數 * 透過 `module purge` 一個指令即可重設環境 * 提交 Job Script 時,請於執行內容的第一行加入 `module purge`,再依該 Job 需求載入對應模組 ## Module 基本指令 | 指令 | 說明 | |------|------| | `module avail` | 列出所有可使用的 modules | | `module list` | 列出目前已載入的 modules | | `module load/add <package>` | 載入指定的 module | | `module purge <package>` | 移除已套用指定的 module | | `module purge` | 移除所有已套用的 modules | | `module spider` | 搜尋所有可用模組 | | `module show/display <package>` | 顯示 modulefile 內容 | | `module swap/sw/switch <m1> <m2>` | 卸載 m1 設定並讀取 m2 設定 | ## 階層式設計原則 Modules 採用階層式設計,為避免使用者錯誤搭配不相容套件,需先載入一個 module,才能顯示與之相依的下一層 module。 舉例說明: ```bash # Step 1:卸載全部 module $ ml purge # Step 2:載入指定 module $ ml load gcc/11.5 #先載入編譯器 $ ml load openmpi/5.0.10-cuda12.6 #接著載入與 gcc/11.5 相容的函式庫 ```