Changes between Version 14 and Version 15 of SoC2011


Ignore:
Timestamp:
Feb 19, 2013, 11:05:56 AM (10 years ago)
Author:
David Bellot
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoC2011

    v14 v15  
    152152
    153153Mentor: Boris Schaeling (boris[at]highscore.de)
     154
     155=== Boost.uBLAS ===
     156
     157First 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
     159Boost.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
     161Said 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
     164Our 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
     172Inspiration 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
     174Mentor: David Bellot (david.bellot[at]gmail.com)