スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

openMPのインストール

OpenMPは複数のCPU(複数コアを含む)を持った計算機上での並列化に威力を発揮する。
OpenMPを使う最大の利点は、OpenMPに対応したコンパイラであれば、非常に簡単に並列化できる点である。
現在、gcc、Visual C++、およびIntelコンパイラなど主要なコンパイラはOpenMPに対応している。
習得も他の並列化技法に比べて比較的容易である。
なお、速度を最優先にする場合、単一コンピュータ上で動かした場合でも、メモリのローカリティのためかOpenMPよりMPIの方が効率のよいことが多い。MPIに関してはこちらを参照。
(参照:OpenMPの使い方:tech.ckme.co.jp



シミュレーションの計算時間短縮に向けてopenMPの勉強に取り組んでいます.
自分のプログラムに入れてみても計算時間が増えるばかりで辛いです...
スレッド生成にかかるオーバーヘッドの対策って大事ですね.

インストール方法(windows,Visual Studio C++ 2008 Express Edition)

Windows SDK for Windows Server 2008 and .NET Framework 3.5
から,コンパイラのみチェックしてインストール

②program file の中でomp.hを検索してみて,自分のVCのバージョンのディレクトリの中にそれがあるのかチェック.別のバージョンのところへ入っていたら,今のバージョンのディレクトリへ移動させる.

③VCを立ち上げる.

④上部のデバッグ開始ボタン(緑色の三角形)近くのDebugと書かれたボタンをクリックし,Releaseを選択.

⑤VCのプロジェクトオプション(Alt+F7)から言語→openMPのサポートを「はい」にする.

⑥VCのプロジェクトオプション(Alt+F7)から最適化→最適化を「最大限の最適化 (/Ox)」にする.(コンパイルが地味に時間かかりますけど,計算時間が速くなります.)

これで準備は終わりです.
以下のプログラムを試しに動かしてみてください.


#include <stdio.h>

#include <omp.h>

int main()

{

    #pragma omp parallel 

    {

        printf("このコードは並列化されます。\n");

printf("%d of %d  \n",omp_get_thread_num(), omp_get_num_threads());

    }

    return 0;

}



実行結果
openMP
並列化され,スレッドが二つなので二回分printfが実行されました.
1of2は2つのスレッドのうちの1番目 という意味です.







スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

コメントの投稿

非公開コメント

No title

トラックバックありがとうございます。
計算時間増えますか?

俺は研究でモンテカルロシミュレーションやってるのですが、温度のdoループをOpenMPで並列化して、だいたいランタイムはほぼスレッド数分の1に短縮されましたよ。
ちなみに具体的にはパラレルリージョンでスレッド毎にIDを得て、スレッドごとに別々の仕事をするようにSPMD型のプログラムにしています。
スレッドIDの取得
!$ OMP_id = omp_get_thread_num()

SPMD型のdoループ
do km=1+OMP_id * M / Total_thread, (OMP_id+1) * M / Total_thread

ちなみにOpenMPだけでなくMPIとハイブリッドしていてMPIはとにかく一番外のループでやって、できるだけ通信は避ける。OpenMPは一番内側のループに組み込むのがいいとされているようですよ。また並列化だけでなくコンパイル時に最適化のコンパイルオプション(IntelFortranの場合 -O3 -xhost など)をつけるとかなり速くなりますよ。並列化だけでなく最適化オプションは効果絶大だと思います。

プログラムの最適化頑張ってください

No title

コメントありがとうございます
計算時間なんで増えたんでしょうね(泣)
>ちなみにOpenMPだけでなくMPIとハイブリッドしていてMPIはとにかく一番外のループでやって、できるだけ通信は避ける。OpenMPは一番内側のループに組み込むのがいいとされているようですよ。
そうなんですか!
参考にしてみます。
プロフィール

glfarika

Author:glfarika
理系の大学院生です。
海外、映画、ノリのいい音楽が好きです。
来年からゼネコン。
メールで雑談でもしませんか?
glfarika(アットマーク)gmail.com

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
メールフォーム

名前:
メール:
件名:
本文:

拍手
web拍手 by FC2
  
クリックお願いします

FC2Blog Ranking

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。