我正在尝试使用calloc函数分配内存,但是当数组大小(类型double)为48,000 x 48,000时,它将返回NULL指针。但是,它对于23,000 x 23,000的另一种情况非常适用。从技术上讲应该没有问题,因为这台计算机上的RAM足够多。我也在使用64位库。
操作系统:Linux 64bit
安装的内存:376GB
编译器:Intel MKL 2019
编译器链接行:
icc Main.c -qopenmp -DMKL_ILP64 -m64 -I$MKLROOT/include \
-L$MKLROOT/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread \
-lmkl_core -liomp5 -lpthread -lm -ldl -O2 -o main.out
Run Code Online (Sandbox Code Playgroud)
这是我使用的一段代码:
int Jsize = 48000;
double *J = NULL;
J = (double *)calloc(Jsize*Jsize, sizeof(double));
if (J == NULL) printf("Null\n");
Run Code Online (Sandbox Code Playgroud) c ×1