[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