本文介紹如何使用Environment Modules編譯成軟體中模組對應的環境配置,使其可以在E-HPC環境中直接載入使用。
背景資訊
在使用E-HPC叢集過程中,經常要安裝不同的編譯器和庫檔案,如常用的編譯器有GCC和ifort,常用的 MPI並行庫有OpenMPI、MPICH2等。在使用某個軟體時,通常採用不同的編譯設定得到不同版本的可執行程式和連結庫,或者需要修改、切換不同版本的環境變數。由於程式在編譯時間會調用不同類型編譯器或第三方庫,程式之間還存在著依賴關係。導致當執行某個特定版本的程式時,修改環境變數變得十分複雜。
Environment Modules是一個簡化Shell初始化的軟體包,您可以在使用modulefiles模組與E-HPC進行會話期間修改模組對應的運行環境。每個模組檔案都包含應用程式配置所需的資訊。叢集使用者可共用系統上的模組檔案,並且使用者可以擁有自己的集合來補充或替換共用模組檔案。
Environment Modules相關命令
E-HPC叢集中已預設安裝Environment Modules軟體來管理不同運行環境。
當使用module命令時,可用的模組在modulepath=/opt/ehpcmodulefiles目錄下,modulefile檔案通常被命名為某個軟體版本號碼,如openmpi/3.0.0。
常用的module命令如下:
module avail:顯示可以使用的模組
module load:載入模組
module unload:卸載模組
module list:顯示已經載入的模組
操作步驟
以下通過Environment Modules軟體卸載openmpi/3.0.0,然後載入openmpi/3.0.1版本樣本來介紹如何設定modulefile:
登入彈性高效能運算控制台。
在頂部功能表列左上方處,選擇地區。
在左側導覽列,單擊叢集。
在叢集頁面,找到要登入的叢集,單擊遠端連線。
在遠端連線頁面,輸入root使用者、登入密碼和連接埠,單擊ssh串連。
執行
cd /opt/ehpcmodulefiles命令,切換到ehpcmodulefiles目錄下。執行
module list命令,顯示已經載入的模組。如圖所示,表示已載入openmpi/3.0.0模組。

執行
module unload openmpi/3.0.0命令,卸載openmpi/3.0.0模組。執行
module load openmpi/3.0.1命令,載入openmpi/3.0.1模組。您可以根據業務需求修改openmpi/3.0.1中的配置資訊。具體配置項說明如下:
PATH:可執行檔路徑。
LIBRARY_PATH:程式編譯期間,尋找動態連結程式庫時指定尋找共用庫的路徑。
LD_LIBRARY_PATH:程式載入運行期間,尋找動態連結程式庫時指定除了系統預設路徑之外的其他路徑。
installpath:軟體安裝目錄。
#%Module1.0##################################################################### ## ## modulefiles/openmpi-3.0.1 Generated by EHS 1.0.0 ## proc ModulesHelp { } { puts stderr "\tmodules - loads the modules software & application environment" puts stderr "\n\tThis loads environment of openmpi-3.0.1" } module-whatis "loads the openmpi-3.0.1 environment" prepend-path PATH ${installpath}/bin prepend-path LD_LIBRARY_PATH ${installpath}/lib prepend-path LIBRARY_PATH ${installpath}/lib