Towards an object oriented programming framework for parallel matrix algorithms

2016 
A C++ programming framework (Slabber) is introduced which supports matrix algorithms on distributed and shared memory parallel architectures in an object oriented way. It has the following goals: First, the algorithm implementation should be as convenient as possible by making parallelization details transparent to the algorithm implementation. Second, the choice of architecture (MPI or threads) and the choice of data distribution must not require changing or adapting the algorithm. These goals are achieved by a new approach to decompose matrix operations such as the matrix multiplication into communication free sub-operators, and letting the framework take care of data redistributions between those sub-operators. As a usage example, an iterative algorithm for the non-negative matrix decomposition is implemented using the framework, serving as a usage tutorial and performance test. The results are promising and improve over a straight forward ScaLapack implementation while providing a much cleaner and easier algorithm formulation.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    17
    References
    2
    Citations
    NaN
    KQI
    []