7

BIOSでハイパースレッディングを無効にすると、マルチスレッド計算のいくつかがより高速に実行されることに気付きました。

また、現在のプロセスのプロセッサアフィニティを変更することで、(論理)CPUをプログラムで無効にできることも学びました。たとえば、C#では次のようになります。

// using System.Diagnostics;
var current = Process.GetCurrentProcess();
var affinity = current.ProcessorAffinity.ToInt32();
current.ProcessorAffinity = new IntPtr(affinity & 0x5555);

少なくともパフォーマンスの観点から、プロセッサアフィニティを変更して毎秒(論理)CPUを無効にすると、ハイパースレッディングを完全に無効にするのと同じ効果がありますか?

4

1 に答える 1

2

NUMA API を利用してみるか、CPUID 命令を使用して CPU トポロジを手動で検出することができます。特定のハードウェア ターゲットがない限り、論理コアと物理コア、ハイパー スレッディングの有無、シングル ソケット システムとマルチ ソケット システム、キャッシュとメモリのトポロジなど、かなりの量のシナリオを処理できます。

于 2012-06-07T14:10:05.603 に答える