如果我在 ifort 中使用 -O0 编译,程序可以正常运行。但是只要我打开优化选项,比如-O,-O3,-fast,就会出现SIGSEGV分段错误。
此错误发生在名为 maketable() 的子例程中。以下是现象:
(1) 我在这个子程序中调用了 fftw 库。如果我评论关于 fftw 的句子,就可以了。但我认为这不是fftw的错,因为我在这段代码的其他一些地方也使用了fftw,它们都很好。
(2) fftw在循环中被调用,当程序crash时循环可以运行多次。段错误不会在第一次进入循环时发生。
(3)我考虑过堆栈溢出,但我现在不这么认为。我有很久以前别人编译的可执行文件,可以在我的电脑上执行。我认为这表明这不是由于系统堆栈溢出。
ifort 的版本是 10.0,fftw 的版本是 fftw-2.1.5。cpu类型是intel xeon 5130。非常感谢。