Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用相同的输入参数产生不同错误的Fortran程序_Fortran_Osx Mavericks_Fortran90 - Fatal编程技术网

用相同的输入参数产生不同错误的Fortran程序

用相同的输入参数产生不同错误的Fortran程序,fortran,osx-mavericks,fortran90,Fortran,Osx Mavericks,Fortran90,这个问题似乎有点开放性,但它已经困扰了我一段时间,所以我想我会把它贴在这里,希望能得到讨论或建议 我是一名物理学博士生,在相当复杂的fortran程序上运行相当大的计算。该计划涉及大量粒子(~1000),它们通过局部电位相互作用,并根据过阻尼朗之万动力学进行移动 最近这个节目开始表现得很奇怪。我不知道发生了什么变化,但当程序使用相同的输入参数运行时,似乎发生了不同的事情。有时程序会运行到完成。其他时候,它会在计算中的不同点产生seg故障。有时它似乎只是简单地停下来而不产生任何错误,有一两次导致我

这个问题似乎有点开放性,但它已经困扰了我一段时间,所以我想我会把它贴在这里,希望能得到讨论或建议

我是一名物理学博士生,在相当复杂的fortran程序上运行相当大的计算。该计划涉及大量粒子(~1000),它们通过局部电位相互作用,并根据过阻尼朗之万动力学进行移动

最近这个节目开始表现得很奇怪。我不知道发生了什么变化,但当程序使用相同的输入参数运行时,似乎发生了不同的事情。有时程序会运行到完成。其他时候,它会在计算中的不同点产生seg故障。有时它似乎只是简单地停下来而不产生任何错误,有一两次导致我的计算机显示程序内存不足的警告


这里让我困惑的是,为什么程序对于相同的输入应该有不同的行为。我真的只是希望能对这里可能发生的事情提出一些建议。目前我唯一的想法是某种内存管理问题。我现在运行的电脑是一台2013年的iMac,它有8GB内存,2.7GHz四核i5处理器和OSX小牛。虽然不是世界上最强大的,但我相当肯定我已经在上面运行了更大的计算,而没有这些问题

seg故障表示程序内存不足或程序出错。Fortran中导致seg错误的最常见错误是数组下标错误以及调用和过程中的参数之间的不一致(伪参数)。首先,打开编译器的运行时下标检查选项。对于第二种情况,将所有过程放在一个(或多个)模块中并使用该模块。这将使编译器能够检查参数的一致性

你在用什么编译器


更新:如果您正在使用gfortran,请尝试以下编译器选项:
-O2-fimplicit none-Wall-Wline truncation-Wcharacter truncation-Wsurprising-Waliasing-Wimplicit interface-Wunused-parameter-fwhole file-fcheck=all-std=f2008-pedantic-fbacktrace

我看不出有人能为这一级别的信息提供什么帮助。你能调试这个程序来找出它开始出现问题的地方吗?你希望在看不到病人的情况下得到诊断!!??好的,这里有一些猜测:未能在每个作用域中插入
隐式none
;未能匹配过程伪参数和实际参数;访问超出其边界的数组。。。可能还有一系列其他问题,这些问题可能会导致看似不确定的bug。事实上,它们一直都是虫子,只是它们可能不总是咬你的屁股。不期望得到诊断,只希望得到在相同条件下可能导致不同表现的问题的一般想法,因为我以前从未见过类似的情况。在这种情况下:“可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离可以在几段时间内回答的问题。“-投票通过数组边界检查和回溯关闭编译并再次运行。如果没有产生指向问题的有意义错误,请对其运行valgrind(取决于模拟的大小,这可能需要很长时间)。我确实在使用gfortran。简单地执行数组绑定检查就暴露了我正在研究的几个问题。我已尝试使用您建议的所有选项进行编译,尽管编译器声称无法识别“-参数“,其余的都产生了一系列错误,我将稳步解决这些错误。非常感谢所有的建议-这正是我一直在寻找的东西。我很高兴这有帮助。它是
Wunused参数
。它被跨行拆分,就像
-Wline截断一样。gfortran手册中介绍了这些选项。其中一些将产生可接受的警告。数组边界冲突是不可接受的,可能是程序出现问题的原因。对“英特尔fortran编译器”调试器标志有何建议?