ハイパー スレッディング サポートによる物理プロセッサ/コアの数の検出
最大の効率を目指すマルチスレッド アプリケーションでは、物理プロセッサまたはコアの数は非常に重要です。過剰なスレッドを作成すると、特にハイパー スレッディングがサポートされているシナリオでパフォーマンスが低下する可能性があります。
ハイパー スレッディングの検出
物理プロセッサの数を正確に判断するには、次のことが必要です。ハイパースレッディングがサポートされ有効になっているかどうかを検出します。その方法は次のとおりです:
物理コア数の決定
ハイパー スレッディングのサポートが検出されたら、次の手順に従います。物理コアの数を決定するには:
実装例
次の C プログラムは、ハイパースレッドと物理コアの数:
<code class="cpp">#include <iostream> #include <string> using namespace std; void cpuID(unsigned i, unsigned regs[4]) { #ifdef _WIN32 __cpuid((int *)regs, (int)i); #else asm volatile ("cpuid" : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3]) : "a" (i), "c" (0)); #endif } int main(int argc, char *argv[]) { unsigned regs[4]; // ... (Code for vendor detection, feature check, and logical core count) // Hyper-Threading detection bool hyperThreads = cpuFeatures & (1 << 28) && cores < logical; // ... (Code for physical core count based on vendor) cout << "hyper-threads: " << (hyperThreads ? "true" : "false") << endl; return 0; }</code>
結論
これらの手順に従うことで、ハイパーを考慮しながら物理プロセッサ/コアの数を正確に検出できます。 - スレッド化のサポート。この情報は、マルチスレッド アプリケーションのパフォーマンスを最適化するために非常に貴重です。
以上がハイパースレッディングの存在を考慮して、システム内の物理コアの数を正確に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。