When you link with the ATLAS BLAS with a Fortran code (e.g LAPACK), you
need to provide libatlas.a but also the library libf77blas.a from ATLAS.
The ATLAS library libf77blas.a has all the Fortran drivers for the BLAS
and then it calls ATLAS routines in libatlas.a, so libf77blas.a is where
everything is: sscal_, ssdot_, sgemv_, etc. libf77blas.a should be in the
the same directory as libatlas.a and when you link, do not forget to put
libf77blas.a first, then libatlas.a.
(Note that ATLAS also provide C drivers with libcblas.a.)
Now, if I build with: lib: blaslib lapacklib tmglib these objects GET
INSERTED into into ATLAS' libatlas.a and then I can repeat with: lib:
lapacklib tmglib with no problems.
It looks like you have been testing LAPACK not with ATLAS BLAS but with
the reference BLAS. Hard to tell without seeing the Makefile.
2) Also, do I gain anything by rebuilding liblapack.a by replacing some
routines with ATLAS optimized LAPACK routines (as suggested by ATLAS
team) if I have already built my LAPACK over ATLAS in the first place?
Yes, you will have a gain. In general, it's a good idea to use ATLAS
LAPACK optimized routines whenever ATLAS has the functionnality.
Julien.
On Wed, 28 Feb 2007, Martin M. Ossowski wrote:
Hi Jack,
I have a question about buliding LAPACK over ATLAS.
I noticed that when built with:
lib: lapacklib tmglib
testing fails:
../../lapack_LINUX.a(slauu2.o): In function `slauu2_':
slauu2.f:(.text+0xb1): undefined reference to `sscal_'
slauu2.f:(.text+0x101): undefined reference to `sdot_'
slauu2.f:(.text+0x15f): undefined reference to `sgemv_'
slauu2.f:(.text+0x1f8): undefined reference to `sscal_'
slauu2.f:(.text+0x24c): undefined reference to `sdot_'
slauu2.f:(.text+0x2ab): undefined reference to `sgemv_'
since these objects are not in the libatlas.a .
Now, if I build with:
lib: blaslib lapacklib tmglib
these objects GET INSERTED into into ATLAS' libatlas.a
and then I can repeat with:
lib: lapacklib tmglib
with no problems.
1) I dont't quite understand what xerbla.o are as opposed
to ATL_xerbla.o and, even more importantly, is it safe
to use such modified libatlas.a in applications?
2) Also, do I gain anything by rebuilding liblapack.a by
replacing some routines with ATLAS optimized LAPACK
routines (as suggested by ATLAS team) if I have already
built my LAPACK over ATLAS in the first place?
I will greatly appreciate answers to these 2 questions.
Thanks you very much.
Sincerely,
Martin.
|