| 24 | |
| 25 | |
| 26 | === Boost.uBLAS === |
| 27 | |
| 28 | First of all, we have a page with the list of future and desired new features here: http://sourceforge.net/apps/mediawiki/ublas/index.php?title=Main_Page. Students are encourage to consult this page. |
| 29 | |
| 30 | Boost.uBLAS is a fast implementation of linear algebra procedures, of for short it's a vector and matrix library. Actually it's indeed a vector AND matrix library and this is one of the main problem. Vectors are matrices, at least in standard math textbook, but not in Boost.uBLAS. They are represented as 2 separate classes and do not share code really. Not enough to be efficient. Moreover, vector being considered as fixed-sized vectors, they are not as versatile as STL vectors (but it's not the same concept) and not as accurate as a true linear algebra vector, that is they do not implement the notion of being row-vector or column-vector. |
| 31 | |
| 32 | Said like that, it's not that important you would say, but by merging vector and matrix classes, we could share a lot of code and optimize even further. Second of all, by having a unified architecture we could start implementing modern acceleration techniques that lacks in Boost.uBLAS, like SIMD computations, multi-core, GPU, etc... |
| 33 | |
| 34 | |
| 35 | Our ideas for a GSOC project are the following: |
| 36 | - unify representation of vector and matrices into a unique matrix class. Keep compatibility with previous code by providing a default vector<> representation that would inherit for matrix<>. Improve it too by adding more template parameters like size and orientation. |
| 37 | - use this new architecture to propose implementation for the following: |
| 38 | - fixed-sized vectors and matrices with optimization |
| 39 | - a true * operator for vector/vector, vector/matrix and matrix/matrix multiplication |
| 40 | - an architecture to choose at compile time the best algorithm to apply if several are available (very relevant to multiplication for example), |
| 41 | - ideas and examples on how to implement SIMD and multicore operations. |
| 42 | |
| 43 | Inspiration from other libraries like Eigen, Armadillo, GotoBLAS, etc... is highly recommended (after all, that's one of the raison d'etre of Free Software). |
| 44 | |
| 45 | Mentor: David Bellot (david.bellot[at]gmail.com) |