Boost logo

Ublas :

From: Peter Schmitteckert (peter_at_[hidden])
Date: 2005-06-09 02:48:56


Salut,

On Thu, 9 Jun 2005, Matthias Troyer wrote:

> > Its it possible via the bindings library to use blas. Unfortunatly a
> > design goal of ublas is to be as general as possible. Otherwise blas
> > are very special. So AFAIR we decided not to invest to much time into
> > connecting ublas and blas, but to concentrate on correctness of the
> > algorithms. I think the consens was first to provide an easy to use
> > interface and (long long time later ;-) maximize performance.
>
> I would then suggest to CLEARLY state this in the beginning of the
> documentation so that people interested in serious calculations do
> not bother using ublas at all but look for alternatives right away.

I'm using ublas in a serious application and it works quiet well.
It's quiet easy to write an interface for BLAS/LAPACK for the
time-critical calls. But you have to be sure, that BLAS is
very limited. The Complex-conjugated matrix is missing, mixing
complex and double is not so easy. Sometimes I need this functionality,
and ublas serve it well.

Performance is important, and without high performance I would not be
allowed to use the super-computers I have access to,
but correctness is more important. And please be aware,
that there are vendor supplied BLAS implementations which are just
very lazy with accuracy, especially on the Itanium 2, so a reliable
implementation is crucial for me to check the correctness of the code.
And yes, I do get different results, depending on the BLAS implementation
I use in the case I work with not-so well conditioned matrices, and
it is _not_ a bug in my code.

Of course it is not optimal. But at the time I started to use ublas
I was not aware of any supported C++ matrix library that
could serve my demands. (Need for hermitian matrices, mixing types,
slices, ...), and I still see no need to switch. I can assure you,
that we're timing the overhead of ublas for all important architectures
that we use, and that the overhead is small (using our own
BLAS-interface).

Best wishes,
Peter