【发布时间】:2014-07-22 23:01:30
【问题描述】:
我有一些代码可以用 g++ 很好地编译。然后我让一些数组更大:
complex<double> densop[a][b][c]
其中 a=b=400,g=500。当我用
编译时g++ -L/.../gsl -I/../gsl -O2 -lgsl -lgslcblas -Wall -o sim1 sim1.cp
编译器挂起 (5h+) 没有额外的警告,而不是在它编译的情况下。
我以为它可能是内存,但顶部显示 CPU 运行在 100% 和 %MEM 大约一半。顺便说一句,我还全局声明了数组,这样它就不会在堆栈上很重。
在编译成功与否的情况之间有所不同的另一件事是,当我#include 两个数据文件时,在第二种情况下更大(30 和 15 MB)。
gcc 版本 4.1.2,内存 30GB。尝试使用 -O0 和 -O2 标志。
提前谢谢你!
【问题讨论】:
-
围绕变量声明显示更多代码。例如,它是在函数中声明还是在文件范围内声明或作为静态声明?
-
请注意,写入的数组是
double的80000000元素,总大小为640 MB。根据您列出的规格,这应该不是问题,但我想我会包括那个细节,以防它跳出任何人。 -
@Cyber 元素类型是
complex<double>,实际上是两个双精度数的大小。所以总内存使用量为 1280MB。 -
是的,内存可能应该是动态分配的,否则你将拥有一个可执行文件大小的地狱......
-
可惜机器是共享的,我没有更新g++的权限,时间有点短!