【问题标题】:Benchmarking SpMV C Code基准化 SpMV C 代码
【发布时间】:2014-08-01 10:40:56
【问题描述】:

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

我是来问的:

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

我在 Windows 上。

谢谢:)

【问题讨论】:

    标签: c codeblocks benchmarking sparse-matrix


    【解决方案1】:

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

    对于您拥有的每个大小,您应该多次执行 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上工作,所以我不能推荐一个特定的)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多