新聞中心
MPI(Message Passing Interface)是一種并行計(jì)算的標(biāo)準(zhǔn),可以使多臺(tái)計(jì)算機(jī)在網(wǎng)絡(luò)上互相通信,共同協(xié)同完成某種復(fù)雜的計(jì)算任務(wù)。它已經(jīng)成為高性能計(jì)算領(lǐng)域中必不可少的工具,被廣泛應(yīng)用于天氣預(yù)報(bào)、氣候模擬、分子動(dòng)力學(xué)模擬等眾多科學(xué)計(jì)算領(lǐng)域。Linux作為一個(gè)開(kāi)源操作系統(tǒng),其上的MPI實(shí)現(xiàn)也是廣受歡迎的,MPICH3便是其中的佼佼者。

1. MPICH3的概述
MPICH3是一款高性能的MPI實(shí)現(xiàn),在眾多MPI實(shí)現(xiàn)中,它是最為流行的一個(gè)。它不僅能夠?qū)崿F(xiàn)不同節(jié)點(diǎn)之間的進(jìn)程通信,還能夠?qū)崿F(xiàn)節(jié)點(diǎn)內(nèi)部的進(jìn)程通信。此外,MPICH3還支持多種硬件環(huán)境(例如多核、多節(jié)點(diǎn)、GPU等),可運(yùn)行在多種操作系統(tǒng)上,包括Linux、Windows、Mac OS等。
MPICH3是基于MPICH2發(fā)展而來(lái)的,最新版本號(hào)是3.4.1。它不僅繼承了前一版本的優(yōu)點(diǎn),還進(jìn)行了一系列的性能優(yōu)化和功能增強(qiáng)。目前,MPICH3的主要工作是進(jìn)一步提高性能、支持多種架構(gòu)和深度集成其他HPC(High Performance Computing)工具。
2. MPICH3的安裝和配置
MPICH3的安裝比較簡(jiǎn)單,只需下載tar包,解壓后進(jìn)入解壓目錄執(zhí)行configure、make和make install命令即可。配置命令如下:
./configure –prefix=/usr/local/mpich-3.4.1
make && make install
完成安裝后需要進(jìn)行一些設(shè)置。需要將mpich安裝路徑添加到環(huán)境變量中:
export PATH=$PATH:/usr/local/mpich-3.4.1/bin
然后,需要將節(jié)點(diǎn)的hostname添加到hosts文件中,以保證節(jié)點(diǎn)之間可以互相訪問(wèn):
echo “10.0.0.2 node2” >> /etc/hosts
echo “10.0.0.3 node3” >> /etc/hosts
需要配置MPI環(huán)境變量,具體實(shí)現(xiàn)方式如下:
export MPI_HOME=/usr/local/mpich-3.4.1
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
3. MPICH3的基本用法
一旦完成了安裝和配置,便可嘗試使用MPICH3進(jìn)行進(jìn)程通信。MPI程序由多個(gè)進(jìn)程組成,每個(gè)進(jìn)程之間通過(guò)MPI庫(kù)函數(shù)進(jìn)行通信。MPI庫(kù)函數(shù)由C、C++和Fortran等不同語(yǔ)言的接口,用戶可根據(jù)自己的需要選擇對(duì)應(yīng)的接口。
一個(gè)簡(jiǎn)單的MPI程序如下所示:
#include
#include
int mn(int argc, char *argv[]) {
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf(“Hello world, I am %d of %d\n”, rank, size);
MPI_Finalize();
return 0;
}
其中,MPI_Init初始化MPI環(huán)境;MPI_Comm_rank獲取進(jìn)程的排名;MPI_Comm_size獲取進(jìn)程總數(shù);MPI_Finalize在程序運(yùn)行結(jié)束前清理MPI環(huán)境。
在執(zhí)行MPI程序時(shí)需要注意,需要使用mpirun命令啟動(dòng)MPI程序,并指定進(jìn)程數(shù)。例如:
mpirun -np 4 ./helloworld
其中-np表示進(jìn)程數(shù),./helloworld表示MPI程序的可執(zhí)行文件名稱。
4. MPICH3的高級(jí)用法
除了基本用法,MPICH3還支持一些高級(jí)的特性,幫助用戶更好地優(yōu)化并行計(jì)算性能。
4.1 進(jìn)程親和性
進(jìn)程親和性(Process Affinity)是指CPU核心與進(jìn)程之間的綁定關(guān)系,它影響進(jìn)程的性能。如果進(jìn)程所運(yùn)行的CPU核心與其存儲(chǔ)器綁定關(guān)系不好,將會(huì)降低程序的性能。為此,MPICH3提供了一種進(jìn)程親和性設(shè)置方式,可以將進(jìn)程與CPU核心進(jìn)行綁定。具體實(shí)現(xiàn)方式如下:
MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
int rank, status, provided;
MPI_Init_thread(&argc, &argv, MPI_THREAD_SERIALIZED, &provided);
if (provided != MPI_THREAD_SERIALIZED){
printf(“MPI_Init_thread fled, thread support not avlable\n”);
MPI_Abort(MPI_COMM_WORLD, 1);
}
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
status = bind_to_core(rank);
if (status){
printf(“Task %d: bind_to_core fled with error %d\n”, rank, status);
MPI_Abort(MPI_COMM_WORLD, 1);
}
其中,bind_to_core(rank)是一個(gè)自定義函數(shù),它將進(jìn)程與一個(gè)CPU核心綁定。
4.2 原子操作
原子操作(Atomic Operation)是指在多線程并行操作時(shí),一旦有一個(gè)線程開(kāi)始訪問(wèn)共享資源,其他線程就不能再訪問(wèn)該資源的操作方式。MPICH3提供了一種利用原子操作實(shí)現(xiàn)互斥的方式,幫助用戶更好地進(jìn)行并行計(jì)算。具體實(shí)現(xiàn)方式如下:
MPI_Win win;
MPI_Win_create(&my_int, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win);
MPI_Win_lock_all(0, win);
MPI_Fetch_and_op(&one, &result, MPI_INT, 0, 0, MPI_SUM, win);
MPI_Win_unlock_all(win);
其中,MPI_Win_create創(chuàng)建一個(gè)共享內(nèi)存窗口;MPI_Win_lock_all鎖定窗口;MPI_Fetch_and_op執(zhí)行一個(gè)原子操作(將變量one的值累加到result變量中,并返回result變量的值);MPI_Win_unlock_all解鎖窗口。
5. 結(jié)論
相關(guān)問(wèn)題拓展閱讀:
- linux mpi.h一般在哪
linux mpi.h一般在哪
MPI(Message Passing Interface),是一種必須和其它程序語(yǔ)言一起使用的一個(gè)接口。mpi.h就是這個(gè)接口庫(kù)的侍襲
頭文件
,需要下載敗肆并安裝這個(gè)第三方庫(kù),目前主要使用的就是Mpich。察談轎官方網(wǎng)址下載:
linux mpi.h一般在哪孝前差?MPI(Message Passing Interface),是一種必須和其它程序語(yǔ)言一起使用的一個(gè)接口。mpi.h就是這個(gè)接口庫(kù)的頭文件,需要下載并安裝這個(gè)第三方庫(kù),目前主要使用的就是Mpich。1.首先進(jìn)行解壓文件openmpi-1.6.2.tar.gz。 2.然后執(zhí)行cd openmpi-1.6.2 3.接著執(zhí)行./configure,一段時(shí)間之巧皮后發(fā)現(xiàn)缺少g++編譯器,所以執(zhí)行sudo apt-get install g++ 4.執(zhí)行完之后再執(zhí)行一次./configure就可以配置成功, 5.執(zhí)行sudo make all in。Linux下MPI環(huán)境的安裝配置及MPI程序的編譯運(yùn)行,step by step。
下載MPI安裝包
去這里下載一個(gè)適合的安裝包。
安裝包的解壓
安裝包所在的目錄下,運(yùn)行tar xzvf mpich-x.x.x.tgz。
切換到解壓出來(lái)的包目錄下
cd mpich-x.x.x
configure配置編譯環(huán)境,我這里為它選擇了悔悄一個(gè)安裝路徑。
linux mpich3的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux mpich3,深入解析Linux下MPI實(shí)現(xiàn)——MPICH3,linux mpi.h一般在哪的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽(yáng)、重慶、貴陽(yáng)機(jī)房服務(wù)器托管租用。
文章名稱:深入解析Linux下MPI實(shí)現(xiàn)——MPICH3 (linux mpich3)
文章出自:http://m.fisionsoft.com.cn/article/dhsicsc.html


咨詢
建站咨詢
