内存不足错误。如何定位?如何解决?

时间:2018-11-06 16:59:59

标签: memory-management fortran

我正在尝试在Cray上运行Fortran代码。在gnu或intel下编译时,它可以正常工作。当我尝试在Cray Fortran下编译运行它时,它死于“ OOM killer”错误。我不知道错误来自哪里。我不知道为什么Cray编译器在其他编译器没有的时候会出问题。最重要的是,我尝试了各种编译器开关和(取消)激活“大页面”,但都无济于事。如何找到此错误?更好的是,我该如何解决?

1 个答案:

答案 0 :(得分:2)

如果有人感兴趣,我接受了弗拉基米尔F的建议,开始禁用部分代码以查找问题。我很幸运,并没有花那么长时间。在代码的一部分中,我具有可循环分配的整数数组。尚不清楚运行时数组的大小是多少。因此,我为它们分配了一定的大小,然后在循环迭代时,如果它们超出了范围,我将重新分配它们,并以某种增量将大小增加,默认情况下为100。我不知道Cray编译器如何工作的内部原理,但是这导致它无法处理太多的重新分配,并且它将该错误报告为内存不足错误。我将增量增加到500个整数,就解决了这个问题。如果有人想了解实际发生的事情,我将很乐意得知。