如题,如何量化一个程序的优化程度是:
1.和原有未优化的程序求加速比?
2.还是和计算机的浮点运算峰值求比?(这个感觉受带宽影响,作为量化标准不太好是不是?版主是怎么认为的?)
选择哪个比较好?请版主解惑。
如题,如何量化一个程序的优化程度是:
1.和原有未优化的程序求加速比?
2.还是和计算机的浮点运算峰值求比?(这个感觉受带宽影响,作为量化标准不太好是不是?版主是怎么认为的?)
选择哪个比较好?请版主解惑。
我建议楼主从这3个点看:
(1)当前的算法是否已经到达了您的大脑所能思考的极限了?
(2)如果1是肯定的,那么当前实现的计算吞吐率(TFlops/s单位)是否已经达到了设备的计算能力极限?
(3)如果1是肯定的,那么每秒实现的显存吞吐率(GB/S单位)是否已经达到了设备的访存能力极限?
建议从这3点。
而不建议“加速比”之类的指标。
LZ您好:
1:“优化程度”这个提法太宽泛了,包含多个内涵:
包括但不限于:
算法优化
算法并行化
使用更适合并行处理的硬件,如GPU
针对硬件优化实现
针对硬件特性修改算法和数据结构
等等
衡量标准并不唯一,也都分别有不同的侧重。
因而建议您在明确您比较意图的前提下,给予充分的说明,然后再阐述您的实现加速情况。
2:峰值运算一般是难以得到的,不仅受到带宽的影响,而且受到实际算法中指令比例的影响等等。因为是为了实际算法设计实现,所以请不要太纠结能否达到理论峰值。
当然在规划算法的时候,要选择理论上适合并行的算法放在GPU上实现,这样比较容易发挥出设备性能,比较有意义。在实现上,保证实现合理的前提下,使得GPU尽可能繁忙,这样一般就已经达到较好的效果。
大致如此,祝您好运~
谢谢版主
谢谢版主