This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
quantumespresso:並列計算 [2020/03/09 20:42] koudai [手順] |
quantumespresso:並列計算 [2021/06/27 22:04] (current) |
||
---|---|---|---|
Line 6: | Line 6: | ||
====== 手順 ====== | ====== 手順 ====== | ||
+ | ===== MPI ===== | ||
MPIを使って並列化計算をしたい場合は、次のように実行します。 | MPIを使って並列化計算をしたい場合は、次のように実行します。 | ||
< | < | ||
- | $ mpirun -n 2 pw.x < case.scf.in > case.scf.out | + | $ mpirun -np 2 pw.x < case.scf.in > case.scf.out |
</ | </ | ||
- | 2はMPIプロセスの数です。 使用しているCPUの最大スレッド数を超えない値を設定します。 | + | -npによりMPIプロセスの数を指定します |
+ | |||
+ | ===== OpenMP ===== | ||
+ | |||
+ | もしコンパイル時にOpenMPを許可していた場合、スレッド数は環境変数OMP_NUM_THREADSのものが使われます。 | ||
+ | 以下のようにして確認できます | ||
+ | < | ||
+ | $ echo $OMP_NUM_THREADS | ||
+ | </ | ||
+ | OMP_NUM_THREADSは1つのCPU当たりのコア数を超えないようにします。 | ||
+ | 例えば12スレッドのOpenMP並列で実行する場合は次のようにします | ||
+ | < | ||
+ | $ export OMP_NUM_THREADS=12 | ||
+ | $ pw.x < case.scf.in > case.scf.out | ||
+ | </ | ||
+ | |||
+ | ===== MPI+OpenMPのハイブリッド実行 ===== | ||
+ | |||
+ | 例えばMPIで2プロセスを生成し、各プロセスで12スレッドのOpenMP並列を行う場合、次のようにします。 | ||
+ | < | ||
+ | $ export OMP_NUM_THREADS=12 | ||
+ | $ mpirun -n 2 pw.x < case.scf.in > case.scf.out | ||
+ | </ | ||
- | もしコンパイル時にOpenMPを許可していた場合、MPIプロセスあたりのスレッド数がCPUあたりのスレッド数と同じになるように設定されます(pw.xを実行したときの出力ファイルの最初の方に、どれだけのコアを使うかが出力されます)。 | + | ===== wf_collect ===== |
- | ですので、プロセス数はコンピュータのCPUの数と一致させます。 | + | |
- | scf計算やbands計算などといった計算ごとに並列数が異なる場合は、& | + | scf計算やbands計算などといった計算ごとに並列数が異なる場合は、入力ファイルの& |
< | < | ||
Line 25: | Line 47: | ||
並列計算をするときは常につけておくと安全です。 | 並列計算をするときは常につけておくと安全です。 | ||
+ | (ver.6.3以降はデフォルトでtrueになったのでなくても大丈夫です) | ||