[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(LABO/MenuBar)
* LABO/OpenMP [#ebff6888]
#contents
** 一行メモ [#hed06a64]
- 2重ループの並列化 collapse(2) を入れる -- &new{2024-0...
例)
#pragma omp parallel for collapse(2) private(i,j,k) firs...
for ( j = 1; j < yng+1; j++ ) {
for ( k = 1; k < zng+1; k++ ) {
wp[s][e][0 ][j][k][ss] = 0.0;
wp[s][e][xng+1][j][k][ss] = 0.0;
}
}
forとforの間に文があると、collapseできない。forの最後の}...
その他、for(...;...;...)は単純な形であるなどの条件がある。
- チーム、ネストされた並列領域、OMP_MAX_ACTIVE_LEVELS=1、...
- firstprivateに配列(定数ポインタ)を渡すと、コンパイルエ...
#comment
* OpenMP [#q37e74be]
** 並列化へのメモ [#i48a05fc]
- namelessのMPI化はnwp,xng,yng,zngが分割されてompに渡さ...
- ループ分割はparalell forだけではダメで、ループ範囲を手...
- ompの中にompが出ないように関数コールを考える必要がある...
- mainでparallelにすると楽?
sharedをきっちり自分ですることになる?
ヒープはsharedにならない。
少なくともmainはやめた方が良い(個々の関数の場合が多く...
** 用語メモ [#k75ccca8]
並列リージョン(#pragma omp parallel指示文で指定)、共有デ...
** 指示文(#pragma omp 指示文 [指示節,...]) [#j0f1e0ee]
指示文
- for
- single ひとつのスレッドのみで実行
- master マスタースレッドのみで実行
- critical 各スレッドの実行は一度にひとつのみに制限
- threadprivate グローバル変数をprivateにする
- atomic 同時書き込みを防ぐ
- flush メモリ一貫性をとる(CPUレジスタをフラッ...
- barrier
- sections
スコープ指示節
- private
- firstprivate privateのひとつであり初期値設定される
- lastprivate privateのひとつでありスレッド終了後に値...
- shared デフォルト
- default default(none)はめんどいだけと思われる。...
- reduction
- copyin threadprivateで指定した変数に値を入れる
- copyprivate omp singleのみで使用可。初期値設定され...
- ordered omp forに対する指示
- schedule static,dynamic,guidedのいずれかを与える...
- nowait 終了したスレッドは、すぐ次の処理につづく
(注)
o 呼び出される手続きの中はprivate変数だが staticはshared...
o グローバル変数はデフォルトでshared
o threadprivate, private, lastprivateは自動で初期化され...
o ポインタをsharedしても*ポインタはそうはならないようだ...
ポインタをprivateにして初期化しても、ほとんど速度アッ...
ポインタ変数はsharedできるが意味は無い?(新たにあるス...
他のスレッドでは別のアドレス空間を使っている、などなど...
** 自動のflush(webでの情報が錯綜している) [#e7d7f2ee]
- 一覧表
------------------+-------------------------------------
あり | なし
------------------+-------------------------------------
parallelの出入口 |
barrier |
|
criticalの出入口 |
forの出口 | for入口
singleの出口 | singleの入口
sectionsの出口 | sectionsの入口
| masterの出入口
------------------+-------------------------------------
(注1) nowait指示節を付けると暗黙のflushを無くすことが...
(注2) flushがされてもポインタが指し示す領域はflushされ...
ポインタが指し示す領域がCPUコアのレジスタからフ...
スレッド間の同期には注意が要る!
(注3) 参考: barrierは上表のようにflushをするが、flush...
** 仕様 [#a30cdee9]
- 富士通のOpenMP 3.0日本語訳 http://www.openmp.org/mp-doc...
終了行:
#menu(LABO/MenuBar)
* LABO/OpenMP [#ebff6888]
#contents
** 一行メモ [#hed06a64]
- 2重ループの並列化 collapse(2) を入れる -- &new{2024-0...
例)
#pragma omp parallel for collapse(2) private(i,j,k) firs...
for ( j = 1; j < yng+1; j++ ) {
for ( k = 1; k < zng+1; k++ ) {
wp[s][e][0 ][j][k][ss] = 0.0;
wp[s][e][xng+1][j][k][ss] = 0.0;
}
}
forとforの間に文があると、collapseできない。forの最後の}...
その他、for(...;...;...)は単純な形であるなどの条件がある。
- チーム、ネストされた並列領域、OMP_MAX_ACTIVE_LEVELS=1、...
- firstprivateに配列(定数ポインタ)を渡すと、コンパイルエ...
#comment
* OpenMP [#q37e74be]
** 並列化へのメモ [#i48a05fc]
- namelessのMPI化はnwp,xng,yng,zngが分割されてompに渡さ...
- ループ分割はparalell forだけではダメで、ループ範囲を手...
- ompの中にompが出ないように関数コールを考える必要がある...
- mainでparallelにすると楽?
sharedをきっちり自分ですることになる?
ヒープはsharedにならない。
少なくともmainはやめた方が良い(個々の関数の場合が多く...
** 用語メモ [#k75ccca8]
並列リージョン(#pragma omp parallel指示文で指定)、共有デ...
** 指示文(#pragma omp 指示文 [指示節,...]) [#j0f1e0ee]
指示文
- for
- single ひとつのスレッドのみで実行
- master マスタースレッドのみで実行
- critical 各スレッドの実行は一度にひとつのみに制限
- threadprivate グローバル変数をprivateにする
- atomic 同時書き込みを防ぐ
- flush メモリ一貫性をとる(CPUレジスタをフラッ...
- barrier
- sections
スコープ指示節
- private
- firstprivate privateのひとつであり初期値設定される
- lastprivate privateのひとつでありスレッド終了後に値...
- shared デフォルト
- default default(none)はめんどいだけと思われる。...
- reduction
- copyin threadprivateで指定した変数に値を入れる
- copyprivate omp singleのみで使用可。初期値設定され...
- ordered omp forに対する指示
- schedule static,dynamic,guidedのいずれかを与える...
- nowait 終了したスレッドは、すぐ次の処理につづく
(注)
o 呼び出される手続きの中はprivate変数だが staticはshared...
o グローバル変数はデフォルトでshared
o threadprivate, private, lastprivateは自動で初期化され...
o ポインタをsharedしても*ポインタはそうはならないようだ...
ポインタをprivateにして初期化しても、ほとんど速度アッ...
ポインタ変数はsharedできるが意味は無い?(新たにあるス...
他のスレッドでは別のアドレス空間を使っている、などなど...
** 自動のflush(webでの情報が錯綜している) [#e7d7f2ee]
- 一覧表
------------------+-------------------------------------
あり | なし
------------------+-------------------------------------
parallelの出入口 |
barrier |
|
criticalの出入口 |
forの出口 | for入口
singleの出口 | singleの入口
sectionsの出口 | sectionsの入口
| masterの出入口
------------------+-------------------------------------
(注1) nowait指示節を付けると暗黙のflushを無くすことが...
(注2) flushがされてもポインタが指し示す領域はflushされ...
ポインタが指し示す領域がCPUコアのレジスタからフ...
スレッド間の同期には注意が要る!
(注3) 参考: barrierは上表のようにflushをするが、flush...
** 仕様 [#a30cdee9]
- 富士通のOpenMP 3.0日本語訳 http://www.openmp.org/mp-doc...
ページ名: