|
using | traits = ContainerTraits< DynamicMatrix, ValueType, Properties... > |
|
using | type = typename traits::type |
|
using | base = MatrixBase< DynamicMatrix, ValueType, Properties... > |
|
using | tag = typename MatrixFormatTag< Morpheus::DynamicMatrixFormatTag >::tag |
|
using | value_type = typename traits::value_type |
|
using | non_const_value_type = typename traits::non_const_value_type |
|
using | size_type = typename traits::size_type |
|
using | index_type = typename traits::index_type |
|
using | non_const_index_type = typename traits::non_const_index_type |
|
using | array_layout = typename traits::array_layout |
|
using | backend = typename traits::backend |
|
using | memory_space = typename traits::memory_space |
|
using | execution_space = typename traits::execution_space |
|
using | device_type = typename traits::device_type |
|
using | memory_traits = typename traits::memory_traits |
|
using | HostMirror = typename traits::HostMirror |
|
using | pointer = typename traits::pointer |
|
using | const_pointer = typename traits::const_pointer |
|
using | reference = typename traits::reference |
|
using | const_reference = typename traits::const_reference |
|
using | variant_type = typename MatrixFormats< ValueType, Properties... >::variant |
|
using | type = MatrixBase< DynamicMatrix, ValueType, Properties... > |
| The traits associated with the particular container.
|
|
using | traits = ContainerTraits< DynamicMatrix, ValueType, Properties... > |
| The type of the indices held by the container.
|
|
using | size_type = typename traits::size_type |
|
enum | { is_hostspace = std::is_same<MemorySpace, Kokkos::HostSpace>::value
} |
|
enum | { is_managed = MemoryTraits::is_unmanaged == 0
} |
|
using | value_type = ValueType |
| The type of values held by the container.
|
|
using | const_value_type = typename std::add_const< ValueType >::type |
| The const type of values held by the container.
|
|
using | non_const_value_type = typename std::remove_const< ValueType >::type |
| The non-const type of values held by the container.
|
|
using | index_type = IndexType |
| The type of indices held by the container.
|
|
using | size_type = size_t |
| The size type of the container.
|
|
using | non_const_index_type = typename std::remove_const< IndexType >::type |
| The non-const type of indices held by the container.
|
|
using | array_layout = ArrayLayout |
| The storage layout of data held by the container.
|
|
using | backend = Backend |
| The backend out of which algorithms will be dispatched from.
|
|
using | execution_space = ExecutionSpace |
| The space in which member functions will be executed in.
|
|
using | memory_space = MemorySpace |
| The space in which data will be stored in.
|
|
using | device_type = Morpheus::Device< execution_space, memory_space, backend > |
| A device aware of the execution, memory spaces and backend.
|
|
using | memory_traits = MemoryTraits |
| Represents the user's intended access behaviour.
|
|
using | host_mirror_backend = typename Morpheus::HostMirror< backend >::backend |
| The host equivalent backend.
|
|
using | type = Container< value_type, index_type, array_layout, backend, memory_traits > |
| The complete type of the container.
|
|
using | HostMirror = Container< non_const_value_type, non_const_index_type, array_layout, Morpheus::Device< typename host_mirror_backend::execution_space, typename host_mirror_backend::memory_space, typename host_mirror_backend::backend >, typename Kokkos::MemoryManaged > |
| The host mirror equivalent for the container. More...
|
|
using | pointer = typename std::add_pointer< type >::type |
| The pointer type of the container.
|
|
using | const_pointer = typename std::add_pointer< typename std::add_const< type >::type >::type |
| The const pointer type of the container.
|
|
using | reference = typename std::add_lvalue_reference< type >::type |
| The reference type of the container.
|
|
using | const_reference = typename std::add_lvalue_reference< typename std::add_const< type >::type >::type |
| The const reference type of the container.
|
|
|
| ~DynamicMatrix ()=default |
| The default destructor.
|
|
| DynamicMatrix (const DynamicMatrix &)=default |
| The default copy contructor (shallow copy) of a DynamicMatrix container from another DynamicMatrix container with the same properties.
|
|
| DynamicMatrix (DynamicMatrix &&)=default |
| The default move contructor (shallow copy) of a DynamicMatrix container from another DynamicMatrix container with the same properties.
|
|
DynamicMatrix & | operator= (const DynamicMatrix &)=default |
| The default copy assignment (shallow copy) of a DynamicMatrix container from another DynamicMatrix container with the same properties.
|
|
DynamicMatrix & | operator= (DynamicMatrix &&)=default |
| The default move assignment (shallow copy) of a DynamicMatrix container from another DynamicMatrix container with the same properties.
|
|
| DynamicMatrix () |
| Constructs an empty DynamicMatrix object.
|
|
template<typename Matrix > |
| DynamicMatrix (const Matrix &src, typename std::enable_if< is_variant_member_v< Matrix, variant_type > >::type *=nullptr) |
| Constructs a DynamicMatrix from another concrete format. More...
|
|
template<typename Matrix > |
std::enable_if< is_variant_member_v< Matrix, variant_type >, DynamicMatrix & >::type | operator= (const Matrix &matrix) |
| Assigns a DynamicMatrix from another concrete format. More...
|
|
template<class VR , class... PR> |
| DynamicMatrix (const DynamicMatrix< VR, PR... > &src, typename std::enable_if< is_format_compatible< DynamicMatrix, DynamicMatrix< VR, PR... > >::value >::type *=nullptr) |
| Constructs a DynamicMatrix from another compatible DynamicMatrix. More...
|
|
template<class VR , class... PR> |
std::enable_if< is_format_compatible< DynamicMatrix, DynamicMatrix< VR, PR... > >::value, DynamicMatrix & >::type | operator= (const DynamicMatrix< VR, PR... > &src) |
| Assigns a DynamicMatrix from another compatible DynamicMatrix. More...
|
|
template<class VR , class... PR> |
void | resize (const DynamicMatrix< VR, PR... > &src) |
| Resizes DynamicMatrix with the shape and number of non-zero entries of the active type of another DynamicMatrix with different parameters. More...
|
|
template<typename Matrix > |
void | resize (const Matrix &src, typename std::enable_if< is_variant_member_v< Matrix, variant_type > >::type *=nullptr) |
| Resizes DynamicMatrix with the shape and number of non-zero entries of another Matrix with possibly a different storage format. More...
|
|
template<class VR , class... PR> |
DynamicMatrix & | allocate (const DynamicMatrix< VR, PR... > &src) |
| Allocates DynamicMatrix with the shape and number of non-zero entries of the active type of another DynamicMatrix with different parameters. More...
|
|
int | active_index () const |
| Returns the format index assigned to the active type of the DynamicMatrix container. More...
|
|
int | format_index () const |
| Returns the format index assigned to the active type of the DynamicMatrix container. More...
|
|
formats_e | active_enum () const |
| Returns the format enum assigned to the active type of the DynamicMatrix container. More...
|
|
formats_e | format_enum () const |
| Returns the format enum assigned to the active type of the DynamicMatrix container. More...
|
|
void | activate (const formats_e index) |
| Changes the active type of the DynamicMatrix container to the one given by the enum index parameter. More...
|
|
void | activate (const int index) |
| Changes the active type of the DynamicMatrix container to the one given by the index parameter. More...
|
|
const variant_type & | const_formats () const |
| Returns a const-reference to the variant container that holds the supported formats in the DynamicMatrix . More...
|
|
variant_type & | formats () |
| Returns a reference to the variant container that holds the supported formats in the DynamicMatrix . More...
|
|
| MatrixBase () |
| Default constructor. More...
|
|
| MatrixBase (size_type rows, size_type cols, size_type entries=0) |
| Construct a MatrixBase object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries. More...
|
|
void | resize (size_type rows, size_type cols, size_type entries) |
| Resizes MatrixBase with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries. More...
|
|
size_type | nrows () const |
| Number of rows of the matrix. More...
|
|
size_type | ncols () const |
| Number of columns of the matrix. More...
|
|
size_type | nnnz () const |
| Number of non-zeros of the matrix. More...
|
|
void | set_nrows (const size_type rows) |
| Set the number of rows of the matrix. More...
|
|
void | set_ncols (const size_type cols) |
| Set the number of columns of the matrix. More...
|
|
void | set_nnnz (const size_type nnz) |
| Set the number of non-zeros of the matrix. More...
|
|
MatrixStructure | structure () const |
| The specialized structure of the matrix e.g Symmetric. More...
|
|
MatrixOptions | options () const |
| Information about specific characteristics of the matrix e.g has short rows. More...
|
|
void | set_structure (MatrixStructure op) |
| Set the structure of the matrix. More...
|
|
void | set_options (MatrixOptions op) |
| Set the characteristics of the matrix. More...
|
|
template<class
ValueType, class... Properties>
class Morpheus::DynamicMatrix< ValueType, Properties >
Implementation of the Dynamic Sparse Matrix Format Representation.
- Template Parameters
-
ValueType | Type of values to store |
Properties | Optional properties to modify the behaviour of the container. Sensible defaults are selected based on the configuration. Please refer to impl/Morpheus_ContainerTraits.hpp to find out more about the valid properties. |
- Overview
- The DynamicMatrix container is a two-dimensional container that acts as a superset of all the available matrix storage formats supported in Morpheus. The purpose of such a container is to enable run-time switching across the different formats under a single unified interface such that we can take advantage of the format that is best suited for the given computation and target hardware. It is a polymorphic container in the sense that it can store scalar or integer type values, on host or device depending how the template parameters are selected.
- Example
#include <Morpheus_Core.hpp>
int main(){
using index_array_type = typename Matrix::index_array_type;
using value_array_type = typename Matrix::value_array_type;
index_array_type off(4, 0), j(4, 0);
value_array_type v(4,0);
off[0] = 0; off[1] = 2; off[2] = 3; off[3] = 4;
j[0] = 0; v[0] = 1;
j[1] = 2; v[1] = 2;
j[2] = 2; v[2] = 3;
j[3] = 1; v[3] = 4;
Matrix Acsr(3, 3, 4, off, j, v);
A = Acsr;
Morpheus::print(A);
}
Implementation of the Compressed-Sparse Row (CSR) Sparse Matrix Format Representation.
Definition: Morpheus_CsrMatrix.hpp:91
Implementation of the Dynamic Sparse Matrix Format Representation.
Definition: Morpheus_DynamicMatrix.hpp:104
void activate(const formats_e index)
Changes the active type of the DynamicMatrix container to the one given by the enum index parameter.
Definition: Morpheus_DynamicMatrix.hpp:388