牛島先生の本読んでる。
ワークシェアリング
- do -> do をワークシェア。schedule必須か?
- sections -> ブロックをワークシェア
- single -> 単一スレッドだけにさせる(読み込みとか)。copyprivateでブロードキャスト
- workshare -> 代入をワークシェア?
threadprivate
- 変数にsave属性付けないとコンパイラに怒られる
- というかthread数のdynamicしたらダメなので使うことないかも?(dynamicたぶんONにすると思う)
具体的な使い方
ソースはもうあるとする。
コンパイル
$ ifort foo.f90 -fast -openmp -static-intel
みたいな感じ。
[2013-03-14追記]
-static-intel を付けないと、
error while loading shared libraries: libiomp5.so: cannot open shared object file: No such file or directoryと怒られた。ちょっとググッた結果、su - してから、
# ln -is /opt/intel/lib/intel64/libiomp5.so /usr/lib64/libiomp5.so
とシンボリックリンクを置いておくことで解決した模様。まぁ実行ファイルサイズ別にでかくてもいいので毎回 static にしちゃえばいいか。
この課程で知ったコマンド ldd と file がなんか便利そうな感じ。ldd a.out とするとちゃんと missing とかでていた。
http://www1.tmtv.ne.jp/~saekisan/Documents/file_ldd_.txt
とかにはやたら詳しい解説がある…けどチラ見しただけ。
[/追記]
実行
環境変数をセットしてから走らせる。
$ export OMP_NUM_THREADS=8
$ ./a.out
みたいな感じ。
一行目は、
$ OMP_NUM_THREADS=8
$ export OMP_NUM_THREADS
と分けても同じようだ。
No comments:
Post a Comment