基准测试SpMV C代码



我被分配报告SpMV算法的测试结果,这是我以前从未做过的事情。

我来问:

  • 我应该使用什么程序来对代码进行基准测试,是否有一个生成图形?
  • 除了最大值外,我还应该测试哪些尺寸?是否存在大小会使缓存不规范并产生不同结果的情况,即使大小差异为1?(512x512和513x513或1023x1023和1024x1024的时间不同)
  • 我可以使用time.h库,但它是执行时间表。矩阵足够大吗?

I'm on Windows.

谢谢:)

可能有些大小在您的机器上运行得特别好,但是很难预测是哪种大小。这就是为什么你应该测试很多不同的大小,也就是说,最好在你的代码中进行循环,并将结果输出到一个文件并绘制它(执行时间与大小)。

对于每个大小,您应该执行SpMV函数几次并从中计算平均时间,因为将矩阵和向量从内存加载到缓存中需要时间。一旦他们已经在那里,执行可能会快得多。

对于时间测量,你可以使用

#include <sys/time.h>    
void tic(){ gettimeofday( &start, NULL);}
void toc(){ gettimeofday( &stop, NULL);}
double diff(){ return (stop.tv_sec - start.tv_sec) + 1e-6*(stop.tv_usec - start.tv_usec);}
windows上有针对c代码的分析器,但它们需要一些时间来学习。(我自己在linux上工作,所以我不能推荐一个特定的)

相关内容

  • 没有找到相关文章

最新更新