余白の書きなぐり

aueweのブログ

UbuntuとMintにOpenMPIを導入

次の記事-OpenMPIの使い方について

OpenMPIとOpenMPは別物だよ!!!
どちらも並列処理のためのフレームワークだけど、 なんでわざわざ混乱を招く名前をつけるのかね。 両者の違いは 「MPIでは各プロセスが占有のメモリ領域を扱うのに対し、 OpenMPではメモリを共有してアクセスすることができる。」 ということらしい。
参考:OpenMPが遅くなってしまう理由-あおんとのブログ

この記事は OpenMPI のインストール記事です。OpenMPではありません。

インストール

インテル製の速いコンパイラ(iccとかifortとか)を使う場合は自前でビルドする必要がある。 普通のgccで妥協すればaptで一発導入。

$ sudo apt-get install openmpi-bin openmpi-dev

正しくインストールできたかチェックする

// testcode.c

#include <mpi.h>
#include <stdio.h>
int main(int argc, char **argv){

  int my_rank, my_size;
  MPI_Init(&argc,&argv);
  MPI_Comm_size(MPI_COMM_WORLD,&my_size);
  MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
  printf ("size (numprocs) = %d, my rank (id) = %d\n", my_size, my_rank);
  MPI_Finalize();

  return 0;
} 
  • コンパイル
$ mpicc testcode.c
  • 実行(&結果)
$ mpirun -np 8 a.out
size (numprocs) = 4, my rank (id) = 0
size (numprocs) = 4, my rank (id) = 2
size (numprocs) = 4, my rank (id) = 3
size (numprocs) = 4, my rank (id) = 1

参考文献:計算科学入門第7回-MPIによる並列計算 ←これはおすすめ