研究许多小矩阵

时间:2014-03-02 15:20:29

标签: python numpy matrix hdf5 h5py

我目前正在开发许多小型6x6矩阵:形状A =(N,N,N,6,6) N 500 即可。我将这些矩阵存储在Pytables(http://www.pytables.org)的HDF5文件中。

我想对这些矩阵进行一些计算,比如反转,转置,乘法等......这很容易,而 N 不是很大,例如 numpy.linalg。 inv(A)应该在没有循环的情况下完成。但就我而言,它的工作速度非常慢,有时候我会遇到记忆问题。

你能否建议我更有效地做到这一点?

1 个答案:

答案 0 :(得分:0)

6x6矩阵有36个8字节的双精度值,或288个字节;为了便于计算和开销,我们会说0.5KB。如果你接受了,那么其中500个只代表250KB - 内存不多。

如果你将所有这些反转记录在内存中,它仍然不是很多 - 只需500KB。

你可以计算你的程序消耗的RAM量来确认吗?

你在做什么 - 有限元分析?这些刚度,质量和阻尼基质是500个元素吗?

如果是,您不应该反转元素基质。你必须将它们组装成全局基质,这将消耗更多的内存,然后解决它。反向仍然不计算 - LU分解就是通常的方法。

我不认为500元素网格是一个大问题。当我在1995年停止做那种工作时,我看到了数以千万个元素的网格。我确信硬件今天可能会产生更大的问题。

你做错了什么或者你没有提供细节。