Advice on linking D programs to fortran77 blas/lapack

Michael Gratton mgratton at math.duke.edu
Thu May 22 11:33:29 PDT 2008


GDC did the trick quite nicely.  Thanks for the help!  I didn't get a chance to try out ATLAS.  We have fancy Intel BLAS/LAPACK that we paid money for, so it seems like a shame not to use them :) 

(But the single-thread performance difference is <5% for problems I run...)

Yeah, and a D success story: the D templates allow me to write default BLAS-type routines for nice vector classes using long double ('real') precision.  When the template is instantiated with double or float, I can just link to the standard BLAS/LAPACK.  This really clears up a huge headache that was involved in testing things at different precisions.

Jonathan Crapuchettes Wrote:

> Michael,
> Do you know if you can use the ATLAS package instead? I have it working 
> currently with D. I found it a lot easer to work with since there is a C header 
> file that can almost be directly ported to D.
> 
> If you are not interested in ATLAS, you should try using gdc to compile your 
> program. It might help with the problems that you are encountering.
> 
> Hope that helps,
> JC
> 
> Michael Gratton wrote:
> > Hello,
> > 
> > I'm trying to link a D program to the BLAS and LAPACK libraries (numerical linear algebra packages usually written in FORTRAN77).
> > 
> > I've written an extern (C) {} block much like I would in C/C++ to provide "headers" for the functions I want to call, and then tried to build the program by
> > 
> > dmd test.d /usr/lib/libblas.a /usr/lib/liblapack.a
> > 
> > This nearly works, but LAPACK complains that several _gfortran symbols are undefined, such as:
> > 
> > (.text+0x83): undefined reference to `_gfortran_compare_string'
> > (.text+0x341): undefined reference to `_gfortran_copy_string'
> > (.text+0x69): undefined reference to `_gfortran_st_write'
> > 
> > ...and so on.  Has anyone else had luck with this kind of linking?  Am I missing a library that gcc magically includes when linking C and F77?  Am I just flat trying to link wrong with the dmd command?
> > 
> > Thanks!
> > --mg




More information about the Digitalmars-d mailing list