我正在对科学应用程序进行一些性能测试,并尝试考虑所有可能影响应用程序性能的元素(如缓存大小层次结构 cpu 速度......缓存线以及任何可能与性能相关的因素)。这个问题出现在我的脑海中,虽然它可能很愚蠢,但我想让它对我很明显。
*问题: *
如果我不对,请纠正我。处理 int 和 float 或 double 值的成本在处理器上是不同的,这是因为使用 CPU 浮点单元(计算浮点值)。现在我想知道用相同的浮点数或双精度值填充两个二维矩阵并将它们相乘或用随机浮点数或双精度值填充它们然后相乘之间是否有区别。剂量编译器对所有元素都具有相同值的矩阵使用缓存?
总共处理处理浮点值,例如(AB),如果 A 和 B 的大小对处理时间(例如乘法)有影响,则 A 和 B 可以是数字大小不同的数字?如果有不同的剂量,重要的是要考虑还是不考虑?. 我可以使用性能计数器库来测量我的应用程序的性能,但是由于使用库的开销,您不能确定指令/触发器变化是针对随机值或其他参数,如 I/Dcache 未命中、缓存大小、问题大小或其他参数。
二手机器intel E4500。编译器 g++ 4.7。
谢谢