所以,我找到了 Eigen当我尝试声明大于 10000x10000 的矩阵时程序包崩溃。我需要像这样声明一个矩阵......可靠地大约 13000x13000 个元素。我进行了如下测试:
for( int tortureEigen = 1 ; tortureEigen < 50000 ; tortureEigen++ )
{
printf( "Torturing Eigen with %dx%d..\n", tortureEigen, tortureEigen ) ;
Eigen::MatrixXd m( tortureEigen, tortureEigen ) ;
}
我的机器(6 GB RAM)在 14008 个元素处崩溃。
我有点失望!我认为 Eigen 就像 MATLAB 或 Octave,使用更大的数组不应该崩溃,即使它确实碰到了磁盘或其他东西..
更重要的是,当我运行这个测试并保持 TaskMan 打开时,创建这些矩阵的过程甚至没有使用那么多内存。 TaskMan 报告使用量低于 2k。
使用 Eigen 2.0.15 稳定版
最佳答案
Eigen 开发者在这里。你最好在我们的支持 channel 上询问 Eigen 问题,例如论坛...;-)
简短回答:您使用的是固定大小矩阵还是动态大小矩阵?
如果是固定尺寸,切换到动态尺寸(对于这么大的尺寸,无论如何这是一个明智的选择)
如果您遇到动态大小矩阵的错误,我很惊讶,但与此同时我可以看到值 10000 的来源。无论如何,如果您升级到 eigen3(开发分支),您的问题就会消失。
关于c++ - 32 位应用程序的特征最大矩阵大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449434/