Eigen,获取反向失败,反向()太慢了
我想得到逆矩阵,下面是代码:Eigen,获取反向失败,反向()太慢了,eigen,Eigen,我想得到逆矩阵,下面是代码: if (m.rows() == m.fullPivLu().rank()) { res = m.inverse(); } m和res的尺寸都是5000乘以5000。当我在一台高性能计算机器Linux,超级计算机上运行代码时,这个过程在res=m.inverse时被终止;,并且没有生成核心文件或转储信息。控制台返回被终止,进程退出 但是我的Ubuntu笔记本电脑没有问题 而且,反向器的性能很差,而且花费了很多时间 那么,为什么在这台高性能机器上杀死了inve
if (m.rows() == m.fullPivLu().rank())
{
res = m.inverse();
}
m和res的尺寸都是5000乘以5000。当我在一台高性能计算机器Linux,超级计算机上运行代码时,这个过程在res=m.inverse时被终止;,并且没有生成核心文件或转储信息。控制台返回被终止,进程退出
但是我的Ubuntu笔记本电脑没有问题
而且,反向器的性能很差,而且花费了很多时间
那么,为什么在这台高性能机器上杀死了inverse?谢谢大家! 众所周知,全旋转LU非常慢,无论其实现如何 更好地使用PartialPivLU,这得益于高性能矩阵运算。然后,为了充分利用Egen,请使用3.3-beta2版本并使用FMA-mfma和OpenMP进行编译,例如,-fopenmp支持,并且不要忘记启用编译器优化-O3。此操作不应超过几秒钟 最后,您真的需要显式地计算逆吗?如果只将其应用于某些向量或矩阵,即A^-1*B或B*A^-1,则最好以分解形式应用逆,而不是显式计算逆。对于Eigen 3.3:
MatrixXd A = ...;
PartialPivLU<MatrixXd> lu(A);
x = lu.inverse() * b; // solve Ax=b, same as x = lu.solve(b);
x = b * lu.inverse(); // solve xA=b
在这些表达式中,未显式计算逆 众所周知,全旋转LU非常慢,无论其实现如何 更好地使用PartialPivLU,这得益于高性能矩阵运算。然后,为了充分利用Egen,请使用3.3-beta2版本并使用FMA-mfma和OpenMP进行编译,例如,-fopenmp支持,并且不要忘记启用编译器优化-O3。此操作不应超过几秒钟 最后,您真的需要显式地计算逆吗?如果只将其应用于某些向量或矩阵,即A^-1*B或B*A^-1,则最好以分解形式应用逆,而不是显式计算逆。对于Eigen 3.3:
MatrixXd A = ...;
PartialPivLU<MatrixXd> lu(A);
x = lu.inverse() * b; // solve Ax=b, same as x = lu.solve(b);
x = b * lu.inverse(); // solve xA=b
在这些表达式中,未显式计算逆 你有什么样的表演?你在期待什么?别忘了,反转在^3上。你从一台我们大多数人都无法访问的计算机上得到了什么样的信息/转储/东西?@AviGinsburg,得到相反的信息时速度非常慢。没有生成核心文件或转储信息。控制台返回被终止,进程退出。您的性能如何?你在期待什么?别忘了,反转在^3上。你从一台我们大多数人都无法访问的计算机上得到了什么样的信息/转储/东西?@AviGinsburg,得到相反的信息时速度非常慢。没有生成核心文件或转储信息。控制台返回被终止,进程退出。谢谢你,ggael。我需要得到矩阵的逆。你能发布关于Eigen编译优化的文档吗?谢谢你,ggael。我需要得到矩阵的逆。你能发布关于Eigen编译优化的文档吗?