|
|
行1: |
行1: |
− | == MPI とは? ==
| + | #REDIRECT [[Wikipedia:MPI]] を参照してください。 |
− | | + | |
− | '''M'''essage '''P'''assing '''I'''nterface の略で、並列・分散プロセス間のメッセージング機能を提供する標準規格。
| + | |
− | あるいは、その実装を差す。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 越しに通信を行うもの。
| + | |
− | | + | |
− | *https://www.mpich.org/
| + | |
− | | + | |
− | インストール手順
| + | |
− | *ソースを展開して、手動で 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 実装。
| + | |
− | | + | |
− | *http://www.open-mpi.org/
| + | |
− | | + | |
− | 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.10.2.tar.bz2 をダウンロードしたのち、
| + | |
− | 以下のようなオプションを configure に渡せばいい。
| + | |
− | FC パラメーターにコンパイラのパスを直に渡せば良い。
| + | |
− | (fortran 77 コンパイラ用の F77 パラメーターは廃止された模様)
| + | |
− | | + | |
− | Intel Composer の場合
| + | |
− | | + | |
− | $ . /opt/intel/bin/compilervars.sh intel64
| + | |
− | [ $ . /opt/intel/bin/ifortvars.sh intel64 ]
| + | |
− | $ ./configure --prefix=/opt/openmpi64i FC=/opt/intel/bin/ifort
| + | |
− | [ $ ./configure --prefix=/opt/openmpi64i FC=/opt/intel/bin/ifort CFLAGS=-m64 CXXFLAGS=-m64 ]
| + | |
− | $ make
| + | |
− | $ sudo make install
| + | |
− | | + | |
− | XCode の gcc(デフォルト)を C コンパイラとして使う場合、2010年頃はコンパイラオプション '''CFLAGS=-m64 CXXFLAGS=-m64''' を追加する必要がありましたが、いまは不要かもしれません。
| + | |
− | | + | |
− | 64bit gfortran は以下のオプションで動作した。
| + | |
− | | + | |
− | $ ./configure --prefix=/opt/openmpi64g CFLAGS=-m64 CXXFLAGS=-m64 FCFLAGS=-m64 FFLAGS=-m64
| + | |
− | $ make
| + | |
− | $ sudo make install
| + | |
− | | + | |
− | == 参考書籍 ==
| + | |
− | | + | |
− | *「並列プログラミング入門 MPI版」
| + | |
− | **http://accc.riken.jp/hpc/training/
| + | |
− | *MPI並列プログラミング([[ISBN:456301544X]])
| + | |
− | **http://www.alde.co.jp/documents/information/index.html - 邦訳書籍
| + | |
− | **[http://www.cs.usfca.edu/~peter/ppmpi/ Parallel Programming with MPI] - 原書のサポートサイト。ソースコードもあり。
| + | |
− | *実践MPI‐2—メッセージパッシング・インタフェースの上級者向け機能 ([[ISBN:4894714442]])
| + | |
− | *High Performance Linux Clusters: With Oscar, Rocks, openMosix, And MPI ([[ISBN:0596005709]])
| + | |
− | | + | |
− | == 参考ページ ==
| + | |
− | | + | |
− | *[http://www.cv.titech.ac.jp/~hiro-lab/study/mpi_reference/index.html MPIリファレンス]
| + | |
− | *[http://www.is.doshisha.ac.jp/smpp/ 超並列計算研究会] --「PCクラスタ超入門」などの入門記事
| + | |
− | | + | |
− | == Wiki内の参考ページ ==
| + | |
− | | + | |
− | *[[数値計算]]
| + | |
− | | + | |
− | [[Category:ソフトウェア]]
| + | |
− | [[Category:開発]]
| + | |