views:

109

answers:

1

Has anyone tried compiling SciPy 0.7.1 on Windows using numpy-1.3.0 that was built with the pre-built ATLAS libraries (atlas3.6.0_WinNT_P4SSE2.zip) linked in the installation document.

I get the following linker error, and have no ideas as to how to fix this issue.

$ python setup.py config --compiler=mingw32 build --compiler=mingw32 install --root=i
[...]
creating build\temp.win32-2.6\Release
creating build\temp.win32-2.6\Release\scipy
creating build\temp.win32-2.6\Release\scipy\integrate
compile options: '-DNO_ATLAS_INFO=2 -I"C:\Documents and Settings\apy\Application Data\Python\Python26\site-packages\numpy\core\inc
lude" -IC:\Python26\include -IC:\Python26\PC -c'
gcc -mno-cygwin -O2 -Wall -Wstrict-prototypes -DNO_ATLAS_INFO=2 -I"C:\Documents and Settings\apy\Application Data\Python\Python26\
site-packages\numpy\core\include" -IC:\Python26\include -IC:\Python26\PC -c scipy\integrate\_odepackmo
dule.c -o build\temp.win32-2.6\Release\scipy\integrate\_odepackmodule.o
C:\MinGW\bin\g77.exe -g -Wall -mno-cygwin -g -Wall -mno-cygwin -shared build\temp.win32-2.6\Release\scipy\integrate\_odepackmodule
.o -LC:\atlas3.6.0_WinNT_P4SSE2 -LC:\MinGW\lib -LC:\MinGW\lib\gcc\mingw32\3.4.5 -LC:\Python26\libs -LC:\Act
ivePython32Python26\PCbuild -Lbuild\temp.win32-2.6 -lodepack -llinpack_lite -lmach -latlas -lcblas -lf77blas -llapack -lpython26 -
lg2c -o build\lib.win32-2.6\scipy\integrate\_odepack.pyd
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_daxpy.o):ATL_F77wrap_axpy.c:(.text+0x3c): undefined reference to `ATL
_daxpy'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_dscal.o):ATL_F77wrap_scal.c:(.text+0x26): undefined reference to `ATL
_dscal'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_dcopy.o):ATL_F77wrap_copy.c:(.text+0x3d): undefined reference to `ATL
_dcopy'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_idamax.o):ATL_F77wrap_amax.c:(.text+0x1e): undefined reference to `AT
L_idamax'
C:\atlas3.6.0_WinNT_P4SSE2/libf77blas.a(ATL_F77wrap_ddot.o):ATL_F77wrap_dot.c:(.text+0x36): undefined reference to `ATL_d
dot'
collect2: ld returned 1 exit status
error: Command "C:\MinGW\bin\g77.exe -g -Wall -mno-cygwin -g -Wall -mno-cygwin -shared build\temp.win32-2.6\Release\scipy\integrat
e\_odepackmodule.o -LC:\atlas3.6.0_WinNT_P4SSE2 -LC:\MinGW\lib -LC:\MinGW\lib\gcc\mingw32\3.4.5 -LC:\Python
26\libs -LC:\Python26\PCbuild -Lbuild\temp.win32-2.6 -lodepack -llinpack_lite -lmach -latlas -lcblas -lf77blas -llap
ack -lpython26 -lg2c -o build\lib.win32-2.6\scipy\integrate\_odepack.pyd" failed with exit status 1

Does anyone know what could have gone wrong here? Looking for ATL_daxpy, for example, in libf77blas.a resulted in:

$ strings libf77blas.a  | grep -i daxpy
_daxpy_
_atl_f77wrap_daxpy_
ATL_F77wrap_daxpy.o/
daxpy.o/        1081731936  1003  513   100755  420       `
daxpy.f
_daxpy_
_atl_f77wrap_daxpy_
_atl_f77wrap_daxpy_
_ATL_daxpy

There is _ATL_daxpy, but no ATL_daxpy.

+1  A: 

Our installation instructions are awfully out of date. First, you should use the binary installer unless you have a very good reason not to on windows. Here you are linking against an ATLAS which is different than the one numpy itself was built on, which is unlikely to work well (numpy and scipy would use different versions of atlas).

Assuming you have a good reason to build it by yourself, you can get the atlas binaries we use in the binary installers in the vendor directory of our repo.

David Cournapeau
Thanks - and http://svn.scipy.org/svn/numpy/vendor/binaries/ only works for 32-bit build, correct?
Sridhar Ratnakumar
yes, ATLAS cannot be built on windows 64 AFAIK. Your only chance ATM is to use MKL (or some other proprietary implementation which works on win64 if you are mad enough to dive into numpy build system :) ).
David Cournapeau
@David BTW, I was able to build numpy with MKL. Now trying to build scipy .. which needs a fortran compiler. Is g77.exe from mingw-w64 supported; or is ifort the only recommended way to go?
Sridhar Ratnakumar
I strongly recommend using ifort. g77 is from gcc 3.x series, and mingw-w64 only support gcc 4.x series. Nobody managed to build scipy with mingw-w64 - I have already spent a lot of time on it one year ago, it got a lot of subtle issues. Some if not most of them may be gone with bugs fixes in the mingw-w64 toolchain.
David Cournapeau