-
Notifications
You must be signed in to change notification settings - Fork 1
Home
This wiki describes the implementation of Boost's 2018 GSoC project: adding tensor support to Boost's uBLAS
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 (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 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.
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.
My mentors were David Bellot and Stefan Seefeld.
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.
- Community Bonding with completed tasks.
- Tensor Template Class with completed tasks
- Interoperability with completed tasks
- Expression Templates with completed tasks
- Tensor Contraction with completed tasks
- Einstein Notation with completed tasks
- Documentation with the completed tasks
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.
The commit list can be found here.
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.
The documentation is added in the uBLAS documentation folder and more specifically in the tensor documentation folder.
Example code is placed in the example folder.
Important discussion topics and proposals for uBLAS can be found on the kanban board proposals column.
Future work for this tensor extentsion of uBLAS can be found on the kanban board future work column.