【Python】MPIによる並列処理のためにmpi4pyをインストールする

【Python】MPIによる並列処理のためにmpi4pyをインストールする プログラミング

mpi4pyを知っていますか?
PythonでMPIによる並列処理を行う場合、mpi4py一択です。

mpi4pyは歴史も長く、スパコンでも普通に利用されています。
この記事では、そんなmpi4pyについて説明しています。

本記事の内容

  • mpi4pyとは?
  • mpi4pyのシステム要件
  • mpi4pyのインストール
  • mpi4pyの動作確認

それでは、上記に沿って解説していきます。

mpi4pyとは?

mpi4pyは、Message Passing Interface (MPI) 規格の Python バインディングです。
MPI-1/2/3 仕様に基づいて実装されています。

PythonでMPIによる並列処理(計算)を行うために、mpi4pyは必須です。
そのため、mpi4pyは知る人ぞ知るというライブラリと言えます。

スパコン(スーパーコンピュータ)の世界では、ごくごく普通に利用するらしいです。
「富岳」にmpi4pyがインストールされています。

そこまで大規模(大袈裟)でなくても、mpi4pyは役に立ちます。
1台のマシン上で複数プロセスを走らせる場合にも、mpi4pyが利用できます。

以上、mpi4pyの関する説明でした。
次は、mpi4pyのシステム要件を確認します。

mpi4pyのシステム要件

現時点(2021年8月)でのmpi4pyの最新バージョンは、3.0.3となります。
この最新バージョンは、2019年11月4日にリリースされています。

https://bitbucket.org/mpi4py/mpi4py/src/master/CHANGES.rst

ただ、上記を見ると、2021年のどこかで3.1.0を公開する予定のようです。
また、その際に確認してみようと思います。

mpi4pyのシステム要件として、以下がポイントとなります。

  • OS
  • Python
  • MPI

それぞれを下記で説明します。

OS

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

OSに関しては、Pythonが動けばどこでもOKのようです。

Python

サポート対象となるバージョンは、以下。

  • Python 2.7
  • Python 3.3以降(表記は3.8まで)

このように記載されていますが、Python 3.9でも問題はありません。
実際、私は以下のバージョンで検証しています。

>Python -V 
Python 3.9.6

なお、Pythonの公式開発サイクルは以下。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月

この公式開発サイクルと比較すると、mpi4pyは頑張り過ぎと言えます。
Python 2系は、さすがに切り捨ててもいいはずです。

MPI

MPIと書いていますが、以下のことです。
MPI自体は規格のことであり、ライブラリ・ソフトウェアではありません。

  • Microsoft MPI(MS-MPI)
  • Open MPI
  • MPICH

上記のどれかが、インストール済みでなければなりません。
それは、OSによって異なってくるでしょう。

それぞれについては、以下の記事で説明しています。

まとめ

Windowsであれば、Microsoft MPIをインストールしておきましょう。
Linux・macOSなら、Open MPIかMPICHのどちからをインストールしておきます。

Pythonのバージョンに関しては、最新のバージョンを使いましょう。
Pythonのアップグレードについては、次の記事でまとめています。

以上、mpi4pyのシステム要件を説明しました。
次は、mpi4pyをインストールしていきます。

mpi4pyのインストール

まずは、現状のインストール済みパッケージを確認しておきます。

>pip list 
Package    Version 
---------- ------- 
pip        21.2.2 
setuptools 57.4.0

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、mpi4pyのインストールです。
mpi4pyのインストールは、以下のコマンドとなります。

pip install mpi4py

インストールは、少し時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list 
Package    Version 
---------- ------- 
mpi4py     3.0.3 
pip        21.2.2 
setuptools 57.4.0

mpi4pyには、依存パッケージはないようです。
その点では、どんな環境にも容易に導入できると言えます。
Pythonのバージョンも、幅広くサポートしていますからね。

以上、mpi4pyのインストールの説明でした。
最後に、mpi4pyの動作確認を行います。

mpi4pyの動作確認

mpi4pyの動作確認用のコードは、以下。
test.pyというファイル名で保存します。

test.py

from mpi4py import MPI 
comm = MPI.COMM_WORLD 
rank = comm.Get_rank() 
size = comm.Get_size() 
name = MPI.Get_processor_name() 
print(f"{name} : {rank} : {size}")

上記を単純に実行します。
そうすると、以下のような表示となります。

マシン名 : 0 : 1

マシン名には、プログラムを実行したマシンの名前が入ります。
これでmpi4pyの動作確認自体はできました。

折角なので、複数プロセスの検証も行いましょう。
やり方は、以下のコマンドを実行するだけです。

mpiexec -np 4 python text.py

システム要件(MPI)を満たしていれば、「mpiexec」コマンドが動くはずです。
上記コマンドであれば、OSに関わらず実行可能となります。
正確には、Microsoft MPIでもOpen MPIでも何でもOKということです。

そして、上記コマンドを実行すると、以下の結果が表示されます。

$ mpiexec -np 4 python test.py 
ubuntu-focal : 1 : 4 
ubuntu-focal : 2 : 4 
ubuntu-focal : 0 : 4 
ubuntu-focal : 3 : 4

上記を簡単に説明します。
4つのプロセスを並列で動かしたことになります。

同一マシン上での並列処理です。
「mpiexec」コマンドを使えば、複数マシンによる並列処理も可能になります。

複数マシンによる並列処理は、また別の記事で解説します。
下準備がいろいろと面倒です。

今回は、あくまでmpi4pyに関しての内容がメインとなりますので。

以上、mpi4pyの動作確認の説明でした。

タイトルとURLをコピーしました