分析程式是計算密集(compute intensive)還是訪存密集(memory intensive)
1)算出機器的單核峰值效能
主頻*simd寬度*2(如果存在乘加指令), cpupeak
2)測出機器峰值頻寬
用streaming測出實際頻寬峰值,但是該峰值是所有處理器核的總和,需要除以實際物理核數(超執行緒不算),算出峰值頻寬,mempeak
3)分析演算法的計算訪存比
加減乘除都算一次操作(連續的乘加操作算一次);單次訪存算一次操作(如果會用到非連續資料,那麼要按cacheline長度算,因為機器實際會按照cache line讀取資料);
flop/bytes
4)結論:
if cpupeak/mempeak > flop/byptes, then 訪存密集
else 計算密集
計算密集型和IO密集型
什麼是計算密集型 計算密集型就是計算 邏輯判斷量非常大而且集中的型別,因為主要占用cpu資源所以又叫cpu密集型,而且當計算任務數等於cpu核心數的時候,是cpu執行效率最高的時候。特點 消耗cpu 什麼是io密集型 io密集型就是磁碟的讀取資料和輸出資料非常大的時候就是屬於io密集型 由於io操作...
IO密集型和計算密集型
乙個計算為主的程式 專業一點稱為cpu密集型程式 多執行緒跑的時候,可以充分利用起所有的cpu核心,比如說4個核心的cpu,開4個執行緒的時候,可以同時跑4個執行緒的運算任務,此時是最大效率。但是如果執行緒遠遠超出cpu核心數量 反而會使得任務效率下降,因為頻繁的切換執行緒也是要消耗時間的。因此對於...
CPU計算密集型和IO密集型
cpu計算密集型和io密集型 計算密集型任務由於主要消耗cpu資源,因此,執行效率至關重要。python這樣的指令碼語言執行效率很低,完全不適合計算密集型任務。對於計算密集型任務,最好用c語言編寫。第二種任務的型別是io密集型,涉及到網路 磁碟io的任務都是io密集型任務,這類任務的特點是cpu消耗...