Changes between Version 1 and Version 2 of SoC2013


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

--

Legend:

Unmodified
Added
Removed
Modified
  • SoC2013

    v1 v2  
    2222
    2323Projects from previous years can be found [wiki:SoCPrevious here]. There are still a number of interesting projects found in these pages.
     24
     25
     26=== Boost.uBLAS ===
     27
     28First 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
     30Boost.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
     32Said 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
     35Our 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
     43Inspiration 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
     45Mentor: David Bellot (david.bellot[at]gmail.com)