i5 で最適な並列処理に使用するスレッドの最適数

i5 で最適な並列処理に使用するスレッドの最適数

デスクトップ/ラップトップで、ある程度の負荷のかかる処理を実行することに興味があります (クラスターを必要とするほどではありませんが、優れた家庭用マシンが必要です)。私の質問は、ジョブを最も速く完了するには、いくつのスレッドを作成すればよいかということです (アプリケーションがオーバーヘッドをほとんどかけずにワークロードを分散すると仮定します)。

通常はプロセッサごとに 1 つのスレッドを作成しますが、Core i5/i7 のハイパースレッディング機能では、実際にはプロセッサごとに 2 つのスレッド (つまり、仮想プロセッサごとに 1 つのスレッド) を作成する必要があるのではないかと思います。どなたかご存知ですか?

*当然ながら、試してみて確認するのが妥当な答えでしょう。実行には約 12 時間かかるため、最初から正しく実行できればよいのですが、両方の方法で実行する機会があれば、喜んで結果を投稿します。

答え1

これは、コストのかかるベンチマークを必要とするオープンエンドの質問です。私は個人的に、両方の方法でそれが起こったのを見てきました。マルチスレッドを本当に台無しにしない限り、違いは約 +-10% なので、両方の方法で試してみる価値はあります。たとえ長い時間がかかっても。

Intel コンポーネントから構築された多くのハイパフォーマンス コンピューティング クラスターでは、HT が無効になっています。これには理由があります。これらのコードはハードウェアを飽和させる傾向があり、そのためパフォーマンスはメモリ アクセスの飽和に大きく左右されるからです。HT の場合、スレッドが計算され、オンとオフが切り替わるため、パフォーマンスはさらに悪くなります。http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/

しかし、コードが高度に調整されていない場合は、ほぼ同じパフォーマンスの向上を体験できない可能性があります。http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/

ここに画像の説明を入力してください

単一 CPU コンピューティングの場合、ハイパースレッディングを無効にすると、一部のソフトウェアのパフォーマンスが 1% 向上しますが、他のソフトウェアのパフォーマンスは大幅に低下します。おそらく、約 10% 低下します。

つまり、ベンチマークで特に指示がない限り、デスクトップ マシンのハイパースレッド/実際のコアごとに 1 つのスレッドを作成する必要があります。

答え2

ここで私が言っているのは、完全に F@H フォールディングの経験に基づくもので、コアごとに 1 つのスレッド (仮想または物理) が最適だということです。

そうは言っても、少しでも使用するとタスクが停止する可能性があるため、バックグラウンド プロセスや一般的なコンピューター タスクを処理するために 1 つのコアを空けておくのが得策かもしれません。

どこで実行されているかを把握したい場合は、CPUアフィニティを調べてください。一般的なルールとして、物理コアを優先(例:次に、ハイパースレッド コアです。

関連情報