This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
quantumespresso:並列計算 [2020/08/31 16:22] 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を許可していた場合、MPIプロセスあたりのスレッド数は環境変数OMP_NUM_THREADSのものが使われます。 | + | ===== OpenMP ===== |
+ | |||
+ | もしコンパイル時にOpenMPを許可していた場合、スレッド数は環境変数OMP_NUM_THREADSのものが使われます。 | ||
以下のようにして確認できます | 以下のようにして確認できます | ||
< | < | ||
$ echo $OMP_NUM_THREADS | $ echo $OMP_NUM_THREADS | ||
</ | </ | ||
- | OMP_NUM_THREADSの数は1つのCPU当たりのコア数を超えないようにします。 | + | OMP_NUM_THREADSは1つのCPU当たりのコア数を超えないようにします。 |
- | 変更する場合(例えば12スレッドにする場合)は次のようにします | + | 例えば12スレッドのOpenMP並列で実行する場合は次のようにします |
< | < | ||
- | $ OMP_NUM_THREADS=12 | + | $ export |
+ | $ pw.x < case.scf.in > case.scf.out | ||
</ | </ | ||
- | scf計算やbands計算などといった計算ごとに並列数が異なる場合は、& | + | ===== MPI+OpenMPのハイブリッド実行 ===== |
+ | |||
+ | 例えばMPIで2プロセスを生成し、各プロセスで12スレッドのOpenMP並列を行う場合、次のようにします。 | ||
+ | < | ||
+ | $ export OMP_NUM_THREADS=12 | ||
+ | $ mpirun -n 2 pw.x < case.scf.in > case.scf.out | ||
+ | </ | ||
+ | |||
+ | ===== wf_collect ===== | ||
+ | |||
+ | scf計算やbands計算などといった計算ごとに並列数が異なる場合は、入力ファイルの& | ||
< | < | ||
Line 33: | Line 47: | ||
並列計算をするときは常につけておくと安全です。 | 並列計算をするときは常につけておくと安全です。 | ||
+ | (ver.6.3以降はデフォルトでtrueになったのでなくても大丈夫です) | ||