gpt4 book ai didi

linux - 我的 Fortran 代码的输出被杀死,有什么建议吗?

转载 作者:太空狗 更新时间:2023-10-29 12:21:51 25 4
gpt4 key购买 nike

我正在尝试在 ssh 上运行一个非常适合较小网格的代码,但由于新网格要大得多,我使用 ifort 命令来编译它,ifort -mcmodel=medium -i-dynamic -otest.out*.f

它符合要求,但是当我运行它时,输出是:杀了

我知道这个问题是内存造成的,有谁知道有什么办法可以运行它吗?我如何了解代码中的何处导致内存问题?

谢谢沙迪

最佳答案

从 ifort 命令行,我认为您正在 Linux 上运行。

将“killed”视为输出通常是 Linux 的内存不足 killer (OOM) 介入以防止即将发生的崩溃的结果(因为应用程序通常的做法是请求更多的内存然后他们需要请求更多的内存当前可用的被接受 - 检查系统日志文件中的“内存不足:杀死进程 [PID] [进程名称]”)。 OOM killer 通常非常擅长处理负责使用所有内存的应用程序,因此从您的应用程序内存使用情况开始。

首先要做的是尝试估计(即使只是粗略估计)您希望应用程序使用多少内存。一种方法是估计主要数组的大小并将它们乘以每个元素所需的位数。另一种方法是考虑您期望内存使用如何随网格大小增长。您可以通过实验(以不同的网格大小运行,测量内存使用和推断)或通过主要阵列缩放方式的一次测量和知识来研究这一点。可能是您要求的内存比机器上的内存多得多:对此的解决方案可能是访问更大的计算机。 (或者您可以尝试找到使用更少内存的替代算法。)

如果它们是内存泄漏,您应该会看到比预期更多的内存使用,即使对于较小的网格大小也是如此。如果是这种情况,valgrind 应该会有所帮助。从静态存储转移到动态存储可能在这里没有帮助——如果您刚刚超出堆栈上的可用空间,我希望看到段错误。

关于linux - 我的 Fortran 代码的输出被杀死,有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com