My 2 cents for what it is worth.
My project started using uBLAS not for its linear algebra capabilities per se, But rather to create fast matrix and vector operations for modeling and signal processing. In other words, a Matlab-like framework for C++.
Long time users of Matlab are used to the fact that it runs much, much fast when you use matrix operations (even element by element ones like ./ and .*) than it does when you do those same calculations in a loop. I saw the uBLAS' utilization of template meta programming as holding the same optimization potential for C++.
Given my druthers, I'd like to see uBLAS re-focus providing a fast computational framework and not try to become everything for everyone (ex: let someone else do the distributed part). Having said that, I think a few things might help to that end.
- Unifying matrix and vector so that people adding functionality don't have to do it twice.
- A library of math.h algorithms implemented as uBLAS functions. I wrote one for double, float, complex<double>, and complex<float> that I'd be happy yo contribute.
- An ability to do fast indexing like Matlab's find() function and x(a) where x is a matrix/vector and a is a matrix/vector. My goal would be to create interpolation routines that took a matrix/vectors of double/floats as an argument. Step #1 is to find the neighborhood of the arguments on the axes. For this, you'd want it to return a matrix/vector of unsigned integers.
The long term goal would be to not only linear algebra, but also coordinate rotations, statistics, filtering, interpolation, Fourier transforms, derivatives, etc. In my vision, many of these other features could be provided by people outside of the core uBLAS team. I'd be very interest to see what the ViennaCL people are up to in their effort to support GPU processors using uBLAS syntax.
Sean Reilly