这段代码在很长一段时间里一直欢快地嗡嗡作响,直到我们最近发现一个边缘案例,它无声地失败了-没有错误返回。
失败显然是微妙的。我们可以通过以下方式使代码在边缘情况下正常运行:
1)使用包括-traceback
或debug(-g
或-gopt
)的任何选项集进行编译;
2)用-fast -Mnounroll
编译;
3)优化时<2进行编译;
4)在代码中添加WRITE语句以确定失败的位置;
换句话说,大多数可用于调试故障的工具实际上导致故障消失。
我正在探索有关与循环展开或其他优化有关的故障及其解决方案的任何信息。
谢谢大家。
最佳答案
我对pgf并不熟悉(哎呀,自从我使用任何fortran已有10年了),但是这里有一些有关追踪(潜在)编译器错误的一般建议:
希望对您有所帮助。
关于optimization - 使用-fast编译时,波特兰组FORTRAN pgf90程序失败,-fast -Mnounroll成功时,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4789278/