ハイパースレッディング対応のマルチコアプロセッサがどのように機能するかをよりよく理解しようとしています。MPI、OpenMP、またはMPI+OpenMPでコンパイルできるアプリがあるとします。4つのXeonX7560@ 2.27GHzプロセッサを搭載し、各プロセッサコアでハイパースレッディングが有効になっているCentOS5.3ボックスでどのようにスケジュールされるのでしょうか。
プロセッサには、/ proc/cpuinfoで0から63までの番号が付けられています。私の理解では、4つの8コア物理プロセッサがあり、物理コアの合計は32であり、各プロセッサコアではハイパースレッディングが有効になっており、論理プロセッサの合計は64です。
MPICH2でコンパイルmpirun-np16で実行した場合、いくつの物理コアが使用されますか?利用可能な16個のPHYSICALコアまたは16個のLOGICALプロセッサ(ハイパースレッディングを使用する8個のPHYSICALコア)に分割されますか?
OpenMPでコンパイルOMP_NUM_THREADS=16を設定した場合、いくつの物理コアが使用されますか?16個のLOGICALプロセッサを使用しますか?
MPICH2 +OpenMPでコンパイルOMP_NUM_THREADS=16を設定し、mpirun -np 16で実行した場合、使用される物理コアの数はいくつですか?
OpenMPIでコンパイル
OpenMPIには2つのランタイムオプションがあります
-cpu-ジョブに割り当てられた論理CPUを指定するset、-cpu-per-procは、各プロセスに使用するCPUの数を指定します。
mpirun -np 16 -cpu-set 0-15で実行した場合、8つの物理コアのみを使用しますか?
mpirun -np 16 -cpu-set 0-31 -cpu-per-proc 2で実行した場合、どのようにスケジュールされますか?
ありがとう
ジェリー