私は、BIOSでハイパースレッディングを無効にすると、私のマルチスレッド計算のいくつかが速く実行されることに気付きました。HyperTreadingとProcessorAffinityの変更を無効にしますか?
Iはまた、I、プログラム(論理)CPUを無効にすることができることを学んだ:Sの現在のプロセスのプロセッサアフィニティを変更することによって、例えば、このようなC#で:
// using System.Diagnostics;
var current = Process.GetCurrentProcess();
var affinity = current.ProcessorAffinity.ToInt32();
current.ProcessorAffinity = new IntPtr(affinity & 0x5555);
少なくともパフォーマンスの点からプロセッサアフィニティを変更して2番目(論理)のCPUをすべて無効にすると、ハイパースレッディングを無効にするのと同じ効果が得られますか?
うーん、重要な問題は、あなたのソフトウェアと一緒にあなたの開発マシンを出荷するつもりですか? –
別の考慮事項は、オペレーティング・システム・プロセスかもしれません。 BIOSでハイパースレッディングを無効にし、ソフトウェアがすべてのコアを使用しようとすると、オペレーティングシステム(または他のバックグラウンド)プロセスが実行しようとすると、プロセッサアクセス用のソフトウェアと競合します。ベスト・ベットは、両方のオプションをベンチマークして試してみて、プロセス時間にどのような違いがあるかを確認することです。その違いは、ハイパースレッディングを無効にしないことを容易にするために重要ではないかもしれない。注記:ハードウェア制御がない場合は、ハイパースレッディングのない専用コアを搭載したAMDプロセッサを確認してください。 –
ありがとう、クリス、非常に役に立つ答え。標準的なユーザー環境でオプションのいずれかが真の違いを生むかどうかを確認するために、さらにベンチマークを行います。 –