我可以使用尺寸大于大小限制(2 ^ 32)的Eigen :: VectorXd吗?

时间:2019-07-16 07:07:05

标签: c++ eigen

我尝试初始化大小为60,000,000,000的VectorXd。运行我的软件时,由于Vector大小,出现以下错误。

是否有解决问题的建议?

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;特征::索引=长整数]:断言`(((SizeAtCompileTime ==动态&&(MaxSizeAtCompileTime ==动态|| size <= MaxSizeAtCompileTime))|| SizeAtCompileTime == size)&& size> = 0'失败。 中止(核心已弃用)

1 个答案:

答案 0 :(得分:0)

在Core / util / Constants.h中将“动态”值定义为

//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上都指定为int,因此您可能需要在很多地方进行更改。另外,您应该注意上面的评论。您需要确保使用相同的补丁Eigen版本编译链接到的所有内容。

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