Re: [f2py] f2py and lapack DLARUV
Paul Anton Letnes <[email protected]> Fri, 20 May 2011 09:12:59 -0700
| Newsgroups | gmane.comp.python.f2py.user |
|---|---|
| Message-ID | <[email protected]> |
Aha, I see. I would still consider having a glance at how scipy wraps lapack, though. Maybe you can re-use some of their (open source!) code. Paul On 20. mai 2011, at 07.58, Stephane Raynaud wrote: > I can't since my goal is to use a series of third party specific > fortran modules that use lapack. > However, I think about rewritting (one day...) these modules in python > and use scipy as you suggest. > > On Fri, May 20, 2011 at 4:36 PM, Paul Anton Letnes > <[email protected]> wrote: >> Just a thought, maybe I'm missing something, but: can't you simply use scipy? It contains thin wrappers for alot of LAPACK calls in: >> from scipy.linalg.lapack import flapack as lapack >> Now, I think this will give you a list of routine names that are wrapped: >> for routine in dir(lapack): >> print routine >> >> There is probably some "bloat" by using all of scipy, but it will save you a lot of compiling. Also, you could look at how scipy wraps lapack, and learn from that. >> >> YMMV >> Paul >> >> On 20. mai 2011, at 05.02, Stephane Raynaud wrote: >> >>> Since the only subroutine used from lapack is DLARUV with no >>> dependencies, I folowed your excellent idea : >>> ---- >>> f2py -m testmod testfile.f90 -h testfile.pyf >>> f2py testfile.pyf dlaruv.f >>> --- >>> >>> It failed on the second phase : >>> --- >>> |...] >>> Block: DLARUV >>> Post-processing (stage 2)... >>> Tip: If your original code is Fortran source then you must use -m option. >>> [...] >>> TypeError: All blocks must be python module blocks but got 'subroutine' >>> --- >>> >>> However, it work using the same idea with : >>> ---- >>> f2py -m testmod testfile.f90 -h testfile.pyf # setup interface only >>> for testfunc >>> f2py -c -m testmod testfile.f90 testfile.pyf dlaruv.f # build >>> --- >>> >>> >>> Thus, this solution is sufficient for me, thanks alot !!! >>> >>> However, it would be great to have a solution for the when using the >>> lapack/blas library itself. >>> >>> On Fri, May 20, 2011 at 11:35 AM, Pearu Peterson >>> <[email protected]> wrote: >>>> >>>> >>>> On 05/20/2011 10:39 AM, Stephane Raynaud wrote: >>>>> Hi, >>>>> >>>>> trying to build a fortran extension linked to lapack (f77), I faced a >>>>> problem that I reduced to the following example. >>>>> >>>>> ------------ testfile.f90 ------------ >>>>> subroutine testfunc >>>>> integer,parameter :: n=2 >>>>> integer :: iseed(4) >>>>> real(kind=8) :: x(n) >>>>> iseed = (/0,1,3,4/) >>>>> call DLARUV(iseed, n, x) >>>>> end subroutine testfunc >>>>> -------------------------------------- >>>>> >>>>> Then : f2py -c -m testmod -llapack -lblas >>>>> -L/home/raynaud/soft/lapack_gfortran/lib testfile.f90 >>>>> >>>>> It rises the following error (using gfortran) : >>>>> >>>>> /usr/bin/gfortran -Wall -Wall -shared >>>>> /tmp/tmpzBIKPf/tmp/tmpzBIKPf/src.linux-x86_64-2.6/testmodule.o >>>>> /tmp/tmpzBIKPf/tmp/tmpzBIKPf/src.linux-x86_64-2.6/fortranobject.o >>>>> /tmp/tmpzBIKPf/test.o -L/home/raynaud/soft/lapack_gfortran/lib >>>>> -L/soft/cdat/5.2.0/lib -llapack -lblas -lpython2.6 -lgfortran -o >>>>> ./test.so >>>>> /usr/bin/ld: >>>>> /home/raynaud/soft/lapack_gfortran/lib/liblapack.a(dlaruv.o): >>>>> relocation R_X86_64_32S against `.data' can not be used when making a >>>>> shared object; recompile with -fPIC >>>>> /home/raynaud/soft/lapack_gfortran/lib/liblapack.a: could not read >>>>> symbols: Bad value >>>>> >>>>> >>>>> BLAS and LAPACK where compilated with gfortran and options '-fPIC -O3'. >>>> >>>> Are you absolutely sure? >>>> >>>> Can you try creating the testmod without using lapack and blas libraries >>>> but their sources? For example: >>>> >>>> f2py -m testmod testfile.f90 -h testfile.pyf >>>> f2py testfile.pyf /path/to/lapack/src/*.f /path/to/blas/src/*.f >>>> >>>> Pearu >>>> >>>>> I tried to use the DATA statement directly in a subroutine that I >>>>> converted to a python module, and it worked. >>>>> >>>>> >>>>> Any idea ? >>>>> >>>>> Thanks. >>>>> >>>> >>>> _______________________________________________ >>>> f2py-users mailing list >>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >>>> http://cens.ioc.ee/mailman/listinfo/f2py-users >>>> >>> >>> >>> >>> -- >>> Stephane Raynaud >>> >>> _______________________________________________ >>> 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 >> > > > > -- > Stephane Raynaud > > _______________________________________________ > f2py-users mailing list > f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] > http://cens.ioc.ee/mailman/listinfo/f2py-users