稀疏矩阵乘法执行时间

时间:2012-02-02 11:15:22

标签: java sparse-matrix

我正在研究来自JGF基准的java版稀疏矩阵乘法程序。我在很多种cpu频率下运行这个程序。我也为这个程序做了一些简介。我把它归类为内存密集型程序,因为缓存局部性很差并且内存访问量很大。与较快频率相比,以较慢频率运行的这种程序的执行时间应略微减少,因为它会浪费停顿中的cpu周期。但是这个程序的执行时间与我实验中的cpu频率成正比。原因何在?

矩阵(数组)的维数是500000,这个程序在i7-920中运行,它有三层缓存。 每个内核有32KB L1数据2KB,L1指令,每个核心L2 256KB和L3 8MB共享缓存。

我还通过perf获得了执行统计信息:

'java -cp的性能计数器统计信息。 JGFSparseMatmultBenchSizeC':

  83925.084119 task-clock-msecs         #      1.001 CPUs
         2,045 context-switches         #      0.000 M/sec
            28 CPU-migrations           #      0.000 M/sec
        29,687 page-faults              #      0.000 M/sec
223,130,573,396 cycles                  #   2658.688 M/sec  (scaled from 66.68%)
66,679,432,987 instructions             #      0.299 IPC    (scaled from 83.33%)
12,779,607,690 branches                 #    152.274 M/sec  (scaled from 83.32%)
    11,389,605 branch-misses            #      0.089 %      (scaled from 83.32%)
11,056,332,293 cache-references         #    131.740 M/sec  (scaled from 83.34%)
 3,847,329,243 cache-misses             #     45.842 M/sec  (scaled from 83.35%)

   83.816412311  seconds time elapsed

1 个答案:

答案 0 :(得分:0)

表示值接近0的整数对象可以由JVM缓存以节省内存 - 也许这可能在其中起一定作用。