因此,当我尝试声明大于10000x10000的矩阵时,我发现Eigen包崩溃了。我需要像这样声明一个矩阵..可靠地约有13000x13000个元素。我进行了如下测试:

for( int tortureEigen = 1 ; tortureEigen < 50000 ; tortureEigen++ )
{
  printf( "Torturing Eigen with %dx%d..\n", tortureEigen, tortureEigen ) ;
  Eigen::MatrixXd m( tortureEigen, tortureEigen ) ;
}

14008个元素在我的计算机上崩溃(6 GB RAM)。

我有点失望!我以为Eigen就像MATLAB或octave一样,即使使用磁盘阵列也不会崩溃,使用大数组也不应该崩溃。

而且更重要的是,当我运行此测试并保持TaskMan打开时,创建这些矩阵的过程甚至没有使用太多的内存。 TaskMan报告使用率低于2k。

使用Eigen 2.0.15稳定发布

最佳答案

特征开发人员在这里。您最好在我们的支持 channel 上询问Eigen问题,例如论坛... ;-)

简短答案:您使用的是固定尺寸还是动态尺寸的矩阵?

  • 如果为固定大小,则切换为动态大小(对于如此大的大小,无论如何,这都是理所当然的)
  • 如果您遇到了带有动态尺寸矩阵的错误,我很惊讶,但同时我也可以看到值10000的来源。无论如何,如果升级到eigen3(开发分支),您的问题将消失。
  • 07-24 14:28