Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 犰狳要求的尺寸太大_C++_Armadillo - Fatal编程技术网

C++ 犰狳要求的尺寸太大

C++ 犰狳要求的尺寸太大,c++,armadillo,C++,Armadillo,我正在使用armadillo4.300.0。我在一个大小为2840260x103的密集矩阵上操作。我正在从一个大小约为3.7GB的.csv文件加载此矩阵。我已经在我的应用程序中启用了“ARMA_64BIT_WORD”,并在armadillo_bits目录下启用了config.hpp #如果!已定义(ARMA_64位_字) #定义ARMA\u 64位\u字 #恩迪夫 我使用gcc49编译,并在ubuntu 12.04上运行。当我运行时,我得到以下错误。有趣的是,应用程序偶尔也会运行。例如,如果我

我正在使用armadillo4.300.0。我在一个大小为2840260x103的密集矩阵上操作。我正在从一个大小约为3.7GB的.csv文件加载此矩阵。我已经在我的应用程序中启用了“ARMA_64BIT_WORD”,并在armadillo_bits目录下启用了config.hpp

#如果!已定义(ARMA_64位_字)
#定义ARMA\u 64位\u字
#恩迪夫
我使用gcc49编译,并在ubuntu 12.04上运行。当我运行时,我得到以下错误。有趣的是,应用程序偶尔也会运行。例如,如果我一直尝试大约10次,它有时会运行

error: Mat::init(): requested size is too large  

terminate called after throwing an instance of 'std::logic_error'  
  what():  Mat::init(): requested size is too large
我需要处理其他事情吗


Ramki.

当我们使用-DMKL_ILP64-m64编译时,“英特尔MKL库”解决了这个问题。通常我们只关注链接标志。但需要注意的是,这些标志也必须在gcc命令的编译阶段启用。我不确定如何在openmpi库上启用此功能。此外,lib armadillo.so必须与mkl_ilp64而不是mkl_lp64链接。按照下面的说明操作

建造和安装犰狳:

  • 导出CXX=icpc
  • 导出CC=icpc
  • 导出路径=$PATH:/home/ramki/intel/bin:
  • 编辑$armadillo_root/cmake_aux/Modules/ARMA_FindMKL.cmake,正确包含路径
  • 编辑$armadillo_root/cmake_aux/Modules/ARMA_FindMKL.cmake,将mkl_lp64更改为mkl_ilp64
  • 编辑$armadillo_root/CMakeLists.txt和(1)更改“英特尔链接顾问”提供的CMAKE_共享链接器_标志以包括链接行,以及(2)更改“英特尔链接顾问”提供的CMAKE_CXX_标志
  • 运行。/配置并确保MKL库用于blas和lapack,icpc作为编译器,其余部分正常
  • 跑来跑去
  • 通过运行ldd libarmadillo.so验证链接库。主要验证是否与mkl_ilp64库以及mkl blas和lapack库链接
  • 现在运行makeinstalldestdir=localpath

这应该行得通

您似乎知道问题的根源以及MKL解决问题的原因。你能提供更多关于这件事的信息吗?这可能是对你答案的一个重要的积极补充。