Boost logo

Boost :

From: David Abrahams (abrahams_at_[hidden])
Date: 2001-03-12 19:46:31


----- Original Message -----
From: <walter_at_[hidden]>
>
> > _ Expression Templates for performant and easy interface (e.g. `y =
> A *
> > x + b` without tmp's)
>
> The only vague alternative approach seems to be lazy evaluation
> (without expression templates).

Yes, and I have been wondering recently how much of a performance boost is
achieved through expression templates. After all, if matrices are big, the
cost of operations should significantly outweigh the cost of runtime
expression analysis. I know that some people are using the analogous
technique to expression-templates in Python (I love the parallels to generic
programming in Python -- it's so.. cute), so it must be a significant win
even at runtime.

> Mathematical notation is a necessity, otherwise we should stay with
> Fortran :-).
>
> > _ dense and sparse matrices
>
> Sparse matrices seem somewhat controversial to me. BLAS for example
> handles only certain types of dense matrices like general, symmetric,
> banded etc. BLAS does not support sparse matrices.

For the work I will be doing, sparse matrices are an absolute neccessity.
They also seem to be supported by a large fraction of the C++ numerics
libraries I've seen, indicating that other people see them as mainstream.
Isn't BLAS, like, centuries old or something (spoken in valley-boy ingenue
voice)? See also http://math.nist.gov/spblas/

> > _ support for slices / subarrays
>
> Yes.
>
> > _ common linear algebra operations (addition, multiplication of
> > matrices, ....)
>
> Yes, to be more specific: a boost matrix library should enable us to
> emulate BLAS.
>
> > There are already some libraries doing all/some of the above ...
>
> ... very well :-).
>
> IMHO libraries to mention are:
> BLAS
> Blitz++
> POOMA
> MTL
>
> One may doubt, whether we are able to determine goals, which justify
> a boost approach to a new matrix library.

My very brief experience shows that at the very least, we should consider
complete documentation to justify an effort. The question remains whether
there is any non-redundant code to be written. I would appreciate hearing
opinions.

-Dave


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