MPI編譯環境及編譯器介紹
阿新 • • 發佈:2019-01-08
一、基本編譯器介紹
叢集配置有三套基本的編譯器:1、GCC編譯器,2、PGI編譯器,3、INTEL編譯器。介紹如下:
GCC | C編譯器 | gcc |
C++編譯器 | g++ | |
Fortran 77編譯器 | g77 | |
Fortran 90編譯器 | gfortran | |
PGI | C編譯器 | pgcc |
C++編譯器 | pgCC | |
Fortran 77編譯器 | pgf77 | |
Fortran 90編譯器 | pgf90 | |
INTEL | C編譯器 | icc |
C++編譯器 | icpc | |
Fortran 77編譯器 | ifort | |
Fortran 90編譯器 | ifort |
二、MPI編譯器
MPI編譯器實際上是MPI編譯MPI程式所使用的編譯命令。這些命令在執行過程中仍然呼叫上個表格中的基本編譯命令,只是在多加幾個與MPI通訊庫相關的連線引數而已。所以MPI既可以使用GCC作為編譯器又可以使用PGI或者INTEL作為編譯器。
MPI在設計之初考慮了在各種通訊網路上的工作情況,由於叢集既存在Infiniband高速網路,又存在千兆乙太網,所以系統為這兩種通訊介質都編譯對應的MPI版本。
MPI體系:
通訊網路 | 使用的基本編譯器 | |
OpenMPI體系 | Infiniband和千兆乙太網 | GCC、PGI、INTEL |
MPICH體系 | Infiniband和千兆乙太網 | GCC、PGI、INTEL |
MVAPICH體系 | Infiniband高速網路 | GCC、PGI、INTEL |
在編譯和執行一個MPI程式的時候,只能同時使用一個MPI版本,不能同時混用多個。
使用者登入集群后,可以通過命令which mpicc來檢視系統目前所使用的mpi版本,或者通過 mpirun –version 來檢視。
使用該命令編譯後的MPI可執行程式,已cpi.c為例,編譯和執行時的命令格式如下:
編譯前檢視確認路徑:
which mpicc
編譯和執行前檢視當前使用的是哪一個MPI是一個好習慣,也是一個必不可少的步驟,確認MPI路徑沒有問題後,就可以使用了。
編譯:
mpicc -O3 cpi.c -o cpi
生成的可執行程式名字為cpi
執行前檢視確認路徑:
which mpirun
執行:
mpirun -hostfile ./hostfile -np $(核數) ./cpi
可自行定義使用者 .bashrc檔案中MPI路徑設定