gpt4 book ai didi

不同乘法大小的 Fortran matmul 函数的次数

转载 作者:行者123 更新时间:2023-12-05 01:32:43 24 4
gpt4 key购买 nike

我已经计算了 Fortran 的 MATMUL 函数使用不同乘法大小(32 × 32、64 × 64,...)花费的时间,我对结果有疑问。

这些是结果:

SIZE ----- TIME IN SECONDS
32 ----- 0,000071
64 ----- 0,000032
128 ----- 0,001889
256 ----- 0,010866
512 ----- 0,043
1024 ----- 0,336
2048 ----- 2,878
4096 ----- 51,932
8192 ----- 405,921856

我想时间应该增加 8 倍(m * 2 * n * 2 * k * 2)。我不知道是否应该这样。如果是这样,谁能告诉为什么不是那样?

此外,我们看到乘以 2048 a 的因子增加了 18
4096.谁能告诉我为什么?

我用 Fortran 的 CALL CPU_TIME() 和 Fortran 的 CALL DATE_AND_TIME() 测量了时间,两者都给出了非常相似的结果。

我的处理器是 4 核 AMD Phenom (tm) II X4 945 处理器

最佳答案

@Steve 是对的,影响性能的因素有很多,尤其是当数据量很小的时候。这就是为什么您在 2048 及以下的所有结果几乎都是半随机的,并且基本上无关紧要。全部或大部分数据可能位于 CPU 缓存的几层中。因此刷新 CPU 线程和其他与硬件相关的事件会使这些结果非常不准确。如果您再次运行这些测试,您会发现这些小尺寸的结果不同。

所以,当你从 2048 到 4096 时,你会得到一个重大的飞跃。所有数据不再适合 CPU 缓存。计算机需要将数据块从 RAM 加载到 CPU 缓存中。这解释了时间上的大跳跃。

正是在这些大小和更大的情况下,计算机必须执行更多典型操作(加载数据、执行操作、将数据保存到 RAM),这就是随着数据变得更大而获得的性能。这也是随着数据变大,性能变得非常一致的地方。请注意,从 4096 到 8192 的长度非常接近正好 8 倍。此时,转到 16384 几乎需要 8 乘以 406 秒。

任何小于 4096 的尺寸都不能为您的计算机提供足够的工作来准确测量性能。

关于不同乘法大小的 Fortran matmul 函数的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56824789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com