矩阵乘法的实时运行时间计算


只怕再见是故人
2025-03-15 05:27:28 (15天前)

我想计算一下矩阵乘法问题的运行时间。以下是我的假设:

没有并行编程
2 GHz的CPU
大小为n的方阵
O(n ^ 3)算法
例如,假设n =1000。因此,我期望在多少时间(大约)上乘以该矩阵的平方将采用上述假设。谢谢。

2 条回复
  1. 1# 春风助手 | 2020-08-12 09-23

    这确实非常取决于算法和CPU。即使没有并行化,在CPU上表示相同步骤的方式也有很多自由度,并且同一系列的不同CPU之间的差异(各种操作所需的时钟周期)也是如此。也不要忘记,现代CPU自己添加了一些指令并行化。编译器完成的优化将对内存顺序和分支的重新排序有所不同,并且即使您未指定指令,也可能会将指令转换为向量化指令。取决于其他因素,它也可能有所不同,您的矩阵是在内存中的固定位置还是通过指针访问它们,以及它们是按固定大小分配还是动态分配每行/每列。不要忘记内存缓存,

    如果这是出于您自己的粗略估计或“典型”情况,那么您只需编写程序,在特定条件下运行该程序(如上所述),重复执行n = 1000,然后进行计算,就不会做错什么平均。

    如果您想付出更多努力才能取得更好的结果,那么您实际上可以自己完成最初的问题中可能要做的事情:

    查看您的特定编译器在特定条件下和特定优化设置下为特定算法生成的指令(如此处)
    选择特定的处理器,并为其中的每条指令找到其延迟表,
    每次迭代将它们相加并乘以1000 ^ 3,
    除以时钟频率。
    认真地讲,不值得付出任何努力,无论如何基准测试都是更快,更清晰和更精确的(因为这不能说明分支预测器,超线程和内存缓存以及其他体系结构细节中发生的情况)。如果您想做运动,我会留给您。

登录 后才能参与评论