1. 程式人生 > >MPI編譯環境及編譯器介紹

MPI編譯環境及編譯器介紹

一、基本編譯器介紹
叢集配置有三套基本的編譯器: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路徑設定