1) Ease the use of uBLAS as a standalone library. Being able to easily
extract uBLAS from boost would help large projects ship with an
embedded uBLAS version.
This can be easily achieved for any boost library with a tool called bcp (you can find it in the boost distribution). Among other things it can extract only the part of boost your project uses and ease the task of including it directly into your project.
2) Provide open-source, BSD-like, versions of standard linear algebra
algorithms such as sparse and dense matrix decompositions, matrix
functions and so on.
That is already on my todo list. I would like in the future to mimic some of the basic functions of matlab or similar programs.
At lot of things exist in LAPLACK, ATLAS, etc... and we can access to it through the bindings. However, it is not a bad idea to have such algorithms in the library too. Then the user will choose which implementation he wants. Another purpose is to test the ublas with more complex and standardized examples and provide pedagogic content.
That's all ideas for the time being, because my first task is the documentation.
3) Provide a unified API for these linear algebra algorithms with a
means of easily switching between different backends (basic open
source implementation included in uBLAS or external "binded"
implementation). This would make uBLAS usable without external
libraries but would also allow it to benefit from optimized
implementations when they are available elsewhere.
Eh eh, of course that is The great idea. I would love to something like this at runtime :-D
boost:set_engine("native");
matrix<double> m1 = my_complex_algo();
boost::set_engine("cuda");
matrix<double> m2 = my_heavy_algo();
boost::set_engine("quantum_computer");
matrix<double> m3 = my_super_secret_algo();
Let seriously think about it and see what is really feasible. But, hey, why not....
(more plausible to work with some kind of conditional compilation, not sure though...)
More seriously, integration of different computational backends (well, bindings) is on the todo list and I want to emphasize the excellent work that has already been done in boost::numeric::bindings on that topic.
Anyway, all great ideas we'll have to work on.
Cheers,
David
--
David Bellot, PhD