############################################################## 並列計算 ############################################################## ========================================================= スレッド並列とプロセス並列 ========================================================= * スレッド並列 = メモリ共有並列 = :blue:`OpenMP` * プロセス並列 = メモリ分散並列 = :blue:`MPI` ========================================================= 実行方法 ( スレッド並列 OpenMP ) ========================================================= * 入力ファイルにて、冒頭にて、以下を記載. :: $OMP = N --------------------------------------------------------- 注意点 --------------------------------------------------------- * 使用できるのは、 :red:`OMP/MPIのどちらかひとつ` (後に書いてある方.) * libomp5.so がない、などとなったら、インストールする (aptではいる.マニュアル参照.) * maxbch に記載のバッチ数まで計算がある.(maxcas内の計算を分けている) | ========================================================= 実行方法 ( プロセス並列 MPI ) ========================================================= * 入力ファイルにて、冒頭にて、以下を記載. :: $MPI = M --------------------------------------------------------- 注意点 --------------------------------------------------------- * MPIの場合、 :blue:`バッチ分散モードの統計誤差` となる.( istdev = 0, 1 ) * 私の環境では、ifortのライブラリがない場合は、importが必要. * maxbch / PE数 が割り切れない場合、 最も近い値に勝手に変更 :blue:`(注意)` される. - maxbch=10, PE=4 の場合、maxbch=8へ勝手に変更される. * maxbch / PE数 のバッチ数までPE数並列で計算される.(全バッチ数としては同じ.) - [ 1] というバッチがPE数分表示される.これがmaxbch/PE数 だけ繰り返されるので、結局全バッチ数はmaxbch. 並列した分だけ、名前の番号が減る、ということ(同じ世代). - 一度に計算するヒストリ数(maxcas)は変わらない. :blue:`全ヒストリ数も変わらない` .