User Tools

Site Tools


quantumespresso:並列計算

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
quantumespresso:並列計算 [2020/03/09 20:38]
koudai
quantumespresso:並列計算 [2021/06/27 22:04] (current)
Line 1: Line 1:
 +====== 概要 ======
 +
 +  * マルチコアCPUを搭載したパソコンでの、QuantumESPRESSOの並列計算の方法です。
 +
 +
 +====== 手順 ======
 +
 +===== MPI =====
 +
 MPIを使って並列化計算をしたい場合は、次のように実行します。 MPIを使って並列化計算をしたい場合は、次のように実行します。
  
 <code> <code>
-$ mpirun -2 pw.x < case.scf.in > case.scf.out+$ mpirun -np 2 pw.x < case.scf.in > case.scf.out
 </code> </code>
  
-2はMPIプロセスの数です。 使用しているCPUの最大スレッド数を超えない値定します+-npによりMPIプロセスの数を定します
  
-もしコンパイル時にOpenMPを許可していた場合、MPIプロセスあたりのスレッド数がCPUあたりスレッド数と同じになるように設定されます(出力ファイル最初の方に、どれだけのコアを使かが出力されます。 +===== OpenMP ===== 
-ですので、プロセス数はコンピュータCPU数と一致させます。+ 
 +もしコンパイル時にOpenMPを許可していた場合、スレッド数は環境変数OMP_NUM_THREADSのもの使われます。 
 +以下のようにして確認できます 
 +<code> 
 +$ echo $OMP_NUM_THREADS 
 +</code> 
 +OMP_NUM_THREADSは1つCPU当たりのコア超えないよにします。 
 +例えば12スレッドのOpenMP並列実行る場合は次ようにします 
 +<code> 
 +$ export OMP_NUM_THREADS=12 
 +$ pw.x < case.scf.in > case.scf.out 
 +</code> 
 + 
 +===== MPI+OpenMPのハイブリッド実行 ===== 
 + 
 +例えばMPI2プロセスを生成しプロセスで12スレッドOpenMP並列を行う場合、次ようにします。 
 +<code> 
 +$ export OMP_NUM_THREADS=12 
 +$ mpirun -n 2 pw.x < case.scf.in > case.scf.out 
 +</code>
  
-同時に複数の計算をする場合は、合計がCPUの最大スレッド数を超えないようにします。 +===== wf_collect =====
-(超えても一応は動きますが、計算が極端に遅くなります)+
  
-scf計算やbands計算などといった計算ごとに並列数が異なる場合は、&controlに次のオプションを追加します。+scf計算やbands計算などといった計算ごとに並列数が異なる場合は、入力ファイルの&controlに次のオプションを追加します。
  
 <file> <file>
Line 20: Line 47:
  
 並列計算をするときは常につけておくと安全です。 並列計算をするときは常につけておくと安全です。
 +(ver.6.3以降はデフォルトでtrueになったのでなくても大丈夫です)
  
quantumespresso/並列計算.1583753895.txt.gz · Last modified: 2021/06/27 22:00 (external edit)