Boost logo

Boost :

From: Matthias Troyer (troyer_at_[hidden])
Date: 2002-07-01 12:33:29


Dear Boosters,

I would like to add my comments to the ublas review.

First of all I found the ublas authors very quick in responding
to questions, eager to explain things and receptive to new ideas.
This is an important consideration for such a complex package.

Next, I strongly support a Boost matrix library, having seen the
need for one in my own research all too often.

As far as ublas is concerned I want to raise the following issues,
that apply to what I expect of a Boost matrix library and where
ublas might need to be improved, either before acceptance or
shortly thereafter:

1.) I would prefer to be able to write a matrix-vector product
     as M*v, without the need to use the prod(M,v) function.
     Similarly I would like to be able to write a vector inner product
     as something like x.transpose()*y or transpose(x)*y

2.) If a Boost matrix library, such as ublas, wants to find
     acceptance in the scientific community at which it is aimed,
     performance at BLAS/Atlas level are a MUST. A 5-10%
     penalty might be acceptable, but factors of 2 or larger
     are a no-go. After all we run our codes on multi-million $
     machines, and a factor of two in speed can go into thousands
     of dollars (fortunately not real money for most of us, but
     one should keep the actual cost of ones' research in mind)

3.) Related to that, we need optimal performance of an expression
     like A*B*v, as was discussed by others. All reasonable expressions
     a user might write should be near-optimal in performance for dense
     matrices.

4.) Finally, there is one other essential issue: extensibility of the
     library. I need to be able to interface my own data structures for
     vectors and matrices. Often we need to take a data structure provided
     by another library as matrix or vector. If it is not possible to use
     them directly, it should be easy to write wrappers, adn this should
     be documented well and examples given.

5.) Interfaces to LAPACK calls at least for dense matrices.

If a Boost matrix library fulfills criteria 2-5 (criterion 1 is
nice-to-have but a must) I can envision using it myself and endorsing
it for other large-scale scientific code developments that are
currently being started and where I am partially involved.
If performance and extensibilty are not guaranteed, ublas would
remain just-another matrix library and would not be able
to be establish itself as a standard.

My sincere wish is that the Boost matrix library will be efficient
and flexible enough to become the long-missing standard and I urge
the ublas authors to seriously think about the performance issues
that were already raised by others. I would love to switch to
a Boost matrix library as soon as possible, would use it
in all my research code, and also in my lectures and student
projects.

I also hope that the ublas authors can turn ublas into such
an efficient library and would then vote yes for inclusion into
boost. If however, the performance problems cannot be solved
at this time I would rather wait another year for a better
solution than to get an inefficient Boost matrix library now.

Matthias


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk