Re: [f2py] Compiling/linking the Fortran source files manually
Pearu Peterson <[email protected]> Tue, 26 Apr 2011 10:34:31 +0300
| Newsgroups | gmane.comp.python.f2py.user |
|---|---|
| Message-ID | <[email protected]> |
On 04/26/2011 10:19 AM, Ben Forbes wrote: > The version match text is "EM64T-based|Intel\\(R\\) 64", and my > compiler gives "Intel(R) Visual Fortran Intel(R) 64 Compiler > Professional for applications running on Intel(R) 64, Version 11.1 > Build 20100806 Package ID: w_cprof_p_11.1.067". So it should actually > match both intelem and intelvem. I am not sure which numpy.distutils version you have (I am using the one form git repo) and indeed the versions should match when I read the code. So, try to fix the intel.py script so that it will successfully find either intelem or intelvem. You can run the intel.py script directly, just fix one line at the end of the script to compiler = new_fcompiler(compiler='intelem') for instance. Another note: so you have both 32 and 64 bit versions of intel compilers installed in the system. Perhaps numpy.distutils finds 32-bit ifort program first in the PATH variable and hence it never can try the 64-bit ifort. So, check the naming of intel compiler programs and the PATH env. variable. Pearu > On Tue, Apr 26, 2011 at 5:12 PM, Pearu Peterson > <[email protected]> wrote: >> >> >> On 04/26/2011 09:51 AM, Ben Forbes wrote: >>> It finds the intelv compiler, but as before, it's not using >>> appropriate compiler and linker flags. It's also finding the 32-bit >>> compiler, which I think will be a problem when linking in with the >>> 64-bit python27.lib. >> >> Do you have 64-bit intel compiler in your system? >> If so, then the question is why the --help-fcompiler could not >> detect it. Look at the numpy/distutils/fcompiler/intel.py >> script in you Python installation tree and try to find >> out why --fcompiler=intelem is not detected. First, check >> the version_match text and compare with the version string >> that the compiler emits. >> >> HTH, >> Pearu >> >>> >>> >>> On Tue, Apr 26, 2011 at 4:47 PM, Pearu Peterson >>> <[email protected]> wrote: >>>> Ok, thanks for the info. >>>> >>>> So, the command that I would try is >>>> >>>> f2py -c -m foo helloworld.f90 --compiler=mingw32 --fcompiler=intelv >>>> >>>> HTH, >>>> Pearu >>>> >>>> On 04/26/2011 09:39 AM, Ben Forbes wrote: >>>>> IntelVisualFCompiler instance properties: >>>>> archiver = ['C:\\Program Files >>>>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>>>> '/verbose', '/OUT:'] >>>>> compile_switch = '/c ' >>>>> compiler_f77 = ['C:\\Program Files >>>>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>>>> '-FI', '-w90', '-w95', '/F6000000', '/fpe:3', '/Qopenmp', >>>>> '/w', '/I:C:\\Program Files >>>>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>>>> '/nologo', '/O3', '/Qip', '/QaxM'] >>>>> compiler_f90 = ['C:\\Program Files >>>>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>>>> '-FR', '/F6000000', '/fpe:3', '/Qopenmp', '/w', >>>>> '/I:C:\\Program Files >>>>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>>>> '/nologo', '/F6000000', '/fpe:3', '/Qopenmp', '/w', >>>>> '/I:C:\\Program Files >>>>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>>>> '/nologo', '/O3', '/Qip', '/QaxM'] >>>>> compiler_fix = ['C:\\Program Files >>>>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>>>> '-FI', '-4L72', '-w', '/F6000000', '/fpe:3', '/Qopenmp', >>>>> '/w', '/I:C:\\Program Files >>>>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>>>> '/nologo', '/F6000000', '/fpe:3', '/Qopenmp', '/w', >>>>> '/I:C:\\Program Files >>>>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>>>> '/nologo', '/O3', '/Qip', '/QaxM'] >>>>> libraries = [] >>>>> library_dirs = [] >>>>> linker_exe = None >>>>> linker_so = ['C:\\Program Files >>>>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>>>> '-shared', '-shared'] >>>>> object_switch = '/Fo' >>>>> ranlib = None >>>>> version = LooseVersion ('11.1') >>>>> version_cmd = ['C:\\Program Files >>>>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>>>> '/FI', '/c', >>>>> 'c:\\users\\bdforbes\\appdata\\local\\temp\\tmpanswqs\\ra9 >>>>> py5.f', '/o', >>>>> 'c:\\users\\bdforbes\\appdata\\local\\temp\\tmpanswqs\\ra9 >>>>> py5.o'] >>>>> Fortran compilers found: >>>>> --fcompiler=intelv Intel Visual Fortran Compiler for 32-bit apps (11.1) >>>>> Compilers available for this platform, but not found: >>>>> --fcompiler=absoft Absoft Corp Fortran Compiler >>>>> --fcompiler=compaqv DIGITAL or Compaq Visual Fortran Compiler >>>>> --fcompiler=g95 G95 Fortran Compiler >>>>> --fcompiler=gnu GNU Fortran 77 compiler >>>>> --fcompiler=gnu95 GNU Fortran 95 compiler >>>>> --fcompiler=intelem Intel Fortran Compiler for EM64T-based apps >>>>> --fcompiler=intelev Intel Visual Fortran Compiler for Itanium apps >>>>> --fcompiler=intelvem Intel Visual Fortran Compiler for 64-bit apps >>>>> Compilers not available on this platform: >>>>> --fcompiler=compaq Compaq Fortran Compiler >>>>> --fcompiler=hpux HP Fortran 90 Compiler >>>>> --fcompiler=ibm IBM XL Fortran Compiler >>>>> --fcompiler=intel Intel Fortran Compiler for 32-bit apps >>>>> --fcompiler=intele Intel Fortran Compiler for Itanium apps >>>>> --fcompiler=lahey Lahey/Fujitsu Fortran 95 Compiler >>>>> --fcompiler=mips MIPSpro Fortran Compiler >>>>> --fcompiler=nag NAGWare Fortran 95 Compiler >>>>> --fcompiler=none Fake Fortran compiler >>>>> --fcompiler=pg Portland Group Fortran Compiler >>>>> --fcompiler=sun Sun or Forte Fortran 95 Compiler >>>>> --fcompiler=vast Pacific-Sierra Research Fortran 90 Compiler >>>>> For compiler details, run 'config_fc --verbose' setup command. >>>>> >>>>> On Tue, Apr 26, 2011 at 4:36 PM, Pearu Peterson >>>>> <[email protected]> wrote: >>>>>> >>>>>> >>>>>> On 04/26/2011 09:31 AM, Ben Forbes wrote: >>>>>>> When I try that I get an error: >>>>>>> >>>>>>> numpy.distutils.fcompiler.CompilerNotFound >>>>>> >>>>>> What is the output of the following command: >>>>>> >>>>>> f2py -c --help-fcompiler >>>>>> >>>>>> Pearu >>>>>> >>>>>>> On Tue, Apr 26, 2011 at 4:07 PM, Pearu Peterson >>>>>>> <[email protected]> wrote: >>>>>>>> >>>>>>>> >>>>>>>> On 04/26/2011 06:09 AM, Ben Forbes wrote: >>>>>>>>> On Mon, Apr 25, 2011 at 5:34 PM, Ben Forbes<[email protected]> wrote: >>>>>>>>>> I'm having trouble getting f2py (from Enthought 7.0.2 64-bit) to play >>>>>>>>>> nicely with my compiler (Intel Visual Fortran 11 build 067). I am >>>>>>>>>> running Windows 7 64-bit. My source file is just a hello world >>>>>>>>>> subroutine, and I am running "f2py -c helloworld.f90". >>>>>>>>> >>>>>>>>> I've made some progress on this: >>>>>>>>> - I use "f2py helloworld.f90" to get helloworldmodule.c. >>>>>>>>> - I copy over fortranobject.c and fortranobject.h. >>>>>>>>> - I manually compile the C files using mingw 64-bit to get .o files. >>>>>>>> >>>>>>>> Btw, have you tried >>>>>>>> >>>>>>>> f2py -c -m foo helloworld.f90 --compiler=mingw32 --fcompiler=intelem >>>>>>>> >>>>>>>> Pearu >>>>>>>> >>>>>>>>> - I manually compile helloworld.f90 to .obj. >>>>>>>>> - Now I to use lib.exe (from Visual C) to link everything together. >>>>>>>>> - I rename the resultant .lib to helloworld.pyd. >>>>>>>>> >>>>>>>>> The problem I'm currently getting is that when I try to "import >>>>>>>>> helloworld", it tells me: >>>>>>>>> >>>>>>>>> ImportError: DLL load failed: %1 is not a valid Win32 application. >>>>>>>>> >>>>>>>>> It appears I need a DLL with an entry point. How would I achieve this? >>>>>>>>> >>>>>>>>> Here are my commands for reference: >>>>>>>>> >>>>>>>>> C:\MinGW_64\bin\x86_64-w64-mingw32-gcc.exe -g -DDEBUG -DMS_WIN64 >>>>>>>>> -mno-cygwin -O0 -Wall -Wstrict-prototypes >>>>>>>>> -IC:\Python27\lib\site-packages\numpy\core\include >>>>>>>>> -IC:\Python27\include -IC:\Python27\PC -c fortranobject.c -o >>>>>>>>> fortranobject.o >>>>>>>>> >>>>>>>>> C:\MinGW_64\bin\x86_64-w64-mingw32-gcc.exe -g -DDEBUG -DMS_WIN64 >>>>>>>>> -mno-cygwin -O0 -Wall -Wstrict-prototypes >>>>>>>>> -IC:\Python27\lib\site-packages\numpy\core\include >>>>>>>>> -IC:\Python27\include -IC:\Python27\PC -c helloworldmodule.c -o >>>>>>>>> helloworldmodule.o >>>>>>>>> >>>>>>>>> "C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\intel64\ifort.exe" >>>>>>>>> /MT /c helloworld.f90 >>>>>>>>> >>>>>>>>> "C:\Program Files (x86)\Microsoft Visual Studio >>>>>>>>> 9.0\VC\Bin\x86_amd64\lib.exe" fortranobject.o helloworldmodule.o >>>>>>>>> helloworld.obj c:\Python27\libs\python27.lib /LIBPATH:"C:\Program >>>>>>>>> Files (x86)\Intel\Compiler\11.1\067\lib\ia32" /LIBPATH:"C:\Program >>>>>>>>> Files (x86)\Microsoft Visual Studio 9.0\VC\Lib" /LIBPATH:"C:\Program >>>>>>>>> Files (x86)\Microsoft Visual Studio 9.0\VC\PlatformSDK\Lib" >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> The first >>>>>>>>>> apparent errors are when ifort is called: >>>>>>>>>> >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/shared' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/shared' >>>>>>>>>> ifort: command line warning #10161: unrecognized source type >>>>>>>>>> 'c:\users\bdforbes\appdata\local\temp\tmpu >>>>>>>>>> pntzq\Release\users\bdforbes\appdata\local\temp\tmpupntzq\src.win-amd64-2.7\untitledmodule.o'; >>>>>>>>>> object f >>>>>>>>>> ile assumed >>>>>>>>>> ifort: command line warning #10161: unrecognized source type >>>>>>>>>> 'c:\users\bdforbes\appdata\local\temp\tmpu >>>>>>>>>> pntzq\Release\users\bdforbes\appdata\local\temp\tmpupntzq\src.win-amd64-2.7\fortranobject.o'; >>>>>>>>>> object fi >>>>>>>>>> le assumed >>>>>>>>>> ifort: command line warning #10161: unrecognized source type >>>>>>>>>> 'c:\users\bdforbes\appdata\local\temp\tmpu >>>>>>>>>> pntzq\Release\helloworld.o'; object file assumed >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/LC:\Python27\libs' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option >>>>>>>>>> '/LC:\Python27\PCbuild\amd64' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/lpython27' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/OU' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/OT' >>>>>>>>>> ifort: command line warning #10155: ignoring option '/optimize'; >>>>>>>>>> argument required >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/O.' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/O\' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/Ou' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/On' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/Ol' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/Oe' >>>>>>>>>> ifort: command line warning #10006: ignoring unknown option '/O.' >>>>>>>>>> ifort: command line remark #10010: option '/Op' is deprecated and will >>>>>>>>>> be removed in a future release. >>>>>>>>>> See '/help deprecated' >>>>>>>>>> >>>>>>>>>> Is it possible for me to provide f2py with a pre-compiled object file >>>>>>>>>> or static library? I know how to produce .obj and .lib, not sure how >>>>>>>>>> to turn those into .o or .a or .so. >>>>>>>>>> >>>>>>>>>> Thanks for your help. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Benjamin D. Forbes >>>>>>>>>> School of Physics >>>>>>>>>> The University of Melbourne >>>>>>>>>> Parkville, VIC 3010, Australia >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> f2py-users mailing list >>>>>>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >>>>>>>> http://cens.ioc.ee/mailman/listinfo/f2py-users >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> f2py-users mailing list >>>>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >>>>>> http://cens.ioc.ee/mailman/listinfo/f2py-users >>>>>> >>>>> >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> f2py-users mailing list >>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >>>> http://cens.ioc.ee/mailman/listinfo/f2py-users >>>> >>> >>> >>> >> >> _______________________________________________ >> f2py-users mailing list >> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >> http://cens.ioc.ee/mailman/listinfo/f2py-users >> > > >