我是这个论坛的新手,High Performance Computing
也是我的第一个问题,我长期以来一直是这个论坛的读者。
基本上我需要对非常大的数组进行算术运算,例如
double variable [9][4][300][300][300] (uninitialized)
案例1:如果我将上面的数组声明为,local/automatic
那么如果我在没有像 “ g++ file.cpp
”这样的优化的情况下进行编译,则会出现运行时错误。(错误是分段错误——堆栈溢出???)
案例 2:在与上述相同的情况下,如果我进行了优化编译,代码将按预期运行。"g++ -O2 file.cp
p"(现在array
在bss
吗???)
案例3:如果我创建变量global/static
,那么它编译得很好,但它仍然没有运行,只是killed
在终端上给出一条消息“”并终止。
没有真正的问题,但我很好奇,想了解当声明超大数组时会发生什么,以及它们驻留在内存中的位置,具体取决于它们的数据类型。
我也知道在运行时使用 malloc 或 new 生成这些数组的方法。那么它当然会在堆上。
所以对我来说最重要的问题是 --> 在g++
使用linux clusters
.
感谢您的耐心阅读。