Optimization 波特兰集团FORTRAN pgf90程序在使用-fast编译时失败,使用-fast-mnroll编译成功

Optimization 波特兰集团FORTRAN pgf90程序在使用-fast编译时失败,使用-fast-mnroll编译成功,optimization,crash,fortran,pgi,Optimization,Crash,Fortran,Pgi,这段代码愉快地运行了很长一段时间,直到我们最近发现了一个边缘情况,在这种情况下,它默默地失败了——没有返回错误。 失败是相当微妙的。我们可以通过: 1) 使用任何一组选项进行编译,包括-traceback或debug(-g或-gopt) 2) 使用-fast-mnounloll编译 3) 使用优化编译我不熟悉pgf(见鬼,我已经10年没有使用任何fortran了),但下面是一些跟踪(潜在)编译器错误的一般建议: 简化可重复的案例。也就是说,尝试用一段相似的代码重现问题,该代码删除了所有多余的细节

这段代码愉快地运行了很长一段时间,直到我们最近发现了一个边缘情况,在这种情况下,它默默地失败了——没有返回错误。 失败是相当微妙的。我们可以通过: 1) 使用任何一组选项进行编译,包括
-traceback
或debug(
-g
-gopt
) 2) 使用
-fast-mnounloll
编译 3) 使用优化编译我不熟悉pgf(见鬼,我已经10年没有使用任何fortran了),但下面是一些跟踪(潜在)编译器错误的一般建议:

  • 简化可重复的案例。也就是说,尝试用一段相似的代码重现问题,该代码删除了所有多余的细节。这是很有帮助的,因为a)公开发布代码时,您不会太犹豫,b)如果有人试图诊断问题,那么使用较少的周围材料对他们来说会更容易

  • 与专家交谈:如果您有pgf支持合同,请使用它!他们的网站上有一个网站。如果没有,你可以在用户论坛上发布你的信息——其他人可能有更好的解决方法,或者那里的员工可以记录你的问题

  • 仔细检查你的代码。有没有可能你是在依赖某种?这是在更改优化级别时导致程序切换行为的一种情况。我并不是说编译器错误是不可能的,但它也可能是对代码的一种攻击

  • 希望这会有帮助