OpenMPI是一種高性能消息傳遞庫,最初是作為融合的技術和資源從其他幾個項目(FT- MPI, LA-MPI, LAM/MPI, 以及 PACX-MPI),它是MPI-2標準的一個開源實現(xiàn),由一些科研機構和企業(yè)一起開發(fā)和維護。因此,OpenMPI能夠從高性能社區(qū)中獲得專業(yè)技術、工業(yè)技術和資源支持,來創(chuàng)建最好的MPI庫。OpenMPI提供給系統(tǒng)和軟件供應商、程序開發(fā)者和研究人員很多便利。易于使用,并運行本身在各種各樣的操作系統(tǒng),網(wǎng)絡互連,以及一批/調(diào)度系統(tǒng)。
Open MPI并不是LAM/MPI, LA-MPI和FT-MPI的簡單組合,而是一種全新的MPI實現(xiàn),其完全實現(xiàn)了MPI-1.2和MPI-2規(guī)約,并且完全支持并發(fā)和多線程應用(也就是MPI_THREAD_MULTIPLE)。
為了有效有效支持大范圍的并行機,開發(fā)了高性能驅(qū)動程序,其中包括TCP/IP, shared memory, Myrinet, Quadrics, and Infiniband,更多的機器支持可能會基于用戶、市場和研究需要而增加。對于網(wǎng)絡傳輸錯誤,Open MPI提供了一種可選的特性來檢測數(shù)據(jù)的完整性。通過使用報文分段和拆分到多個網(wǎng)絡設計,Open MPI不僅可以達到可用帶寬的最大值,而且當節(jié)點使用多臺網(wǎng)絡設備的時候,可以動態(tài)處理網(wǎng)絡設備的數(shù)據(jù)丟失。
Open MPI的運行時環(huán)境提供了啟動和管理并行應用的基本服務。
Ubuntu 安裝 OpenMPI
1. 下載OpenMPI
在官網(wǎng)(http://www.open-mpi.org/software/)上下載最新版本的安裝包,如:openmpi-1.8.4.tar.gz
2. 解壓并進行配置
tar -zxvf openmpi-1.8.4.tar.gz
cd openmpi-1.8.4
./configure --prefix="/usr/local/openmpi"
注意最后一行是將其安裝到 /usr/local/openmpi目錄下,可以指定為其他目錄,如,用戶目錄下。
3. Build 并安裝
make
sudo make install
可以在make后加參數(shù)-j8, 表示用8核編譯
4. 添加環(huán)境變量
在.bashrc文件中添加下列幾行
export PATH="$PATH:/usr/local/openmpi/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/openmpi/lib/"
保存后,執(zhí)行
sudo ldconfig
打開新的終端,使環(huán)境變量生效。
5. 測試是否安裝成功
mpirun
其他
Open MPI使用簡單C語言面向?qū)ο笙到y(tǒng)實現(xiàn),使用基于單一繼承和引用計數(shù)的retain/release內(nèi)存管理模型。一個object由一個結構體和單一實例化的class標識符組成。結構體的首個元素一個是指定父類結構體的指針。
宏指令會對C++類似的語義(如new, construct, destruct, delete)產(chǎn)生影響。因為C++項目的豐富經(jīng)驗和某些平臺編譯方面的問題,使得在開發(fā)Open MPI使用了面向?qū)ο蠓椒?,而不是直接使用C++。
一旦構造,對象引用計數(shù)被設置為1。當對象retain,計數(shù)遞增,當對象release,計數(shù)遞減。當計數(shù)到達0,會運行對象的析構器并釋放內(nèi)存。