phy*_*ist 6 c c++ arrays stack static
我是新手,High Performance Computing也是我在这个论坛上的第一个问题,我长期以来一直是读者.
基本上我需要对非常大的数组进行算术运算
double variable [9][4][300][300][300] (uninitialized)
Run Code Online (Sandbox Code Playgroud)
情况1:如果我声明上面的数组local/automatic然后我得到运行时错误如果我编译没有优化像 " g++ file.cpp"..(错误是分段错误 - 堆栈溢出???)
情况2:如果我使用优化进行编译,则与上述情况相同,代码按预期运行."g++ -O2 file.cpP"(是array在bss现在???)
情况3:如果我创建变量,global/static那么它编译得很好,但是它不会运行,只是killed在终端上给出一条消息" "并终止.
没有真正的问题,但我很好奇,想要了解声明超大型数组时会发生什么,以及它们根据数据类型驻留在内存中的位置.
我也知道使用malloc或new在运行时生成这些数组的方法.然后当然会在堆上.
所以对我来说最重要的问题是 - >这是在编译g++和运行时处理大型数组时最有效的方法(即计算内存中数组时的最小运行时间)linux clusters.
感谢您耐心等待阅读.
无论优化标志如何,局部变量总是在堆栈上.那个阵列大概是7千兆字节!比任何可能的堆栈大的方式.
大小也可能是它无法启动的原因,就好像你把它作为全局/静态变量一样,那么你需要有超过7 GB或虚拟内存空闲且连续的才能加载程序.