「MPI」の版間の差分
細 (→参考ページ) |
|||
行15: | 行15: | ||
多くのフリーの MPI 実装が開発されてきたが、 | 多くのフリーの MPI 実装が開発されてきたが、 | ||
現在は Open MPI と MPICH2 の2つに集約されていると考えてよいだろう。 | 現在は Open MPI と MPICH2 の2つに集約されていると考えてよいだろう。 | ||
− | |||
− | |||
=== LAM/MPI === | === LAM/MPI === | ||
行23: | 行21: | ||
現在はメンテナンスモードとなっていて、 | 現在はメンテナンスモードとなっていて、 | ||
開発者は後述の OpenMPI プロジェクトに合流しているそうだ。 | 開発者は後述の OpenMPI プロジェクトに合流しているそうだ。 | ||
− | |||
− | |||
[[MacPorts]] には、以下の Port が用意されている。 | [[MacPorts]] には、以下の Port が用意されている。 | ||
行33: | 行29: | ||
広く使われている MPI 実装で、rsh/ssh 越しに通信を行うもの。 | 広く使われている MPI 実装で、rsh/ssh 越しに通信を行うもの。 | ||
− | |||
− | * | + | *https://www.mpich.org/ |
− | + | ||
インストール手順 | インストール手順 | ||
*ソースを展開して、手動で configure, make, make install を行う。 | *ソースを展開して、手動で configure, make, make install を行う。 | ||
− | *[[MacPorts]] には、以下の Ports | + | *[[MacPorts]] には、以下の Ports が用意されていた。 |
mpich science/mpich 1.2.7 Message Passing Interface (MPI) Library | mpich science/mpich 1.2.7 Message Passing Interface (MPI) Library | ||
mpich2 science/mpich2 1.0.3 Message Passing Interface (MPI) Library | mpich2 science/mpich2 1.0.3 Message Passing Interface (MPI) Library | ||
行53: | 行47: | ||
*http://www.open-mpi.org/ | *http://www.open-mpi.org/ | ||
− | OSX 10.5 Leopard にはデフォルトで Open MPI | + | OSX 10.5 Leopard にはデフォルトで C言語対応の Open MPI がインストールされていた。 |
ただし fortran サポートはオフになっており、mpif77 などは機能しない。 | ただし fortran サポートはオフになっており、mpif77 などは機能しない。 | ||
Fortran から MPI を使う場合は、ソースからビルドするか、MacPorts などのパッケージシステムを使う必要がある。 | Fortran から MPI を使う場合は、ソースからビルドするか、MacPorts などのパッケージシステムを使う必要がある。 | ||
行71: | 行65: | ||
==== ソースからのインストール ==== | ==== ソースからのインストール ==== | ||
− | OpenMPI プロジェクトのサイトから openmpi-1.8. | + | OpenMPI プロジェクトのサイトから openmpi-1.8.8.tar.bz2 をダウンロードしたのち、 |
以下のようなオプションを configure に渡せばいい。 | 以下のようなオプションを configure に渡せばいい。 | ||
2つのパラメーター、F77 (fortran 77) と FC (fortran 90/95) に | 2つのパラメーター、F77 (fortran 77) と FC (fortran 90/95) に |
2015年8月10日 (月) 22:23時点における版
目次
MPI とは?
Message Passing Interface の略で、並列・分散プロセス間のメッセージング機能を提供する標準規格。 あるいは、その実装を差す。1995年に MPI フォーラムによって標準化されて以来、多くの実装が存在していて、 コードの移植性に優れているのが特徴。言語に依存せず、C でも Fortran でも利用できる。
プログラム内に MPI 用のヘッダをインクルードして、 UNIX の fork プログラミングの要領で MPI 関数を追加していくだけで、 手軽に並列プログラムを作ることができる。
- MPI Forum - http://www.mpi-forum.org/
実装
多くのフリーの MPI 実装が開発されてきたが、 現在は Open MPI と MPICH2 の2つに集約されていると考えてよいだろう。
LAM/MPI
daemon を介して、メッセージングを行う実装らしい。 現在はメンテナンスモードとなっていて、 開発者は後述の OpenMPI プロジェクトに合流しているそうだ。
MacPorts には、以下の Port が用意されている。
lammpi science/lammpi 7.1.2 MPI implementation for parallel computing
MPICH
広く使われている MPI 実装で、rsh/ssh 越しに通信を行うもの。
インストール手順
- ソースを展開して、手動で configure, make, make install を行う。
- MacPorts には、以下の Ports が用意されていた。
mpich science/mpich 1.2.7 Message Passing Interface (MPI) Library mpich2 science/mpich2 1.0.3 Message Passing Interface (MPI) Library
Open MPI
FT-MPI, LA-MPI, LAM/MPI, PACX-MPI などの さまざまな先行プロジェクトの成果をもとに 開発されている MPI 実装。
OSX 10.5 Leopard にはデフォルトで C言語対応の Open MPI がインストールされていた。 ただし fortran サポートはオフになっており、mpif77 などは機能しない。 Fortran から MPI を使う場合は、ソースからビルドするか、MacPorts などのパッケージシステムを使う必要がある。
MacPorts
以下の Port が用意されている。
openmpi science/openmpi 1.3.1 A High Performance Message Passing Library
MacOSX_WorkShop
以下が配布されている。
- OSX 10.7: openmpi-1.5.4-1osx10.7, gcc-4.6.2-1osx10.7
- OSX 10.8: openmpi-1.6.4-1osx10.8, gcc-4.6.4-1osx10.8
- OSX 10.9: openmpi-1.8.1-3osx10.9, gcc-4.8.2-2osx10.9 (ICC 対応版も src.rpm で提供)
ソースからのインストール
OpenMPI プロジェクトのサイトから openmpi-1.8.8.tar.bz2 をダウンロードしたのち、 以下のようなオプションを configure に渡せばいい。 2つのパラメーター、F77 (fortran 77) と FC (fortran 90/95) に コンパイラのパスを直に渡せば良い。
32bit コンパイラ:
$ ./configure --prefix=/opt/openmpi32 F77=/opt/intel/Compiler/11.1/067/bin/ia32/ifort \ FC=/opt/intel/Compiler/11.1/067/bin/ia32/ifort $ make $ sudo make install
64bit コンパイラ:
Developer Tools の gcc(デフォルト)を C コンパイラとして使う場合は、 コンパイラオプション CFLAGS=-m64 CXXFLAGS=-m64 を追加する必要がある。 (I am not sure whether the "-m64" option is necessary in 2014)
$ ./configure --prefix=/opt/openmpi64i F77=/opt/intel/Compiler/11.1/067/bin/intel64/ifort \ FC=/opt/intel/Compiler/11.1/067/bin/intel64/ifort CFLAGS=-m64 CXXFLAGS=-m64 $ make $ sudo make install
Intel Composer の場合
$ . /opt/intel/bin/ifortvars.sh intel64 $ ./configure --prefix=/opt/openmpi64i F77=/usr/bin/ifort FC=/usr/bin/ifort $ make $ sudo make install
64bit gfortran は以下のオプションで動作した。
$ ./configure --prefix=/opt/openmpi64g CFLAGS=-m64 CXXFLAGS=-m64 FCFLAGS=-m64 FFLAGS=-m64 $ make $ sudo make install
参考書籍
- 「並列プログラミング入門 MPI版」
- MPI並列プログラミング(ISBN:456301544X)
- http://www.alde.co.jp/documents/information/index.html - 邦訳書籍
- Parallel Programming with MPI - 原書のサポートサイト。ソースコードもあり。
- 実践MPI‐2—メッセージパッシング・インタフェースの上級者向け機能 (ISBN:4894714442)
- High Performance Linux Clusters: With Oscar, Rocks, openMosix, And MPI (ISBN:0596005709)