mpich編譯及應用 Table of contents 背景 MPICH (MPI derived from Chameleon)、原名MPICH2、是免費提供的、便攜式的MPI方案 ,用於傳遞消息並行計算中使用分佈式內存應用的標準的程式及程式庫。MPICH是由美國政府組織開發的具有某些公共領域組件的免費開源軟件,可用於大多數類Unix操作系統 何時會需要重新編譯mpich更新編譯器:種類或版本 更新mpich版本 啟用更多nodes、欲啟用溝通設備或方式時 openmpi 為另一常用的MPI種類,主要為大學間開放平台所發展,經常應用於全球最快的超級電腦,二者在局部比較似乎以MPICH較快些 安裝與編譯 由於MPICH的核心程式及程式庫都與編譯器緊迫連結,必須按照編譯器版本進行安裝。因此如果是[直接安裝],要注意其內設的fortran/c 編譯器種類及版本 一般是GNU,可以執行mpifort –version檢視 由於空品模式應用大量浮點運算,一般會以ifort/pgi等商業編譯器執行fortran的編譯,必須下載原始碼重新編譯。 下載MPICH原始碼 安裝 為傳統的configure->make->make install程序 執行前注意準備好編譯器執行檔及程式庫所需的路徑 目標路徑(–prefix):如果是跨機器 的架構,可以考慮放在網路磁碟機。如果沒有,跨機器 執行時也必須在每一台工作站上相同位置複製一份。 此處以ifort為例指定環境變數FC及CC為機器上的ifort及icc source /opt/intel/oneapi/compiler/2022.0.2/env/vars.sh intel64
unset F90
unset F90FLAGS
FC = /opt/intel/oneapi/compiler/2022.0.2/linux/bin/intel64/ifort CC = /opt/intel/oneapi/compiler/2022.0.2/linux/bin/intel64/icc ./configure --prefix = /opt/mpich/mpich-3.4.2-icc --with-device = ch4:ofi 2>&1 | tee c.txt
make 2>&1 | tee m.txt
make install 2>&1 | tee mi.txt
MPI communication devices OpenFabrics Interfaces(OFI )OFI is a framework focused on exporting fabric communication services to applications. OFI is best described as a collection of libraries and applications used to export fabric services. The key components of OFI are: application interfaces, provider libraries, kernel services, daemons, and test applications. libfabric Libfabric is designed to minimize the impedance mismatch between applications, middleware and fabric communication hardware. Its interfaces target high- bandwidth, low-latency NICs(network interface controller ), with a goal to scale to tens of thousands of nodes . Libfabric is supported by a variety of open source HPC middleware applications, including MPICH , Open MPI , Sandia SHMEM, Open SHMEM, Charm++, GasNET, Clang, UPC, and others. mpirun的跨機器 執行 #kuang@dev2 /nas2/cmaqruns/2019force/output/2019-01
#$ cat machinefile
DEVP:96
dev2:96
所有的機器都需要相同版本的mpirun程式與程式庫、以及相同的路徑 將所需的程式庫(compiler、netcdf、hd5、mpi、等),存放在共用的網路磁碟機 設定環境變數LD_LIBRARY_PATH
執行指令:time $MPIRUN -f machinefile -np 192 $EXEC
Reference