爲什麼GPU在數值計算中比CPU更高性能?分支更糟?有人能給我一個詳細的解釋嗎?GPU相對於CPU的性能
回答
GPU中的每個SM都是一個SIMD處理器,在SIMD的每個通道上執行不同的warp線程。一旦應用程序受到更多的計算限制(少量內存訪問)並且沒有分支應用程序實現GPU的峯值FLOPS。這是因爲在分支之後,GPU掩蓋了背離的一方,並首先執行另一方。兩條路徑都是連續執行的,留下一些SIMD通道不活動,從而導致性能下降。
我已經包括從Fung's paper一個有用的圖,其是可公開獲得的在所提到的參考,以顯示性能實際上是如何下降:
圖(a)示出在GPU的一個典型的分支發散翹曲內發生(4-此示例中的線程)。假設你以下內核代碼:
A: // some computation
if(X){
B: // some computation
if(Y){
C: // some computation
}
else{
D: // some computation
}
E: // some computation
}else{
F: // some computation
}
G: // some computation
線程A處發散到B和F.如(b)所示的一些SIMD通道的是隨時間滴下性能禁用。圖(c)到(e)顯示了硬件如何串行執行分支路徑和管理分歧。欲瞭解更多信息,請參閱這本有用的論文,這是一個很好的起點
像計算有界的應用程序,如矩陣乘法或N體仿真很好地映射到GPU並返回非常高的性能。這是因爲他們很好地佔用了SIMD通道,遵循流模式,並且有一些內存訪問。
不確定你在找什麼。假設這是爲了普遍理解爲什麼要這樣做而不是其他方式。本文提供合理理解到您的問題(在外行而言):
https://en.bitcoin.it/wiki/Why_a_GPU_mines_faster_than_a_CPU
簡而言之:
甲CPU核心可以執行每時鐘4的32位指令(使用 128通過AVX(256位)處理8位數據,而像 這樣的GPU,Radeon HD 5970可以在每個時鐘週期執行3200個32位指令(使用其3200個ALU或着色器)。這是800(或AVX情況下的400 )乘以每個時鐘更多指令的差值。截至2011年,最快的CPU擁有多達6,8或12個內核,並且有一個更高的 頻率時鐘(2000-3000 MHz與Radeon HD 5970的725 MHz), ,但是一個HD5970仍然超過五個比2.3GHz的四個12核 處理器要快(這也將讓你回到4700美元左右,而不是HD5970的 350美元)。
GPU是爲特定任務而設計的,即渲染需要大量計算的3D圖形。因此,某些應用程序像「大多數現代瀏覽器」一樣將「數字處理」卸載到GPU上。而對於分支功能,任務由CPU保存(現在,誰知道他們將在後面做什麼),因爲CPU具有更好的「主控」功能。
- 1. iPhone/iPod touch CPU/GPU性能
- 2. CUDA功能相同的CPU和GPU
- 3. 常見算法的GPU與CPU性能
- 4. Intel HD GPU vs Intel CPU性能比較
- 5. TensorFlow:圖形優化(GPU vs CPU性能)
- 6. CUDA - 相同的算法適用於CPU,但不適用於GPU
- 7. 相比CPU性能 - 繼續
- 8. CPU和GPU相同的代碼庫
- 9. 相對於最大CPU頻率的CPU/CPU進程/ CPU週期
- 10. 差異相對於性能
- 11. 現代FPGA相對於CPU和絕對(GFlops/GIops)的性能有多高?
- 12. Mesa3d CPU或GPU?
- 13. cpu vs gpu - CPU好時
- 14. 在GPU和CPU上添加2D陣列的性能
- 15. OpenCV GPU性能
- 16. 硬連線功能和GPU與CPU
- 17. 調用GPU內核後CPU性能下降
- 18. 使用javascript檢測設備CPU/GPU性能?
- 19. Tensorflow:在GPU和CPU
- 20. MPI-2 CPU VS GPU
- 21. CPU和GPU與Theano
- 22. GPU + CPU Tensorflow訓練
- 23. 基於CPU類型的JVM性能
- 24. GPU性能指標
- 25. 拋出錯誤'std :: bad_alloc',OpenCL對於CPU而不是GPU
- 26. TENSORFLOW機器上沒有GPU,不能老是管理對CPU只
- 27. Cassandra CPU性能
- 28. CPU usage_slow性能
- 29. GPU的最佳性能
- 30. CUDA性能相對於每塊
良好的環節和起點 – Stencil