我们必须实现一个 ASM 程序,以将坐标方案格式 (COOS) 和压缩行格式 (CSR) 中的稀疏矩阵相乘。现在我们已经实现了所有这些算法,我们想知道与通常的矩阵乘法相比,它们的性能提高了多少。我们已经实现了代码来测量所有这些算法的运行时间,但现在我们决定我们还想知道每秒可以执行多少次浮点运算 (FLOPS)。关于如何测量/计算这个的任何建议?
这里有一些关于所用系统的背景信息:
processor : 0
model name : ARMv7 Processor rev 2 (v7l)
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc08
CPU revision : 2
我们现在的第一个想法是实现一种 FPO 计数器,我们在每次浮点运算(算术运算以及比较和移动运算)之后递增,但这意味着我们必须在整个代码中插入递增运算,这也会减慢关闭应用程序...有谁知道是否有某种硬件计数器可以计算浮点运算的数量,或者是否存在某种性能工具可以用来监视我们的程序并测量 FPO 的数量。任何建议或指示将不胜感激。
这是使用计数方法评估矩阵乘法的 FLOP。我们首先测量了我们感兴趣的每条指令的运行时间,而不是插入的计数器,然后我们计算了每秒浮点操作的数量。