我想计算50000乘50000矩阵的cholesky分解。目前这已实现为
A = chol(A, 'lower');
如您所见,对称矩阵A
被cholesky因子取代。但是,matlab会短暂分配两倍于存储A
所需的数据量。
在桌面系统上,我可以将交换设置为32 GiB。这将解决内存不足错误。在我的HPC集群上,大多数节点提供32GiB内存和4GiB交换。从理论上讲,这已足够,但实际上,matlab执行的不必要的内存分配会导致内存不足错误。
我知道LAPACK例程dpstrf
(也由matlab使用)不需要分配额外的内存。我的问题是:我是否必须在C或fortran中重新实现我的代码,还是有其他解决方案?