折角たくさんコアがあるけど、並列プログラミングは面倒だという方に指示されているのかどうか解りませんが、OpenMPを使ったときのメモを。
#ifdef _OPENMP #pragma omp parallel #endif for( int i = 0; i < permu_cnt; ++i){ ... などとすると、マルチコア化されるという魔法のような話です。 スレッド数は環境変数OMP_NUM_THREADSで設定できます。GNU g++は4.2からOpenMPに正式対応したということですが、手元にIntel C++ Compiler11.0があったので、これでコンパイルしました。 言われたとおり、 -openmp ってつけたらコンパイルは出来たのに、実行すると、 dyld: Library not loaded: libiomp5.dylib Referenced from: /Users/***呼び出し元のバイナリ*** Reason: image not found Trace/BPT trap というエラーが・・・ /opt/intel/Compiler/11.0/056/lib に、libiomp5.dylibがあったので、LD_LIBRARY_PATHに追加すればいいのか?と思ってやってみるも失敗。 あり?と少し悩みましたが、iccのコンパイルオプションに、 -static-intel を追加すればOKです。 なんか、とりあえずマルチスレッドで動いてます。8コアMacProなので、5コアくらい使って5倍になったらいいかなというところです。 スポンサーサイト
|
|
| ホーム |
|