以下程序正在陷印。
void main(){
fmat A,W,H;
W.load("w.csv"); //W is of size 150000x100
H.load("h.csv"); //H is of size 300000x100
A.set_size(W.n_rows,H.n_rows);
A.zeros();
A=W*H.t();
}
上面的程序是使用 g++ 4.8 和 fopenmp 标志编译的,并在 ubuntu 64 位和 384GB 内存上运行。我正在使用openblas。W 和 H 是任意随机正矩阵。
上面的代码在乘法过程中捕获和创建核心转储。代码成功到 A.zeros()。我检查了 ulimit,它显示无限制。我还尝试创建 A 作为 W 和 H 向量的外积之和。它也是陷阱。此外,当 W 和 H 很小时,代码正在工作并且不会捕获。
如何多个两个大矩阵?有尺寸限制吗?
@mtall在上面的评论中的答案就是答案。在 include/armadillo_bits/config.hpp 中启用ARMA_64BIT_WORD。包含目录可以在您安装犰狳的位置找到。例如,在我的例子中,它在/usr/local 中。