Skip to content
Cem Bassoy edited this page Jul 20, 2018 · 35 revisions

Adding tensor support to Boost::uBLAS

This wiki describes the implementation of Boost's 2018 GSoC project: adding tensor support to Boost's uBLAS


General

Boost​

Boost is a collection of free, peer-reviewed C++ libraries, see here. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use.

Boost.uBlas

Boost.uBLAS (aka Basic Linear Algebra Subroutines), is part of collection of the Boost C++ Libraries and provides BLAS level 1, 2, 3 functionality for dense, packed and sparse matrices, see here. The design and implementation unify mathematical notation via operator overloading and efficient code generation via expression templates.

Google Summer of Code (GSoC)

Google Summer of Code is a global program focused on bringing more student developers into open source software development. More information can be found here. A project description on the GSoC site can be found here.

Proposal

The initial GSoC 2018 project proposal from Boost.uBLAS is to add tensors to the uBLAS library. The proposal can be found here. My project proposal for Boost and GSoC can be found here.

Mentors

My mentors were David Bellot and Stefan Seefeld.


Project Management

Milestones and Tasks

According to my project proposal, I have defined seven milestones each of which are two weeks heavy. Every milestone contains several issues or tasks. All milestones and thus issues are completed. A complete list of all completed issues is provided witin the kanban board done column.

  1. Community Bonding with completed tasks.
  2. Tensor Template Class with completed tasks
  3. Interoperability with completed tasks
  4. Expression Templates with completed tasks
  5. Tensor Contraction with completed tasks
  6. Einstein Notation with completed tasks
  7. Documentation with the completed tasks

Implementation

Branch

All the branch information during the whole process of GSoC 2018, including issues, milestones and the kanban board are in the branch tensor that is a fork of uBLAS.

Commit List

The commit list can be found here.

Source Code

With only few exceptions, the original code of the uBLAS's development branch has not been modified. Source code of the tensor extension is placed within the tensor folder. However, all necessary header files are included in the file tensor.hpp.

Documentation

The documentation is added in the uBLAS documentation folder and more specifically in the tensor documentation folder.

Example Code

Example code is placed in the example folder.

Proposals for uBLAS

Important discussion topics and proposals for uBLAS can be found on the kanban board proposals column.

Future Work for uBLAS.Tensor project

Future work for this tensor extentsion of uBLAS can be found on the kanban board future work column.