| | 154 | |
| | 155 | === Boost.uBLAS === |
| | 156 | |
| | 157 | 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. |
| | 158 | |
| | 159 | 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. |
| | 160 | |
| | 161 | 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... |
| | 162 | |
| | 163 | |
| | 164 | Our ideas for a GSOC project are the following: |
| | 165 | - 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. |
| | 166 | - use this new architecture to propose implementation for the following: |
| | 167 | - fixed-sized vectors and matrices with optimization |
| | 168 | - a true * operator for vector/vector, vector/matrix and matrix/matrix multiplication |
| | 169 | - an architecture to choose at compile time the best algorithm to apply if several are available (very relevant to multiplication for example), |
| | 170 | - ideas and examples on how to implement SIMD and multicore operations. |
| | 171 | |
| | 172 | 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). |
| | 173 | |
| | 174 | Mentor: David Bellot (david.bellot[at]gmail.com) |