Re: matlisp migration trouble (missing symbol)

[email protected] Mon, 20 Dec 2004 19:45:43 -0500
Newsgroups gmane.lisp.matlisp.user
Message-ID <[email protected]>
Hey,

Try adding an external declaration and a dummy call to "dpotrf_"
in the file lazy-loader.c.  Then do a remake.

I originally picked the name "lazy" loader because, upon loading
a dynamic library, on some platforms, only those symbols which are
explicitly referenced were being loaded.  This is the purpose of
the dummy call.

----- Original Message -----
From: rif <[email protected]>
Date: Monday, December 20, 2004 3:25 pm
Subject: Re: [Matlisp-users] matlisp migration trouble (missing symbol)

> 
> > >>>>> "rif" == rif  <[email protected]> writes:
> > 
> >     rif> Once matlab is loaded, I have a file where I def-
> fortran-routine
> >     rif> dpotrf.  This scheme works fine on my laptop, but on 
> the other
> >     rif> machine, when I try to load this file, I get the error:
> > 
> >     rif> Undefined foreign symbol: "dpotrf_"
> >     rif>    [Condition of type KERNEL:SIMPLE-PROGRAM-ERROR]
> > 
> > This sounds like dpotrf is not in the matlisp LAPACK/BLAS library.
> > Are you sure both platforms have identical libraries?  It may happen
> > that we don't compile all the LAPACK routines if we don't have a
> > matlisp interface to them.
> > 
> > Ray
> 
> OK, my understanding is increasing, but I'm not all the way there yet.
> As I now understand, matlisp does not by default load all of lapack,
> but only what it needs.  When you specify --with-atlas= at config
> time, matlisp loads the atlas lapack library (this is also a 
> subset of
> lapack, but it contains the routines I need).  So this explains 
> why my
> stuff doesn't work without atlas, on either the laptop or the new
> machine.
> 
> What I still don't get is why, when I specify a --with-atlas=, it
> works on the laptop but not the new machine.  Looking into
> lazy-loader.lisp, part of the call to ext::load-foreign includes the
> arguments (to be tokenized):
> 
> "-L/cbcl/cbcl01/rif/Software/ATLAS/lib/Linux_P4SSE2_4/" " " "-llapack
> -lcblas -lf77blas -latlas" " "
> 
> This code is clearly being run (if I add some made-up library name I
> get an error), so it's finding (and AFAIK loading) the libraries it
> wants.  Furthermore, dpotrf_ appears to be in the library:
> 
> [rif@node-06 Linux_P4SSE2_4]$ pwd
> /cbcl/cbcl01/rif/Software/ATLAS/lib/Linux_P4SSE2_4
> [rif@node-06 Linux_P4SSE2_4]$ nm liblapack.a  | grep dpotrf_
> 00000000 T atl_f77wrap_dpotrf__
>         U atl_f77wrap_dpotrf__
> 00000000 T dpotrf_
> 
> Nevertheless, when I try to compile and then load a file 
> containing a
> def-foreign-function for dpotrf, it fails on this machine with an
> "Undefined symbol dpotrf_ error" (this works on my laptop).  Note that
> I seem to be able to just load the .lisp file directly, but compiling
> it then loading it yields the undefined symbol error --- I don't know
> if this is relevant.
> 
> In case anyone wants it, I've put the file matlisp-ext-lapack.lisp in
> http://fpn.mit.edu/Downloads.  My goal is to, after loading matlisp,
> be able to compile and load this file.
> 
> As a side question, is there any easy way to tell what exactly library
> files ext::load-foreign is actually picking up?  This could be helpful
> for debugging purposes.
> 
> Again, any help is appreciated.
> 
> Cheers,
> 
> rif
> 
> 
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide
> Read honest & candid reviews on hundreds of IT Products from real 
> users.Discover which products truly live up to the hype. Start 
> reading now. 
> http://productguide.itmanagersjournal.com/
> _______________________________________________
> Matlisp-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/matlisp-users
> 



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/