DesignAssembler

備忘録に近い

Raspberry PiにOpenMPIをインストール

こんにちは。

今回はRaspberry PiにOpenMPIをインストールします。

ざっくりOpenMPIの説明をします。

OpenMPIとはFortran、C、C++用の並列コンピューティングを可能にするライブラリです。

劇的ざっくり。

ここではC言語用ライブラリとして想定のもと行います。

準備

まず、ソースファイルを準備して解凍します。

$ wget http://www.open-mpi.org/software/ompi/v1.8/download/openmpi-1.8.4.tar.bz2
$ tar xjvf openmpi-1.8.4.tar.bz2
$ cd openmpi-1.8.4
$ ./configure

ここでconfigureにprefixは指定しませんのでデフォルトの/usr/local/binをトップディレクトリとしたMakefileが生成されます。
configureで30分くらいかかりました。

make

$ sudo make all
$ sudo make install

make allでかなり時間がかかります。寝る前にやった方が良いと思います。

ちなみに3時間くらいかかりました。

PATHの設定

$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
#修正20160525
#Tr_Kyamさんありがとうございます。

これでインストールは完了です。

$ which mpicc

を実行し先ほど指定したPATH、つまり/usr/local/bin/mpiccと表示されたら成功です!

コンパイルgccなどと同様に

$ mpicc -o <出力名> <入力ファイル>

です。複数ノードで実行する場合は

$ mpirun -np <ノード数> <実行ファイル>

と指定します。

サンプル

こんな感じのソースコードがひな形になります。

#include<stdio.h>
#include "mpi.h"

int main(int argc,char **argv){
  int pid,procs;
  MPI_Init(&argc,&argv);
  MPI_Comm_rank(MPI_COMM_WORLD,&pid);
  MPI_Comm_size(MPI_COMM_WORLD,&procs);
  printf("Hello!World!  %d¥n",pid);
  MPI_Finalize();
  return 0;
}

ファイル名をmpi1.cで保存し、コンパイル
実行結果はこのようになりました。

f:id:hyottokoaloha:20150123002727p:plain


1台のRaspberry Piで並列コンピューティングなんてなんの意味もないんですけどね・・・

じゃあ2台ではどうだろうか!

という事でRaspberry Pi2台で並列分散コンピューティングします。

(通信にかかる時間により、早くはなりません。でも好奇心が駆り立てます。)

結果はのちのち書きます。