MATLAB如何分配内存,解决大型线性系统(10 m-ish) ?

1视图(30天)
我试图解决的稀疏线性方程组(Ax = b)与1 - 10的范围的变量数量。固体力学的一个基本的有限元仿真问题,稀疏和对称矩阵(a),矩阵和稀疏的右边(b)。是这样的条目总数的0.01%非零。我使用“\”操作符。
MATLAB可以解决2.3变量问题我个人的笔记本电脑(R2021b、窗户、16 gb的RAM, i7 - 7700 2.8 GHz)在大约6个小时。
我访问(Linux)集群有一个良好的处理器数量,我可以请求任何数量的内存(使用PBS)。然而,当我试着运行相同的代码,使用5 m变量(细孔网),300 GB的内存分配,工作辞职在线性解决方案步骤,内存错误。
我需要知道我做错了什么,和我如何解决这个问题。16 GB 300 GB的,没有关系。有内存设置MATLAB使用Linux和windows的不同吗?我认为MATLAB暂时使用我的硬盘存储数据解决方案过程中,并与Linux可能并非如此。如果是这样的话,我怎么上的开关,设置在我的代码。
我也欢迎建议我可以用不同的连接器或方法来解决这些问题。让我知道如果你们需要其他的信息我,抱歉如果这已经回答了,就告诉我。
谢谢你的时间!

接受的答案

马特·J
马特·J 2022年10月17日
编辑:马特·J 2022年10月17日
5米变量和密度为0.01%,矩阵会消耗大约56 gb mldivide之前开始做任何工作。
(5 e6) ^ 2 * 0.01/100 * 8 * 3/2 ^ 30
ans = 55.8794
你应该检查 内存 命令有多少内存可用Matlab系统上(它不会总300 gb的可用系统作为一个整体)。然而,这似乎不合理,mldivide()可以使用另一个至少100 GB,我可以想象,超过,Matlab的内存数量。
对于这么大的一个问题,你应该使用一个迭代解算器,等等 pcg ,而不是 mldivide ()
16条评论

登录置评。

更多的答案(0)

类别

找到更多的在数学帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的