我尝试初始化大小为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'失败。 中止(核心已弃用)
答案 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或交换空间来使该程序运行。