# 編譯、安裝 OpenMPI ## OpenMPI - 參考: https://docs.open-mpi.org/en/v5.0.x/installing-open-mpi/quickstart.html ### 0. 軟體需求 需先安裝以下套件 - 支援 C99 以上的 C/C++ 編譯器 - GCC、Clang 或 Intel C++ Compiler - 安裝 GCC ``` sudo apt install build-essential ``` - 若需要支援 fortran,需要安裝 gfortran ``` sudo apt install gfortran ``` - GNU Autotools - Autoconf、Automake、Libtool - 安裝 GNU Autotools ``` sudo apt install autoconf automake libtool ``` - 其他在官方文件列出的套件,預設已包含在 Ubuntu 中,不用另外安裝 ### 1. 下載 OpenMPI 原始碼 - 到官網選擇要使用的版本 https://www.open-mpi.org/software/ompi/v5.0/ - 複製原始碼壓縮檔的 URL,並用 `wget` 下載 ``` wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.1.tar.gz ``` - 用 `tar` 解壓縮 ``` tar xf ./openmpi-5.0.1.tar.gz ``` ### 2. 設定編譯參數 - 進入 OpenMPI 原始碼的目錄中 ``` cd openmpi-5.0.1 ``` - 執行該目錄底下的 `configure` 進行設定 ``` ./configure --prefix=<path> <options> ``` - `--prefix` 用來指定 OpenMPI 的安裝路徑,編譯完成後的檔案將放在該路徑中 - `<path>` 如果是該 user 無法直接存取的路徑,需要加上 sudo - `<options>` 用來設定編譯時的行為,包含啟用/禁用某功能、預設的編譯 flag、針對硬體優化 ... 等 - 可用的 option 可參考 [官方文件](https://docs.open-mpi.org/en/v5.0.x/installing-open-mpi/configure-cli-options/index.html) - 台灣杉二號 [OpenMPI 編譯參數](https://man.twcc.ai/@twccdocs/guide-twnia2-module-main-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fguide-twnia2-module-open-mpi-zh#Open-MPI-411-module-matrix) :::success 以安裝到 */opt/openmpi-5.0.1* 為例: ``` sudo ./configure --prefix=/opt/openmpi-5.0.1 ``` ::: ### 3. 編譯 - 透過 `make` 編譯 ```bash make all # 或 make ``` - 加上 `-j <n>` 可以啟用平行編譯,可以加快整體編譯速度 - `<n>` 表示要使用的 thread 數量 - E.g., `-j4` 表示使用四個 thread 編譯 ### 4. 安裝 - 透過 `make` 安裝 ``` make install ``` - 如果在上個步驟設定的安裝路徑,不是目前 user 有存取權限的路徑,要在指令中加上 `sudo` :::success 檢查 */opt/openmpi-5.0.1* 底下,是否有 *bin*、*lib*、*include* 等目錄 ``` sudo ls /opt/openmpi-5.0.1 ``` ::: ### 5. 環境變數設定 - 要使用 OpenMPI 提供的編譯器,必須在 `PATH` 加入 OpenMPI `bin` 目錄 - 編譯出來的執行檔可能需要在 runtime 載入 Library,必須在 `LD_LIBRARY_PATH` 加入 OpenMPI 的 `lib` 目錄 ```bash # 以安裝目錄為 /opt/openmpi-5.0.1 為例 export PATH="/opt/openmpi-5.0.1/bin:$PATH" export LD_LIBRARY_PATH="/opt/openmpi-5.0.1/lib:$LD_LIBRARY_PATH" ```