Skip to content

ChASE code structure fully revised

Latest
Compare
Choose a tag to compare
@nidode nidode released this 28 Jan 15:01
· 2 commits to master since this release

ChASE has gone a complex restructuring process that included major changes in the hierarchical folder structure, a clearer division between parallel implementations and a new Test-Driven-Development which introduced unit testing for many of its routines. In particular:

  • A clear division between Chase algorithm and their implementation has been maintained
  • The name of the base virtual class has changed from Chase to ChaseBase
  • All Implementation for sequential and parallel CPU/GPU architecture has been clearly separated and based on the new ChaseBase class.
  • All reliance on external numerical libraries (BLAS, LAPACK, etc.) has been separated and templated
  • Utilities for the initialization of pure MPI, cuda-aware MPI and NCCL grids has been redefined and clearly separated
  • Implementation of the kernels have been grouped in a linalg folder which contains
    • matrix classes for shared-memory CPU and GPU architectures
    • matrix classes for distinct distribution of matrices and vectors
    • shared memory kernels
    • distributed CPU kernels
    • single GPU kernels
    • distributed GPU kernels
  • Functionalities for mixed precision have been added
  • Unit testing has been introduced for
    • the grid functionalities
    • matrix type functionalities
    • all kernels for the separate cases (CPU, GPU, distributed CPU, etc.)
  • Examples have been generalized and redistribution of matrices has been abstracted
  • A template for Collaboration Agreement (CLA) has been added