分析程序是计算密集(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 计算密集
参考资料:Roofline算法