矩阵在本征中的最大大小是多少

What is the maximum size of matrix in Eigen?

本文关键字:多少      更新时间:2023-10-16

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

what():std::bad_alloc
中止(堆芯转储)

使用动态2调阵列,程序运行良好。Eigen中(稠密)矩阵的大小是否存在硬极限?

您正试图分配每个8字节的100000*100000元素,即80000000000字节(74.5GB),但由于您只有16GB的内存,因此失败了。这会导致内存分配失败,因为它找不到那么大的连续内存块。

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

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

MatrixXd使用双

100000×100000=10000000000个元素。

在您的系统中,sizeof(double)可能是8。

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

width*height*sizeof(double)=>100000*100000*8/(1024*1024*1024)=>74.5 GB内存。