提问者:小点点

我的Eigen::VectorXD的大小可以大于大小限制(232)吗?


我尝试初始化一个大小为60,000,000,000的VectorXd。当运行我的软件时,由于向量的大小,我得到以下错误。

有什么解决问题的建议吗?

a.out:/usr/local/easybuild/software/eigen/3.3.3-intel-2018a/include/eigen/src/core/plainobjectbase.h:312:void eigen::plainobjectbase::resize(Eigen::index)[with Derived=eigen::matrix;eigen::index=long int]:断言((SizeAtCompileTime==Dynamic&&(maxsizeatCompiletime==Dynamic size<=maxsizeatCompiletime))SizeAtCompileTime==size>=0'失败。中止(核心转储)


共1个答案

匿名用户

null

//Changing the value of Dynamic breaks the ABI, as Dynamic is often used as a template parameter for Matrix.
const int Dynamic = -1;

因此,您可以通过将特定断言重新定义为更大的类型(如

const long Dynamic = -1;

但是,Eigen的模板参数都被指定为,因此您可能需要在很多地方更改它。另外,你应该注意上面的评论。您需要确保用相同的修补Eigen版本编译您链接的所有内容。

此外,您将需要大量的RAM或交换空间来使程序运行。