在上一篇中我們簡要介紹了 mpi4py 及其所提供的并行編程功能,本文介紹如何安裝和使用 mpi4py逼庞。
安裝依賴
要正確地安裝和使用 mpi4py,你需要先安裝和設(shè)置好以下軟件:
- 一個 MPI 實現(xiàn)軟件,最好能支持 MPI-3 標(biāo)準(zhǔn)立轧,并且最好是動態(tài)編譯的膛虫。比較常用的 MPI 實現(xiàn)軟件有 OpenMPI草姻,MPICH 等。
- Python 2.7稍刀,Python 3.3+撩独。要寫 Python 的并行程序,Python 自然是必不可少的账月。
安裝 mpi4py
當(dāng)你已經(jīng)安裝好以上依賴的軟件后综膀,就可以安裝 mpi4py 了,不過在這之前你需要 mpicc 在你的程序搜索路徑上局齿,可以簡單地通過以下命令查看:
$ which mpicc
如果該命令輸出對應(yīng)的 mpicc 執(zhí)行路徑剧劝,你就可以進(jìn)行下面的安裝步驟了,但是如果沒有輸出抓歼,你需要把安裝的 MPI 軟件的 bin 目錄添加到 PATH 環(huán)境變量讥此,lib 目錄添加到 LD_LIBRARY_PATH 環(huán)境變量,以使 mpicc 可以被搜索到谣妻。
使用 pip 安裝
使用 pip 安裝 mpi4py 非常簡單萄喳,如果你有 root 權(quán)限,直接在終端中輸入下面的命令就行了:
$ pip install mpi4py
如果沒有 root 權(quán)限蹋半,你可以安裝 mpi4py 到自己的 $HOME 目錄下他巨,這樣只能供你自己使用:
$ pip install mpi4py --user
保證安裝的可執(zhí)行文件路徑 ~/.local/bin 添加到了 PATH 環(huán)境變量中,庫文件路徑 ~/.local/lib 添加到了 LD_LIBRARY_PATH 環(huán)境變量中。
從源文件安裝
叢 https://pypi.python.org/pypi/mpi4py 上下載 mpi4py 安裝包染突,然后解壓安裝包:
$ tar -xvzf mpi4py-X.Y.Z.tar.gz
$ cd mpi4py-X.Y.Z
編譯安裝包:
$ python setup.py build
編譯完成后就可以安裝了:
$ python setup.py install
或者
$ python setup.py install --user
測試 mpi4py 是否安裝正確
現(xiàn)在可以寫一段簡單的程序來測試 mpi4py 是否安裝好及能否正常使用:
# mpi_helloworld.py
from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
node_name = MPI.Get_processor_name() # get the name of the node
print 'Hello world from process %d at %s.' % (rank, node_name)
運(yùn)行 mpi4py 程序
用下面的命令運(yùn)行一個 Python 寫的 MPI 程序:
$ mpiexec -n 3 python mpi_helloworld.py
Hello world from process 2 at node1.
Hello world from process 0 at node1.
Hello world from process 1 at node1.
也可以用一種較老的方式:
$ mpirun -np 3 python mpi_helloworld.py
Hello world from process 2 at node1.
Hello world from process 0 at node1.
Hello world from process 1 at node1.
其中 -n 或者 -np 指定使用多少個 MPI 進(jìn)程來執(zhí)行這個程序匪傍。
上面的命令會在單個節(jié)點(單臺機(jī)器)上發(fā)起3個 MPI 進(jìn)程來并行執(zhí)行 mpi_helloworld.py
,如果要在多個節(jié)點(多臺機(jī)器)上并行執(zhí)行程序觉痛,可以用下面的命令:
$ mpiexec -n 3 -host node1,node2,node3 python mpi_helloworld.py
Hello world from process 1 at node2.
Hello world from process 2 at node3.
Hello world from process 0 at node1.
其中 -host (或者 -H)后面指定所要使用的節(jié)點役衡,這些節(jié)點以逗號分隔。如果節(jié)點很多也可以用選項 -hostfile 或者 -machinefile 指定一個文件薪棒,在這個文件中寫入你需要使用的計算節(jié)點手蝎。更多的運(yùn)行選項可以通過下面的命令獲得:
$ mpiexec --help
在下一篇中我們將通過幾個簡單的例子來展示怎么使用 mpi4py 來進(jìn)行并行編程,以使讀者能夠快速地上手使用 mpi4py俐芯。