私は、68コアと4ハイパースレッド/コアを持つKnights Landingノードでプログラミングしています。私はハイブリッドMPI/OpenMPアプリケーションに取り組んでいます。 私の質問は、4つのハイパースレッドがOpenMP スレッドとして使用されることを意図している場合、またはそれらをどのように使用できますか?Knights Landingで利用可能なスレッド
export OMP_NUM_THREADS=4
mpirun -np 68 ./app
たぶん、問題は特定のMPI用のスレッドがないということである。
export OMP_NUM_THREADS=1
mpirun -np 68 ./app
それははるかに速く、私はスキームを使用する場合よりも実行されます。私は 次のスキームを使用して私のプログラムを実行すると、それぞれ に近い。しかし、私はそれを行う方法を知らない。
要約すると、4つのハイパースレッド/コアをOpenMPスレッドとして使用できますか?
ありがとうございました。
大部分のアプリケーションでは、各コアでMPIランクを実行している間に非常に多くのスレッドを実行することはありません。インテルMPIのデフォルトはスレッドをローカルに配置することですが、OpenMPが2つまたは4つのコアを使用して単一のMPIランクにゲインを表示してから、ランクとスレッド数の組み合わせを試してみること。 – tim18
アフィニティの設定方法の詳細はMPIの実装によって異なりますが、KNLを対象とするMPIにはその機能が含まれている必要があります。 – tim18
私は、コアごとに1つ以上のスレッドを使用するアプリケーションが、すべてのコアが使用される前に効果的にピークアウトするかどうかについて、knlの十分な経験はありませんでした。 kncでは、mpiはコアビジーメッセージを保持し、別のOSとmpiを実行している可能性があります。 – tim18