当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 划分两个矩阵时的内存和时间问题

来源:互联网 收集:自由互联 发布时间:2021-06-22
我在matlab中有两个稀疏矩阵 尺寸为9千x180万的M1和尺寸为1.8百万x1.8百万的M2. 现在我需要计算表达式 M1/M2 我花了一个小时.这是正常的吗?在matlab中是否有任何有效的方法,以便我可以克服
我在matlab中有两个稀疏矩阵

尺寸为9千x180万的M1和尺寸为1.8百万x1.8百万的M2.

现在我需要计算表达式

M1/M2

我花了一个小时.这是正常的吗?在matlab中是否有任何有效的方法,以便我可以克服这个时间问题.我的意思是它很多,如果我进行多次迭代,那么它将继续花费1小时.有什么建议吗?

基于假设使用共轭梯度或Kaczmarz方法等迭代方法的快速背包计算,并且插入大小使我相信一小时也不错.

由于三角形被“反转”(如果没有明确地),这两种方法都会在“一些接近统一的标量因子”时间内接近许多指令〜9000倍1.8e6次“迭代次数”收敛所需“.引号中两件事的乘积可能是大约50(最小)到大约1000(最大).我没有选择这些来使你的数学工作,这些是关于我做这些的期望.如果你假设每秒大约1e9条指令(这对于内存访问等没有太大影响),那么大约需要13分钟到大约4.5小时.

因此,对于利用稀疏性的算法来说,它似乎在正确的范围内.

如果你知道结构,可能会更好地利用它,但可能不是很多.

注意,这并不是说13分钟是可以实现的.

编辑:一方面注意,我不确定使用了什么,但我假设迭代方法.也可以使用直接方法(like explained here).如果您正确使用稀疏性,这些方法对稀疏系统非常有效.默认情况下,Matlab很可能会使用它们,但是值得研究Matlab在你的情况下做了什么.

在我有限的经验中,迭代方法通常比直接方法更受欢迎,因为系统的大小变大(你的系统很大).我们的线性系统也是块三对角线,就像它们在图像处理中经常做的那样.

网友评论