gfortran是否放弃了对Cygwin的svml支持?

时间:2013-09-24 18:34:46

标签: windows cygwin libraries gfortran intel-mkl

我在一个全新的Cygwin安装上编译Fortran代码时遇到了一些麻烦,我可以追溯到英特尔svml(短矢量数学库)库中函数的未定义引用。

具体来说,我收到表格错误

import_gamess.o:import_gamess.f90:(.text+0xb58b): 
undefined reference to `vmldPow2'

并且函数vmldPow2svml库的一部分,如here所示,我将其作为选项传递给我的makefile中的gfortran

F90 = gfortran -m64 -msse2 -O3 -march=native -mtune=native -fopenmp \
  -ffast-math -fassociative-math -freciprocal-math -ffinite-math-only \
  -fno-signed-zeros -fno-trapping-math -msahf -mmovbe -mrecip \
  -mveclibabi=svml -ftree-vectorize -fexternal-blas 
  -fblas-matmul-limit=50  -static 

(我也在使用图书馆lapacklblas。)

我的笔记本电脑上编译好的文件,在Windows 7上运行Cygwin 1.7.17。(大约在2013-04-18安装; gfortran版本有4.5.3。)我现在正在尝试复制安装一个新的桌面,也运行Windows 7,并已安装Cygwin 1.7.25。我在32位和64位安装上都遇到了上述错误(分别使用gfortran 4.7.3和4.8.1运行),以及在我的桌面上安装了64位Cygwin。我也在同一个桌面上的Linux启动时出现错误,这是我目前无法实现的。

我很清楚,在较新的Cygwin安装中,有(a)到svml的链接断开,或者(b)缺少该库的部分。我已尽最大努力搜索恢复该库的方法,但它似乎是GNU编译器的固有部分。事实上,GNU编译器是否放弃了对该库的支持?如果没有,那么我猜测我需要修复库或链接到它的文件。在这种情况下,这个图书馆在哪里?我应该修复哪些文件以及如何修复?

但是,我知道,如果出现这种情况,我很可能会在错误的树上咆哮,并且很乐意直截了当。我应该在哪里看?

1 个答案:

答案 0 :(得分:1)

gfortran 4.8.1-mveclibabi链接相对应的网站读取To use this option, both -ftree-vectorize and -funsafe-math-optimizations have to be enabled, and an SVML or ACML ABI-compatible library must be specified at link time.

4.7.1

版本4.7.2-funsafe-math-optimizations同样适用。

我的猜测是你需要安装Intel MKL(并设置环境)并链接它。此外,您需要指定-mveclibabi=svml

或者,您可以删除gfortran并使用{{1}}矢量化内在函数。