Eigen中矩阵的最大大小是多少?

时间:2013-07-02 16:17:33

标签: c++ eigen eigen3

在我的情况下(64位ubuntu,16GB内存,使用Eigen3),我写了MatrixXd m(M,M);其中M = 100,000,在运行时,程序崩溃,并报告:

  

what():std :: bad_alloc
    中止(核心倾销)

使用动态2 dim数组,程序运行正常。 Eigen(密集)矩阵的大小是否有硬限制?

2 个答案:

答案 0 :(得分:6)

您正在尝试分配每个8字节的100000*100000元素,或80,000,000,000字节(74.5GB),这是因为您只有16GB的内存而失败。这会导致内存分配失败,因为它无法找到单个连续的大内存块。

Eigen没有固定限制,但数组确实需要在您的系统上进行分配。

答案 1 :(得分:1)

你忘记了矩阵元素的大小。

MatrixXd使用双

100000 * 100000 = 10000000000个元素。

sizeof(double)在你的系统上可能是8。

这意味着,为了创建这个矩阵,你需要:

width * height * sizeof(double)=> 100000 * 100000 * 8 /(1024 * 1024 * 1024)=> 74.5千兆字节的内存。