c++ - 哪种线性方程算法通常比 LAPACK 需要更少的内存?我可以在 R 或 RcppArmadillo 中使用它吗?
问题描述
我正在尝试求解一个线性系统,R 中的 Ax = b。A 是 111779 x 111779 稀疏矩阵或“dgCMatrix”,包含 10^11 个元素。b 是一个 111779 x 1 的密集矩阵。我使用了一个强大的 AWS ec2 实例来计算这个。
首先,我在 R 中使用了solve(),但它返回“问题太大”。然后我使用了函数 SparseM::solve() 但由于内存不足仍然无法得到结果。最后我使用了 RcppArmadillo::spsolve( , ,"lapacks"),意思是“稀疏矩阵求解”和 LAPACK 算法。它返回“SpMat::init():请求的大小太大”。
rcpp_inc <- '
using namespace Rcpp;
using namespace arma;
'
src <- '
mat Y0 = as<mat>(Y);
sp_mat X0 = as<sp_mat>(X);
mat out = spsolve(X0, Y0,"lapacks");
return(wrap(out));
'
fn <- cxxfunction(signature(Y="Matrix", X="Matrix"), src,
plugin='RcppArmadillo', rcpp_inc)
res <- fn(b, A)
实际上,当 A 较小时,该函数运行良好。如果我不能使用更多内存,是否可以解方程?我应该使用什么样的软件或算法?
解决方案
推荐阅读
- php - 将一百条记录写入文件
- selenium-chromedriver - 获取 ChromeDriver 安装失败“未找到中央目录记录签名的结尾”
- java - java.sql.SQLNonTransientException: [Amazon][JDBC](10900) 并非所有参数都已填充
- javascript - 为 React 应用程序配置 Firebase - 未定义的配置
- javascript - 如何处理 promise 和箭头函数返回响应
- spring - 如何使用 bean 方法名称注入依赖项?
- haskell - 元组+自定义数据类型理解列表
- python - Heroku 上的 Django 连接到 Azure 数据库
- python - 如何在 Python 中创建这个矩阵?
- excel - ODBC 连接在网络上失败,但在不在网络上的计算机上工作正常