我在跑车日运行模拟代码,因此尝试尽可能减少计算量。对于主要模拟,我有8个阵列,1.3E + 8个条目(256x512x1024),但每隔几个小时我需要进行强烈的数据处理,这需要在短时间内再接收200(!!!)这些阵列。起初我专门使用静态数组,因为我超出了我的记忆而产生错误。这是我不明白的,我想如果发生这种情况,数据会存储在硬盘驱动器内存上(我的交换是什么)?
无论如何,现在我使用动态分配的数组,但我不确定我是否正确。 我基本上在开始时分配所有200个数组,并在我的Main例程结束时释放它们。如果我在需要时分配数组并在之后立即解除分配,那么会有优势吗?运行时有好处吗?
代码中的一点:它是用fortran编写的,用ifort + OpenMPI编译并行化。我在gentoo上运行它。