大矩阵乘法核心转储



以下程序正在陷印。

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 中。

相关内容

  • 没有找到相关文章

最新更新