python中多个矩阵的快速后续乘法

2024-05-14 19:54:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须通过许多其他矩阵的有序乘法生成一个矩阵(物理学中的传播子)。每个矩阵的大小约为(30,30),所有实项目(浮动),但不是对称的。要相乘的矩阵数在1e3到1e5之间变化。每个矩阵与前面的矩阵只是略有不同,但它们不是可交换的(最后我需要所有这些非可交换乘法的乘积)。每个矩阵都有特定的时间片,所以我知道如何独立地生成每个矩阵,无论它们在乘法序列中的什么位置。最后,我必须生成许多这样的矩阵传播子,因此任何性能增强都是受欢迎的

python中实现这种矩阵乘法最快的算法是什么

尤其是—

  • 如何构建它?有快轴等吗?矩阵行/列的首选尺寸
  • 假设内存不是问题,是在乘法之前分配和构建所有矩阵,还是在每个时间步生成每个矩阵?在乘法之前将每个矩阵存储在专用变量中,或者在需要时生成并直接乘法
  • 生成矩阵时函数调用开销的累积影响
  • 正如我所知道的,如何构建它们,是否应该将它们并行化?例如,可以从序列的开始和结束创建批处理序列,将它们并行相乘,然后在结束时以适当的顺序相乘结果
  • 是否最好使用numpy以外的模块?Numba会有用吗?或者其他一些有效的方法就地编译到C,或者使用优化的外部库?(如果有,请提供参考,我没有这方面的经验)

提前谢谢


Tags: 项目内存算法顺序尺寸时间序列矩阵
1条回答
网友
1楼 · 发布于 2024-05-14 19:54:05

我认为矩阵乘法不会花很多时间。所以,我会在一个循环中完成。组装可能是这里成本最高的部分

如果你有更大的矩阵,一个map-reduce方法可能会有帮助。(拆分矩阵集,对每个矩阵集应用矩阵乘法,并对生成的矩阵执行相同操作)

Numpy对于这样的问题是非常好的,因为它是非常优化的。(部分为C)

只需测试矩阵乘法需要多少时间,组装需要多少时间。结果应该指出您需要优化的地方

相关问题 更多 >

    热门问题