[Numpy-tickets] [NumPy] #438: extension modules on x86_64 fail, march is set to i686

NumPy numpy-tickets at scipy.net
Mon Jan 29 10:45:48 CST 2007


#438: extension modules on x86_64 fail, march is set to i686
------------------------+---------------------------------------------------
 Reporter:  tovrstra    |       Owner:  somebody
     Type:  defect      |      Status:  new     
 Priority:  normal      |   Milestone:          
Component:  numpy.f2py  |     Version:  1.0.1   
 Severity:  minor       |    Keywords:          
------------------------+---------------------------------------------------
 When trying to compile this fortran example module into a python module:

 {{{
 MODULE test
 IMPLICIT NONE
 CONTAINS
     FUNCTION add(a,b)
         REAL(8),INTENT(IN) :: a,b
         REAL(8) :: add
         add = a+b
     END FUNCTION
 END MODULE
 }}}

 with f2py:

 {{{
 f2py -c test.f90
 }}}

 on my x86-64 box, I get the following output:

 {{{
 toon at dropklop:~/$ f2py -c test.f90
 running build
 running config_fc
 running build_src
 building extension "untitled" sources
 f2py options: []
 f2py:> /tmp/tmpus7JnZ/src.linux-x86_64-2.4/untitledmodule.c
 creating /tmp/tmpus7JnZ
 creating /tmp/tmpus7JnZ/src.linux-x86_64-2.4
 Reading fortran codes...
         Reading file 'test.f90' (format:free)
 Post-processing...
         Block: untitled
                         Block: test
                                 Block: add
 Post-processing (stage 2)...
         Block: untitled
                 Block: unknown_interface
                         Block: test
                                 Block: add
 Building modules...
         Building module "untitled"...
                 Constructing F90 module support for "test"...
                 Creating wrapper for Fortran function "add"("add")...
                         Constructing wrapper function "test.add"...
                           add = add(a,b)
         Wrote C/API module "untitled" to file
 "/tmp/tmpus7JnZ/src.linux-x86_64-2.4/untitledmodule.c"
         Fortran 90 wrappers are saved to
 "/tmp/tmpus7JnZ/src.linux-x86_64-2.4/untitled-f2pywrappers2.f90"
   adding '/tmp/tmpus7JnZ/src.linux-x86_64-2.4/fortranobject.c' to sources.
   adding '/tmp/tmpus7JnZ/src.linux-x86_64-2.4' to include_dirs.
 copying /usr/lib/python2.4/site-packages/numpy/f2py/src/fortranobject.c ->
 /tmp/tmpus7JnZ/src.linux-x86_64-2.4
 copying /usr/lib/python2.4/site-packages/numpy/f2py/src/fortranobject.h ->
 /tmp/tmpus7JnZ/src.linux-x86_64-2.4
   adding '/tmp/tmpus7JnZ/src.linux-x86_64-2.4/untitled-f2pywrappers2.f90'
 to sources.
 running build_ext
 customize UnixCCompiler
 customize UnixCCompiler using build_ext
 Could not locate executable g77
 Could not locate executable f77
 customize GnuFCompiler
 Could not locate executable ifort
 Could not locate executable ifc
 Could not locate executable ifort
 Could not locate executable efort
 Could not locate executable efc
 Could not locate executable ifort
 Could not locate executable efort
 Could not locate executable efc
 customize IntelFCompiler
 customize LaheyFCompiler
 customize PGroupFCompiler
 customize AbsoftFCompiler
 customize NAGFCompiler
 customize VastFCompiler
 customize GnuFCompiler
 customize CompaqFCompiler
 customize IntelItaniumFCompiler
 customize IntelEM64TFCompiler
 customize Gnu95FCompiler
 customize Gnu95FCompiler
 customize Gnu95FCompiler using build_ext
 building 'untitled' extension
 compiling C sources
 C compiler: gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O2 -Wall
 -Wstrict-prototypes -fPIC

 creating /tmp/tmpus7JnZ/tmp
 creating /tmp/tmpus7JnZ/tmp/tmpus7JnZ
 creating /tmp/tmpus7JnZ/tmp/tmpus7JnZ/src.linux-x86_64-2.4
 compile options: '-I/tmp/tmpus7JnZ/src.linux-x86_64-2.4
 -I/usr/lib/python2.4/site-packages/numpy/core/include
 -I/usr/include/python2.4 -c'
 gcc: /tmp/tmpus7JnZ/src.linux-x86_64-2.4/untitledmodule.c
 gcc: /tmp/tmpus7JnZ/src.linux-x86_64-2.4/fortranobject.c
 compiling Fortran 90 module sources
 Fortran f77 compiler: /usr/bin/gfortran -Wall -ffixed-form -fno-second-
 underscore -fPIC -O3 -funroll-loops -march=i686 -mmmx -msse2 -msse -fomit-
 frame-pointer
 Fortran f90 compiler: /usr/bin/gfortran -Wall -fno-second-underscore -fPIC
 -O3 -funroll-loops -march=i686 -mmmx -msse2 -msse -fomit-frame-pointer
 Fortran fix compiler: /usr/bin/gfortran -Wall -ffixed-form -fno-second-
 underscore -Wall -fno-second-underscore -fPIC -O3 -funroll-loops
 -march=i686 -mmmx -msse2 -msse -fomit-frame-pointer
 compile options: '-I/tmp/tmpus7JnZ/src.linux-x86_64-2.4
 -I/usr/lib/python2.4/site-packages/numpy/core/include
 -I/usr/include/python2.4 -c'
 extra options: '-J/tmp/tmpus7JnZ/ -I/tmp/tmpus7JnZ/'
 gfortran:f90: test.f90
 test.f90:0: error: CPU you selected does not support x86-64 instruction
 set
 test.f90:0: error: CPU you selected does not support x86-64 instruction
 set
 test.f90:0: error: CPU you selected does not support x86-64 instruction
 set
 test.f90:0: error: CPU you selected does not support x86-64 instruction
 set
 error: Command "/usr/bin/gfortran -Wall -fno-second-underscore -fPIC -O3
 -funroll-loops -march=i686 -mmmx -msse2 -msse -fomit-frame-pointer
 -I/tmp/tmpus7JnZ/src.linux-x86_64-2.4 -I/usr/lib/python2.4/site-
 packages/numpy/core/include -I/usr/include/python2.4 -c -c test.f90 -o
 /tmp/tmpus7JnZ/test.o -J/tmp/tmpus7JnZ/ -I/tmp/tmpus7JnZ/" failed with
 exit status 1
 }}}

 It seems that f2py is not correctly recognizing the cpu architecture. i.e.
 the compiler option -march=i686 is wrong. As a workaround, one can simply
 disable the architecture optimization:

 {{{
 FARCH='' f2py -c test.f90
 }}}

-- 
Ticket URL: <http://projects.scipy.org/scipy/numpy/ticket/438>
NumPy <http://projects.scipy.org/scipy/numpy>
The fundamental package needed for scientific computing with Python.


More information about the Numpy-tickets mailing list