在Ubuntu上安裝和配置MPI環(huán)境的詳細(xì)步驟
1. 安裝 OpenMPI
首先,確保系統(tǒng)是最新的,并安裝 OpenMPI。
- 更新軟件包索引:
sudo apt update
- 安裝 OpenMPI: 使用 Ubuntu 的包管理器安裝 OpenMPI:
sudo apt install openmpi-bin openmpi-common libopenmpi-dev
這個(gè)命令會(huì)安裝 OpenMPI 的二進(jìn)制文件、公共文件和開發(fā)庫(kù)(
libopenmpi-dev提供了編譯 MPI 程序所需的頭文件和庫(kù)文件)。檢查安裝是否成功: 安裝完成后,檢查 OpenMPI 是否安裝成功:
mpirun --version
- 你應(yīng)該會(huì)看到類似下面的輸出,顯示 OpenMPI 的版本信息:
mpirun (Open MPI) 4.1.1 Report bugs to http://www.open-mpi.org/community/help/
2. 配置 OpenMPI 環(huán)境
環(huán)境變量設(shè)置(可選): 通常,MPI 二進(jìn)制文件會(huì)自動(dòng)添加到
PATH中,如果你安裝了多個(gè) MPI 版本或者想確保正確的路徑配置,可以手動(dòng)設(shè)置環(huán)境變量。編輯你的
~/.bashrc文件,添加以下幾行:
export PATH=/usr/lib/openmpi/bin:$PATH export LD_LIBRARY_PATH=/usr/lib/openmpi/lib:$LD_LIBRARY_PATH
- 使更改生效: 保存并關(guān)閉文件,然后執(zhí)行以下命令使其生效:
source ~/.bashrc
3. 編寫 MPI 程序
接下來,我們來編寫一個(gè)簡(jiǎn)單的 MPI 程序,以確保安裝和配置正確。
創(chuàng)建一個(gè)名為
hello_mpi.c的文件:
// hello_mpi.c
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv)
{
MPI_Init(&argc, &argv); // 初始化MPI環(huán)境
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // 獲取當(dāng)前進(jìn)程的Rank
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size); // 獲取總進(jìn)程數(shù)
printf("Hello world from processor %d out of %d processors\n", world_rank, world_size);
MPI_Finalize(); // 結(jié)束MPI環(huán)境
return 0;
}- 編譯 MPI 程序: 使用
mpicc(OpenMPI 的 C 編譯器封裝器)來編譯 MPI 程序:
mpicc hello_mpi.c -o hello_mpi
- 運(yùn)行 MPI 程序: 使用
mpirun或mpiexec來運(yùn)行 MPI 程序。指定使用的進(jìn)程數(shù)量,例如:
mpirun -np 4 ./hello_mpi
該命令使用 4 個(gè)進(jìn)程運(yùn)行程序。你應(yīng)該會(huì)看到類似以下的輸出:
Hello world from processor 0 out of 4 processors Hello world from processor 1 out of 4 processors Hello world from processor 2 out of 4 processors Hello world from processor 3 out of 4 processors
4. 運(yùn)行多節(jié)點(diǎn)的 MPI 程序(可選)
如果你有多臺(tái)機(jī)器并希望在集群上運(yùn)行 MPI 程序,步驟會(huì)稍微復(fù)雜一些。
4.1 配置免密 SSH 登錄
生成 SSH 密鑰(如果沒有):
ssh-keygen -t rsa -b 2048
按
Enter以默認(rèn)設(shè)置生成密鑰。復(fù)制 SSH 密鑰到遠(yuǎn)程節(jié)點(diǎn): 使用
ssh-copy-id將密鑰復(fù)制到其他機(jī)器上:
ssh-copy-id user@remote_host
現(xiàn)在你可以從主機(jī)通過 SSH 無(wú)需密碼登錄遠(yuǎn)程主機(jī)了。
4.2 運(yùn)行多節(jié)點(diǎn) MPI 程序
創(chuàng)建主機(jī)文件: 創(chuàng)建一個(gè)包含節(jié)點(diǎn) IP 地址或主機(jī)名的主機(jī)文件,例如
hosts文件:
192.168.1.1 slots=2 192.168.1.2 slots=2
其中
slots=2表示每個(gè)節(jié)點(diǎn)上運(yùn)行 2 個(gè)進(jìn)程。運(yùn)行 MPI 程序: 使用
mpirun,指定主機(jī)文件和進(jìn)程數(shù):
mpirun --hostfile hosts -np 4 ./hello_mpi
這會(huì)在多個(gè)節(jié)點(diǎn)上啟動(dòng) 4 個(gè) MPI 進(jìn)程。
5. MPI 編譯器封裝器
MPI 提供了編譯器封裝器,使編譯 MPI 程序更簡(jiǎn)單:
- C 編譯器封裝器:
mpicc - C++ 編譯器封裝器:
mpicxx - Fortran 編譯器封裝器:
mpifort
這些封裝器自動(dòng)處理 MPI 頭文件和庫(kù)的鏈接,可以直接用它們來編譯 MPI 程序。
6. 常用 MPI 命令
mpicc:用于編譯 MPI C 程序。mpirun:用于運(yùn)行 MPI 程序,支持多節(jié)點(diǎn)、多進(jìn)程執(zhí)行。mpiexec:與mpirun類似,是 MPI 標(biāo)準(zhǔn)中指定的命令。ompi_info:查看 OpenMPI 的配置信息。
7. 驗(yàn)證 MPI 環(huán)境
你可以使用 OpenMPI 自帶的測(cè)試工具來確認(rèn) MPI 環(huán)境是否配置正確:
mpirun --host localhost -np 4 hostname
該命令將在本地機(jī)器上運(yùn)行 4 個(gè) MPI 進(jìn)程,并輸出機(jī)器名稱。如果環(huán)境配置正確,應(yīng)該會(huì)輸出本地主機(jī)名 4 次。
總結(jié)
- 安裝 OpenMPI:使用 Ubuntu 的包管理器安裝 OpenMPI 工具和庫(kù)。
- 配置環(huán)境:確保 MPI 的二進(jìn)制文件在 PATH 中,并設(shè)置相關(guān)環(huán)境變量。
- 編寫和編譯 MPI 程序:通過 mpicc 編譯,并使用 mpirun 運(yùn)行 MPI 程序。
- 多節(jié)點(diǎn)運(yùn)行(可選):配置免密 SSH 登錄,使用主機(jī)文件在多臺(tái)機(jī)器上運(yùn)行 MPI 程序。
以上就是在Ubuntu上安裝和配置MPI環(huán)境的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于Ubuntu安裝和配置MPI的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
CentOS7 安裝 zabbix 4.0 教程(圖文詳解)
這篇文章主要介紹了CentOS7 安裝 zabbix 4.0 教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Linux關(guān)機(jī)時(shí)執(zhí)行指定腳本功能實(shí)現(xiàn)
本篇文章給大家分享了Linux關(guān)機(jī)時(shí)執(zhí)行指定腳本功能的實(shí)現(xiàn)詳解,對(duì)此有需要的朋友跟著小編一起學(xué)習(xí)下。2018-03-03
Linux如何使用ntp自動(dòng)聯(lián)網(wǎng)校準(zhǔn)時(shí)間
電腦用戶經(jīng)常需要查看當(dāng)前時(shí)間、安裝網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)服務(wù)和校準(zhǔn)時(shí)間,確保系統(tǒng)時(shí)間的準(zhǔn)確性,首先,用戶可通過系統(tǒng)自帶功能查看當(dāng)前時(shí)間,其次,通過安裝NTP服務(wù)可以自動(dòng)同步網(wǎng)絡(luò)時(shí)間,用戶需要選擇合適的NTP服務(wù)器,這些服務(wù)器地址可以在互聯(lián)網(wǎng)上查到2024-10-10
Ubuntu18.04更改apt源為阿里云源的詳細(xì)過程
安裝Ubuntu 18.04后,使用國(guó)外源太慢了,修改為國(guó)內(nèi)源會(huì)快很多,下面這篇文章主要給大家介紹了關(guān)于Ubuntu18.04更改apt源為阿里云源的相關(guān)資料,需要的朋友可以參考下2021-12-12
Linux環(huán)境部署DNF倉(cāng)庫(kù)以及配置NFS共享服務(wù)
本文詳細(xì)介紹了如何在Linux環(huán)境下部署DNF倉(cāng)庫(kù)和配置NFS共享服務(wù),DNF倉(cāng)庫(kù)主要用于集中管理軟件包,而NFS共享服務(wù)則用于多系統(tǒng)間的文件共享,文章涵蓋了從倉(cāng)庫(kù)部署、軟件包同步到NFS配置和客戶端訪問的全過程,為系統(tǒng)管理員提供了全面的指導(dǎo)2025-04-04
PHP程序員玩轉(zhuǎn)Linux系列 lnmp環(huán)境搭建
這篇文章主要為大家詳細(xì)介紹了PHP程序員玩轉(zhuǎn)Linux系列文章,lnmp環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

