使用Fortran代码

时间:2018-01-24 12:36:25

标签: performance matrix fortran cpu-cache

我有一个Fortran代码来测试我的计算机的Cache内存。该代码基本上比较了计算大小为N×N的3个矩阵A,B和C之和所需的时间。给出N作为输入,矩阵的所有元素都是1.0。 总和由列和行组成,以比较Gflops(请记住,在Fortran中,内存按列而不是按行加载矩阵,因此:A(1,1),A(2,1),A( 3,1)......)。 for循环重复几次,以计算总和的平均时间。总和存储在相同的矩阵A中,因此A=A+B+C。 我的缓存内存的特征是:

hw.l3cachesize: 3145728
hw.l2cachesize: 262144
hw.l1dcachesize: 32768
hw.l1icachesize: 32768
hw.cachelinesize: 64

由于矩阵的元素是real * 8类型,我期望在超出缓存L1大小时发现Gflops减少。 实际上我也想知道我是否应该期望32 kB或64 kB的变化,因为L1i是32 kB而L1d也是32 kB。 为此,我假设以字节为单位存储在缓存中的大小为3*N*N*8(每个元素3个矩阵和8个字节)。

当我查看结果时,我无法在Gflops中识别出此更改。

0 个答案:

没有答案