Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
GSOC 2020 - Native Distributed Linear Algebra Implementations


Project: Native Distribute Linear Algebra Implementations

Organization: CHAPEL

Rahul Ghangas

Phone: +61 0426126128


  1. Introduction
  2. Outcome of contributions
  3. Design Discussions
  4. Code Contribution (Merged Pull requests)
  5. Code Contribution (Open Pull requests)
  6. Further Work


Until now, Chapel has depended on external libraries like BLAS and LAPACK to provide access to standard linear algebra functions. Furthermore, Chapel does not support linear algebra functions for distributed computation. The world is becoming increasingly connected, from the Internet of Things and social networks, to ‘big data’ and cloud computing. Networked systems are not just relevant to information technology; they are already moving into the engineering and cyber-physical systems domains. With clusters and networked systems being commonplace, distributed computing offers magnitudes of faster performance for the large amount of data we deal with today.

This project aims to extend the LinearAlgebra module to support distributed implementations of existing procedures. Another goal is to improve the performance of existing native implementations of standard linear algebra functions and provide native implementations for procedures that currently depend on external libraries.

Worked on:

  • #15976 #16077 Improving local to perform competitively to CrayBLAS

  • #15835 Implemented a new version of distributed matrix-matrix multiplication for PRK (Parallel Research Kernels)

  • #16107 Implemented Distributed

    • Generalized to any distribution supported by Chapel
  • #16106 Include error generation for procedures that do not support distributed arrays (matrices/vectors)

  • #16160 Improved local LinearAlgebra.diag() to support matrices with any generalized domain

  • #16147 Implemneted distributed LinearAlgebra.diag()

    • Overloads for the user to
      • pass in a output distributed array
      • let the procedure decide the output distribution
  • #16206 Implemented distributed LinearAlgebra.transpose()

    • Supports inversion of distributed domain to support faster transpose
  • #16205 Implemented local LinearAlgebra.svd()

    • Work on parallelizing reference implementation from Numerical Recipes Ch-2 Section-6
  • #16255 Implemented local LinearAlgebra.inv()

    • Gauss-Jordan Elimination

Design Discussions

Code Contribution (Merged Pull requests)

Code Contribution (Open Pull requests)

Further Work

  • Distributed Singular Value Decomposition
  • Distributed Matrix Inverse
  • Distributed Sparse Matrix-Matrix Multiplication
  • Distributed Sparse Singular Value Decomposition
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment