i5 上用於最佳並行處理的最佳執行緒數

i5 上用於最佳並行處理的最佳執行緒數

我有興趣在我的桌上型電腦/筆記型電腦上運行一些相當重量級的處理(還不錯,需要一個集群,但需要一台好的家用機器)。我的問題是要創建多少個執行緒才能最快完成工作(假設應用程式以很少的開銷分配工作負載)。

我通常會為每個處理器建立一個線程,但我想知道Core i5/i7 上的超線程功能是否意味著我實際上應該為每個處理器建立兩個線程(即每個虛擬處理器一個線程)。有人知道嗎?

*顯然,合理的答案是嘗試一下。由於運行大約需要 12 個小時,我希望第一次就能正確運行,但如果我有機會同時運行它,我會很樂意發布結果。

答案1

這是一個開放式問題,需要昂貴的基準測試。我個人看到它是雙向的。除非你真的搞砸了你的多線程,否則差異大約是+-10%,所以兩種方法都值得嘗試。即使需要很長時間。

許多由英特爾元件建構的高效能運算叢集都禁用了 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 折疊的經驗來討論,每個核心(無論是虛擬的還是物理的)單一線程是最好的。

話雖如此,讓單一核心自由地處理後台進程和一般電腦任務可能是個好主意,因為即使是一點點使用也會使任務崩潰。

如果您想追蹤事物的運行位置,請查看 CPU 關聯性。作為一般規則,分配給物理核心優先(IE:甚至編號),然後是超線程核心。

相關內容