- 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
morpheus
as a package with different subpackages. - Enabled test environment for the core functionality using
googletest
framework. - Enabled GPU support through the Host-Device model.
- Support for container mirroring through
create_mirror
andcreate_mirror_container
as well asHostMirror
trait. - Efficient deep copies for containers across same/different memory spaces through the
Morpheus::copy
routine. - Added
Dot
andWAXPBY
alogirhtms forDenseVector
. - Added
Reduction
andScan
routines forDenseVector
. - Added
convert
algorithms for conversion across different containers on Host space. - Algorithm dispatch through
Kokkos::Serial
,Kokkos::OpenMP
andKokkos::Cuda
for the custom kernels. - Added
Morpheus::Serial
,Morpheus::OpenMP
andMorpheus::Cuda
to be used for dispatching Kokkos kernels in algorithms. SpMV
implementation forCooMatrix
,CsrMatrix
andDiaMatrix
available forKokkos::Serial
,Kokkos::OpenMP
,Kokkos::Cuda
and Kokkos equivalent spaces - except for currently the Kokkos implementation forCooMatrix
.- Enabled shallow copy semantics between
DynamicMatrix
and concrete containers based on the active type of theDynamicMatrix
. - Enabled mirroring and deep copy semantics for the
DynamicMatrix
.
- Introduces
DynamicMatrix
container, a polymorphic container that holds a closed set of Sparse Matrix Storage Formats. - Use of variadic templates to create a uniform interface under
DynamicMatrix
container 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
DenseVector
andDenseMatrix
- Added implementation of
CooMatrix
,CsrMatrix
andDiaMatrix
. - Kokkos integration to use the different memory and execution spaces.
- Interface for dispatching
multiply
andprint
operations 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.