[SciPy-user] How to tell scipy setup that I have a INTEL fortran ATLAS/BLAS/LAPACK instead of g77
Fri Feb 29 09:36:18 CST 2008
Sorry for taking so long for the answer.
David Cournapeau <firstname.lastname@example.org> writes:
> Berthold Höllmann wrote:
>> No matter what I do, I can't tell scipy to use the INTEL fortran API
>> conventions instead of the g77 conventions for fortran routine names
>> containing underscores:
>> hoel@pc047299:scipy-0.6.0 nm /usr/local/gltools/linux/lib/libf77blas_ifc91.so.3.8|grep atl_f77wrap_dtrsv
>> 0000cfe0 T atl_f77wrap_dtrsv_
>> hoel@pc047299:scipy-0.6.0 nm build/lib.linux-i686-2.5/scipy/linsolve/_zsuperlu.so| grep atl_f77wrap_dtrsv
>> U atl_f77wrap_dtrsv__
>> How can I set up scipy in a way that superlu tries to access
>> atl_f77wrap_dtrsv_ instead of atl_f77wrap_dtrsv__?
> You don't give enough details to answer you completely (which
> compiler are you using for ATLAS and for numpy), but assuming you did
> compile atlas with intel compiler and numpy with g77, this will not
> work. You cannot tell g77 to follow "intel" convention (different
> mangling is only the tip of the iceberg; other issues are more subtle
> and more difficult to track). You should use the same fortran compiler
> for numpy and for atlas. Mixing fortran compilers is not a good idea,
> and will often give unpredictable results.
> If your problem is telling numpy to be compiled with intel fortran
> compiler, than this is what you should use:
> python setup.py build --fcompiler=intel
I am aware of some of the problems when mixing object files from
different compiler brands. Numpy is compiled using Intel Fortran
compiler as well as scipy. The affected code is pure C code. The
superLU code somewhere seems to use a wrapper to call BLAS routines
like "DTRSV" from C. These wrapper routines seem to include ATLAS
header files that define mappings from the routine name to some ATLAS
wrapper routine name. This ATLAS wrapper name depends on the FORTRAN
compiler that ATLAS is build for. The ATLAS header files use defines
like "Add_" and "Add__" to distinguish between different FORTRAN
compiler naming conventions. When compiling "superLU" from scipy
"Add__" seems to used(some kind of default I guess), whereas "Add_"
would be right for INTEL Fortran.
Germanischer Lloyd AG
Phone: +49(0)40 36149-7374
Fax: +49(0)40 36149-7320
This e-mail and any attachment thereto may contain confidential information and/or information protected by intellectual property rights for the exclusive attention of the intended addressees named above. Any access of third parties to this e-mail is unauthorised. Any use of this e-mail by unintended recipients such as total or partial copying, distribution, disclosure etc. is prohibited and may be unlawful. When addressed to our clients the content of this e-mail is subject to the General Terms and Conditions of GL's Group of Companies applicable at the date of this e-mail.
If you have received this e-mail in error, please notify the sender either by telephone or by e-mail and delete the material from any computer.
GL's Group of Companies does not warrant and/or guarantee that this message at the moment of receipt is authentic, correct and its communication free of errors, interruption etc.
Germanischer Lloyd AG, 31393 AG HH, Hamburg, Vorstand: Dr. Hermann J. Klein, Dr. Joachim Segatz, Pekka Paasivaara, Vorsitzender des Aufsichtsrats: Dr. Wolfgang Peiner
More information about the SciPy-user