32位应用的特征最大矩阵大小

bob*_*obo 3 c++ matrix eigen

所以,当我尝试声明一个大于10000x10000的矩阵时,我发现Eigen包崩溃了.我需要声明一个这样的矩阵..可靠地约13000x13000个元素.我跑了一个测试:

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

在我的机器(6 GB RAM)上以14008个元素崩溃.

我有点失望!我认为Eigen就像MATLAB或octave,不应该使用更大的数组崩溃,即使它确实击中了磁盘或其他东西.

而且当我运行此测试并保持TaskMan打开时,创建这些矩阵的过程甚至不会使用那么多内存.TaskMan报告的使用量低于2k.

使用Eigen 2.0.15稳定释放

小智 5

特征开发者在这里.在我们的支持渠道上询问Eigen问题会好得多,例如论坛...... ;-)

简短回答:你使用固定或动态大小的矩阵吗?

  • 如果是固定尺寸,切换到动态尺寸(对于如此巨大的尺寸,无论如何都是不费脑子的)

  • 如果你得到动态大小的矩阵的错误,我很惊讶,但同时我可以看到值10000来自哪里.无论如何,如果你升级到eigen3(开发分支),你的问题就会消失.