OpenMPと OpenMPIの導入で苦労した話

きっかけ

授業で並列プログラミングの比較をする機会があったので、円周率の計算でどの程度の差がでるかということを試してみた。

今回試すのはCでの並列処理を行う OpenMP と MPI の 2つを試すこととなった。

Mac でこれらをハイブリッドで試すのに OpenMPI が便利ということで入れてみたが苦労した話。

OpenMP の導入

OSX の標準で入っている gcc では OpenMP が動かないらしいので、gcc -5 をhomebrew を使って導入してみた。

調べてみるとMacPorts のほうが簡単に導入できるらしい。

  1. brew update を行ったあとにbrew doctor を行ってエラーがないことを確認
  2. 以下のようにしてgcc-5 を導入

  3. 作ったファイルを次のようにコンパイルする

  4. gcc ってだけで動かしたい人はシンボリックリンクを張ってください

OpenMPI の導入

  1. まず、OpenMPIを取ってきて解答する

  2. wget コマンドとかが使えない場合は以下のサイトから取ってくる

    https://www.open-mpi.org/

  3. 次に取ってきた Openmpi のディレクトリに移動して make ファイル(コンパイルの設定ファイル)を作成する

    • シンボリックリンクなどで設定してgcc などの場所が違う場合は適宜自分の設定している場所にしておいてください。
    • OpenMP を上の手順のとおりに入れたままならこの設定で大丈夫です。
    • --prefix でインストールしたいフォルダが特になければ /usr/local/bin で設定してください
  4. make ファイルが作成されたので、実行します

  5. path を通してください bash 使ってるなら以下のような形で設定できます

    • 3 で /usr/local/bin に設定した人は /usr/local/bin に設定してね
  6. mpic++ --version でバージョン確認ができたら入っています

OpenMPI 実行時

  • OpenMPIの使い方は調べてもらったらわかりますが、mpic++ でコンパイルして使います
  • 実際に実行するときには mpirun で実行します
  • 今回 El Capitan の OS 使ってる場合には多分下のようなエラーがでます

    f:id:shsm385:20161011005706p:plain

  •  

    libmpi.20.dylibがないっていわれているので、シンボリックリンクを貼ってあげます

  • これで実行できるはずです

感想

コンフィグの設定とかで苦労しました。あと自分の場合はなぜかシンボリックリンクがうまく貼れない事態とかおこったから、時間がかかってたなあ。(震え)

あと先生のプログラムバグってるの多かったなあ。

参考

qiita.co