[Trilinos-Users] Trilinos with ATLAS

Bartlett, Roscoe A rabartl at sandia.gov
Tue Jun 5 12:22:44 MDT 2007


Why are there three versions of BLAS in the link line?  You had better do an 'nm' and grep for the same basic names in each of these libraries.
 
Ross

________________________________

From: James Willenbring [mailto:jmwille at sandia.gov] 
Sent: Tuesday, June 05, 2007 12:20 PM
To: Bartlett, Roscoe A; 'Virginia Costa'
Cc: Hooper, Russell; trilinos-users at software.sandia.gov
Subject: RE: [Trilinos-Users] Trilinos with ATLAS



I think you might need to put -latlas on the right side of -lcblas and -lf77blas for the reasons that Ross stated.

 

-lcblas -lf77blas -latlas

 

Not

 

-latlas -lcblas -lf77blas

 

Jim

 

________________________________

From: Bartlett, Roscoe A [mailto:rabartl at sandia.gov] 
Sent: Tuesday, June 05, 2007 1:12 PM
To: Virginia Costa; Willenbring, James M
Cc: Hooper, Russell; trilinos-users at software.sandia.gov
Subject: RE: [Trilinos-Users] Trilinos with ATLAS

 

I would suggest doing an 'nm' on the atlas libraries and seeing what the symbols are actually called.  Also, it looks like you have -latlas listed before -lepetra and most linkers do not allow that.  You have to list the libraries in decending order according to their dependencies.  For exmaple, I think your link line should look like:

 

   -laztecoo -lepetra -lepetra_test -lepetraext -lifpack -lml -lteuchos -ltriutils -llapack -L/usr/local/trilinos-7.0.8/linux-serial-atlas/lib -L/usr/local/atlas/lib -latlas -lcblas -lf77blas

 

The dependencies should be ordered correctly above.  If you still get link errors, you will have to use 'nm' and see where you find the symbols.

 

You can play with the link line manually to see what works.

 

Cheers,

 

Ross

________________________________

From: trilinos-users-bounces at software.sandia.gov [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf Of Virginia Costa
Sent: Tuesday, June 05, 2007 11:50 AM
To: Willenbring, James M
Cc: Hooper, Russell; trilinos-users at software.sandia.gov
Subject: Re: [Trilinos-Users] Trilinos with ATLAS

I did as you said and it work well, but when I try to run ex12.cpp (epetra example from didasko), it returns the following error

g++     -o dist/Debug/GNU-Linux-x86/teste-trilinos-atlas build/Debug/GNU-Linux-x86/teste- trilinos.o -L/usr/local/trilinos-7.0.8/linux-serial-atlas/lib -L/usr/local/atlas/lib -latlas -lcblas -lf77blas -laztecoo -lepetra -lepetra_test -lepetraext -lifpack -lml -lteuchos -ltriutils -llapack 
/usr/local/trilinos- 7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::TRMM(char, char, char, char, int, int, double, double const*, int, double*, int) const':
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:174: undefined reference to `dtrmm_' 
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::TRMM(char, char, char, char, int, int, float, float const*, int, float*, int) const':
/usr/local/trilinos-7.0.8 /packages/epetra/src/./Epetra_BLAS.cpp:166: undefined reference to `strmm_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::SYMM(char, char, int, int, double, double const*, int, double const*, int, double, double*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:158: undefined reference to `dsymm_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::SYMM(char, char, int, int, float, float const*, int, float const*, int, float, float*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:149: undefined reference to `ssymm_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::GEMM(char, char, int, int, int, double, double const*, int, double const*, int, double, double*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:141: undefined reference to `dgemm_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::GEMM(char, char, int, int, int, float, float const*, int, float const*, int, float, float*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:132: undefined reference to `sgemm_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::GEMV(char, int, int, double, double const*, int, double const*, double, double*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:123: undefined reference to `dgemv_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::GEMV(char, int, int, float, float const*, int, float const*, float, float*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:116: undefined reference to `sgemv_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::AXPY(int, double, double const*, double*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:109: undefined reference to `daxpy_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::AXPY(int, float, float const*, float*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:105: undefined reference to `saxpy_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::IAMAX(int, double const*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:101: undefined reference to `idamax_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::IAMAX(int, float const*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:97: undefined reference to `isamax_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::COPY(int, double const*, double*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:92: undefined reference to `dcopy_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::COPY(int, float const*, float*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:87: undefined reference to `scopy_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::SCAL(int, double, double*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:82: undefined reference to `dscal_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::SCAL(int, float, float*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:77: undefined reference to `sscal_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::NRM2(int, double const*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:73: undefined reference to `dnrm2_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::NRM2(int, float const*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:69: undefined reference to `snrm2_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::DOT(int, double const*, double const*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:65: undefined reference to `ddot_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::DOT(int, float const*, float const*, int, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:61: undefined reference to `sdot_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::ASUM(int, double const*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:57: undefined reference to `dasum_'
/usr/local/trilinos-7.0.8/linux-serial-atlas/lib/libepetra.a(Epetra_BLAS.o): In function `Epetra_BLAS::ASUM(int, float const*, int) const': 
/usr/local/trilinos-7.0.8/packages/epetra/src/./Epetra_BLAS.cpp:53: undefined reference to `sasum_'
collect2: ld returned 1 exit status
make[1]: ** [dist/Debug/GNU-Linux-x86/teste-trilinos-atlas] Erro 1
make[1]: Saindo do diretório `/root/Desktop/testes-trilinos/teste-trilinos-atlas' 
make: ** [.build-impl] Erro 2

Build failed. Exit value 2.

Did you have any idea about it?

thanks.
Virginia.

2007/6/5, James Willenbring < jmwille at sandia.gov <mailto:jmwille at sandia.gov> >: 

Virginia ,

 

When I have built Trilinos using ATLAS I have needed to specify other libraries along with the main atlas library.  For example:

 

--with-blas="-L/atlas/build/dir/lib/ -lcblas -lf77blas -latlas"

 

You will also need a separate LAPACK library because not all of the necessary LAPACK routines are available in ATLAS.  If between Russell's suggestion and my suggestion you don't get it working, you can send me <build_tree>/packages/teuchos/config.log and I can take a look at that file if you would like.

 

Jim 

 

________________________________

From: trilinos-users-bounces at software.sandia.gov [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf Of Russell Hooper
Sent: Tuesday, June 05, 2007 10:30 AM
To: Virginia Costa; trilinos-users at software.sandia.gov 
Subject: Re: [Trilinos-Users] Trilinos with ATLAS

 


Virginia,

It appears that the version of blas you are trying to link against was built with a different fortran underscore specification (likely double) than what is expected by Trilinos (single underscore suffix).

You should be able to tell your fortran compiler to not use double underscores in the suffix of fortran routines, eg. with the gcc compilers, you can specify this via,

--with-fflags="-fno-second-underscore"

It may be that this flag or an equivalent for your compiler is set and should not be, in which case you will need to allow double underscore suffixes to link against your available blas/lapack libraries.

Hope this helps,

Russell



On 6/5/07 9:03 AM, "Virginia Costa" <virscosta at gmail.com> wrote:

Hi,

Have anybody already used Trilinos with ATLAS?

I´m trying, but, when I configure trilinos with the options --with-blas=/atlas/build/dir/lib/libatlas.a, it returns

checking for dgemm_ in /usr/local/ATLAS/atlas-build/lib/libatlas.a... no 
configure: error: Cannot find blas library, specify a path using --with-blas=DIR/LIB (for example --with-blas=/usr/path/lib/libcxml.a)
configure: error: /bin/sh './configure' failed for packages/teuchos

Can somebody help me, please?

Thanks.

Virginia.

________________________________

_______________________________________________
Trilinos-Users mailing list
Trilinos-Users at software.sandia.gov
http://software.sandia.gov/mailman/listinfo/trilinos-users

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://software.sandia.gov/mailman/private/trilinos-users/attachments/20070605/01e700a5/attachment-0001.html


More information about the Trilinos-Users mailing list