- Added updating main diagonal of sparse matrix in MatrixOperations. Update is only performed on non-zero elements of the main diagonal i.e doesn't change the sparsity pattern of the matrix.
- Added interface to inspect the sparse formats using their enum tag and facilitate format switching for dynamic matrix.
- Fixed errors in deep copy semantics for the
DynamicMatrix. - Added command line parsing for selecting dynamically which format to switch to.
- Added execution space trait in containers so that any member functions will use those for determining where to be executed.
- Build
morpheusas a package with different subpackages. - Enabled test environment for the core functionality using
googletestframework. - Enabled GPU support through the Host-Device model.
- Support for container mirroring through
create_mirrorandcreate_mirror_containeras well asHostMirrortrait. - Efficient deep copies for containers across same/different memory spaces through the
Morpheus::copyroutine. - Added
DotandWAXPBYalogirhtms forDenseVector. - Added
ReductionandScanroutines forDenseVector. - Added
convertalgorithms for conversion across different containers on Host space. - Algorithm dispatch through
Kokkos::Serial,Kokkos::OpenMPandKokkos::Cudafor the custom kernels. - Added
Morpheus::Serial,Morpheus::OpenMPandMorpheus::Cudato be used for dispatching Kokkos kernels in algorithms. SpMVimplementation forCooMatrix,CsrMatrixandDiaMatrixavailable forKokkos::Serial,Kokkos::OpenMP,Kokkos::Cudaand Kokkos equivalent spaces - except for currently the Kokkos implementation forCooMatrix.- Enabled shallow copy semantics between
DynamicMatrixand concrete containers based on the active type of theDynamicMatrix. - Enabled mirroring and deep copy semantics for the
DynamicMatrix.
- Introduces
DynamicMatrixcontainer, a polymorphic container that holds a closed set of Sparse Matrix Storage Formats. - Use of variadic templates to create a uniform interface under
DynamicMatrixcontainer for operations likeresize(), which for different formats can have a different signature. - Use of metaprogramming techniques for generalising the run-time switching across formats.
- Use of metaprogramming techniques to examine the traits of a vector and matrix.
- Added implementation of
DenseVectorandDenseMatrix - Added implementation of
CooMatrix,CsrMatrixandDiaMatrix. - Kokkos integration to use the different memory and execution spaces.
- Interface for dispatching
multiplyandprintoperations using tag dispatching to distinguish amonst formats. - Extended interface to dispatch operations to different architectures using SFINAE. Each container should reside in the same execution space.