一些多線程代碼我剛寫似乎在超線程CPU運行速度較慢 - 即禁用超線程使得它運行得更快。這是正常的嗎?超線程使我的代碼運行速度變慢了嗎?
1
A
回答
0
這完全取決於使用情況。像正常這樣的主觀術語有很大的餘地!有超線程(HT)有用的用例,以及會對性能產生影響的情況。性能降低的
這樣一個案例是爲應用程序大量使用的AVX指令。 AVX指令在矢量處理單元(VPU)中執行,其中每個內核在Intel Xeon處理器中都有一個。嘗試訪問VPU時,其他線程會阻止,如果不可用,導致使用HT時性能不會提高。如果你有4個HT的內核,允許你運行8個線程,你實際上一次只能運行4個VPU指令 - 所以你的其他4個線程在完成時會被阻塞。阻塞和調度的額外開銷通常會使您的吞吐量低於在4個內核上運行4個線程的情況,並禁用HT。
同樣,在8個核上運行的僅有4線程,OS調度器可以在線程上的任何物理內核上運行 - 所以有可能仍然是一個機會,在那裏等待另一個一個線程塊來完成。一些較新的應用程序和作業調度程序現在可以與OS協調以在物理內核上「固定」線程,從而允許HT被啓用,但不會超額訂購正在覈心上運行的線程數量。隨着時間的推移,這可能會變得更好,但確實需要開發者的意識。
更多一般用途的情況下,像普通的服務器處理許多類型的工作負載,HT的優勢,在一個單一的核心,通常可以提高性能運行額外的線程。
相關問題
- 1. NEON ASM代碼運行速度比C代碼慢嗎?
- 2. 運行速度很慢的VBA代碼
- 3. 註釋是否會使代碼運行速度變慢?
- 4. openmp fortran代碼比串行代碼運行速度慢
- 5. Python:Joblib中的並行處理使代碼運行速度更慢
- 6. 爲什麼我的java awt代碼運行速度很慢?
- 7. 由於線程數增加,SQL Server運行速度變慢
- 8. C++線程應用程序比非線程運行速度慢
- 9. 多線程程序運行速度慢於單線程
- 10. 使用多線程時程序運行速度較慢
- 11. 爲什麼我的android應用程序運行速度變慢?
- 12. HTMLUnit:執行速度超慢?
- 13. 經過多次迭代後,VBA代碼的執行速度變慢了
- 14. 爲什麼我的代碼在Java中使用多線程的速度較慢?
- 15. 爲什麼我的python多進程代碼運行速度很慢?
- 16. 使用proguard會使android應用程序運行速度變慢嗎?
- 17. 有序並行代碼運行速度比單線程慢。有解決方案嗎?
- 18. R代碼運行速度太慢,如何加速和重寫此代碼
- 19. 爲什麼設置CPU親和力會使線程運行速度變慢?
- 20. OpenMP並行化代碼運行速度較慢
- 21. C++多線程執行速度減慢
- 22. 如何加快這個代碼的運行速度,但速度很慢?
- 23. 我不明白爲什麼我的C++代碼運行速度很慢
- 24. Google App Engine中的代碼運行速度極其緩慢
- 25. 靜態構造函數中的代碼運行速度較慢
- 26. JMeter運行速度很慢
- 27. TortoiseSVN運行速度很慢
- 28. CURAND運行速度較慢
- 29. CoreNLP運行速度太慢
- 30. 在ARC下,我的代碼變慢了,這是正常的嗎?
你能分享此相關的代碼? – Antimony