Boost logo

Boost :

From: Michael Stevens (Michael.Stevens_at_[hidden])
Date: 2004-06-05 09:08:36


Hi Dave, hi all,

I read with interest you plans for reviving MTL. It is certainly a shame that
development of MTL was been stagnant for so long. It certainly had many
interesting design features and I used it for all my work for many years.
That said I switched to using and developing uBLAS long ago and it has an
excellent design.

On Saturday 05 June 2004 13:53, David Abrahams wrote:
> "Neal D. Becker" <ndbecker2_at_[hidden]> writes:
> > David Abrahams wrote:
> >> Tom Brinkman <reportbase_at_[hidden]> writes:
> >>> In short, lets tell the world that this is the
> >>> premiere place for advanced mathmatical library
> >>> development, as I believe that it could be.
> >>>
> >>> Comments?
> >>
> >> 1.  I think oonumerics.org has the jump on us here, though the site
> >>     seems to be douwn at this moment.
> >>
> >> 2.  I will be starting work on a rewrite of MTL (the Matrix
> >>     Template Library) for linear algebra soon.
> >
> > What do you plan for MTL?  How is it different than ublas?
>
> MTL is aimed at linear algebra, whereas IIUC ublas is not.  

Well the L and A in uBLAS certainly stand for Linear Algebra! Of course the B
stands for Basic and uBLAS's primary aim is to provide the standard set of
BLAS functions in a modern C++ environment. Of course as it stands the
complete uBLAS library is more then just the BLAS functions and includes some
common Linear Algebra algorithms and many useful types.

That said I think it is important to separate BLAS functions from domain
specific linear algebra algorithm development. This is something that proved
itself since the seventies.

> There's a lot more to what's in the current plan than I can lay out
> here, but the focus will be on support for different kinds of matrices
> with combinations of these aspects
>
>       o Shape
>       o Orientation
>       o Symmetry
>       o Sparsity
>       o Blocking
>       o Upper / Lower storage
>       o Unit diagonal
Other then the many forms of blocking (other then banded) uBLAS supports all
these in its design. This really is its strength! To a large extent they can
even be combine these properties where it makes mathematical sense. For
example you can wrap up one of a number of sparse matrix types in a symmetric
adaptor.
>
> and operations like:
>
>       o scalar-vector (vector-scalar) multiplication
>       o vector addition (and subtraction)
>       o apply linear operator (left)
>       o norm
>       o inner product
>       o triangular solve
Other then 'apply linear operator' these are all in uBLAS!

> with expression templates, and of course, zero abstraction penalty ;-)
Of course uBLAS does this all with ET, but the abstraction penalty may not be
zero :-)

Other then the lack of ET in the current MTL the big difference between the
two libraries is the definition of iterators. Neither design seems to be
perfect with regard to efficiency.

Since uBLAS is already in Boost and has a well established and clean user
syntax it would seem strange to ignore it. For the perspective of building
further Linear Algebra algorithms it would not be too hard to use the syntax
sufficiently portably so that a future MTL with expression templates could
not be used interchangeably.

Michael

-- 
___________________________________
Michael Stevens Systems Engineering
Navigation Systems, Estimation  and
                 Bayesian Filtering
    http://bayesclasses.sf.net
___________________________________

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