我正在使用带有“-ipo”标志并包括“-openmp”的英特尔编译器在 Cray XC30 系统上编译使用 Cray LibSci 数值库的 BLAS 和 LAPACK 代码,以编译支持 OpenMP 的代码。
对于我尝试编译的任何代码,我都会看到以下错误:
** segmentation violation signal raised **
Access violation or stack overflow. Please contact Support.
ifort: error #10106: Fatal error in /opt/intel/composer_xe_2013_sp1.4.211/bin/intel64/fortcom, terminated by segmentation violation
ifort: error #10014: problem during multi-file optimization compilation (code 1)
这可以用一个非常简单的例子来说明:
user@eslogin008:~> cat blas1F.f
program blas1F
implicit none
real*4 x(4), y(4)
external sswap
data x/2, 3, 4, 5/
data y/5, 4, 9, 2/
call sswap(4, x, 1, y, 1)
write (*,*) 'After Swap..'
end
编译:
user@eslogin008:~> ftn -ipo -openmp blas1F.f
** segmentation violation signal raised **
Access violation or stack overflow. Please contact Support.
ifort: error #10106: Fatal error in /opt/intel/composer_xe_2013_sp1.4.211/bin/intel64/fortcom, terminated by segmentation violation
ifort: error #10014: problem during multi-file optimization compilation (code 1)
排除“-ipo”或“-openmp”标志之一会导致代码编译和运行良好。