Morpheus 1.0.0
Dynamic matrix type and algorithms for sparse matrices
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Morpheus Namespace Reference

Generic Morpheus interfaces. More...

Namespaces

namespace  Custom
 Namespace for Custom Backend definitions.
 
namespace  Generic
 Namespace for Generic Backend definitions.
 

Classes

struct  BinaryContainer
 A wrapper that constructs a new container type that holds two container types. More...
 
struct  concat< TypeList< Ts... >, TypeList< Us... > >
 Concatenates types from two TypeList in a single TypeList. More...
 
class  ContainerTraits
 Traits class for accessing attributes of a Container (Matrix or Vector) More...
 
struct  CooFormatTag
 Tag used to mark containers as Matrix containers (Sparse) with Coordinate (COO) Storage Format. More...
 
class  CooMatrix
 Implementation of the Coordinate (COO) Sparse Matrix Format Representation. More...
 
struct  cross_product< TypeList< Ts... >, TypeList< Us... > >
 Generates the cross product of the types from two TypeList. More...
 
struct  CsrFormatTag
 Tag used to mark containers as Matrix containers (Sparse) with Compressed Sparse Row (CSR) Storage Format. More...
 
class  CsrMatrix
 Implementation of the Compressed-Sparse Row (CSR) Sparse Matrix Format Representation. More...
 
struct  CustomBackend
 A wrapper that converts a valid space into a custom backend. More...
 
struct  Default
 A Default tag is used to denote the use of default types. More...
 
class  DenseMatrix
 The DenseMatrix container is a two-dimensional dense container that contains contiguous elements. 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. More...
 
struct  DenseMatrixFormatTag
 Tag used to mark containers as Matrix containers (Dense) with Dense Format. More...
 
class  DenseVector
 The DenseVector container is a one-dimensional container that contains contiguous elements. 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. More...
 
struct  DenseVectorFormatTag
 Tag used to mark containers as Vector Containers (Dense) with Dense Format. More...
 
struct  Device
 A type that binds together the execution, memory space and backend. More...
 
struct  DiaFormatTag
 Tag used to mark containers as Matrix containers (Sparse) with Diagonal (DIA) Storage Format. More...
 
class  DiaMatrix
 Implementation of the Diagonal (DIA) Sparse Matrix Format Representation. More...
 
class  DynamicMatrix
 Implementation of the Dynamic Sparse Matrix Format Representation. More...
 
struct  DynamicMatrixFormatTag
 Tag used to mark containers as Matrix container with Dynamic Storage Format. More...
 
class  Exception
 
class  FormatConversionException
 
struct  generate_binary_typelist
 Generates a TypeList of all combinations of BinaryContainer from two TypeLists of containers. More...
 
struct  generate_unary_typelist
 Generates a TypeList of UnaryContainer where each container type is generated from each combination of types in the U type list. More...
 
struct  GenericBackend
 A wrapper that converts a valid space into a generic backend. More...
 
struct  has_access
 Takes arbitrary number of containers and checks if ExecSpace has access to the memory space of all of them. Note that each container must have a valid memory_space trait. More...
 
class  has_backend
 Checks if the given type T has a valid supported backend. More...
 
class  has_cuda_execution_space
 Checks if the given type T has a Cuda execution space. More...
 
class  has_custom_backend
 Checks if the given type T has a valid custom backend i.e has a CustomBackend container. More...
 
class  has_execution_space
 Checks if the given type T has a valid supported execution space. More...
 
class  has_generic_backend
 Checks if the given type T has a valid generic backend i.e has a GenericBackend container. A valid generic backend is also assumed to be any valid Kokkos Execution Space, Memory Space or Device. More...
 
class  has_hip_execution_space
 Checks if the given type T has a HIP execution space. More...
 
class  has_host_execution_space
 Checks if the given type T has a supported Host execution space. More...
 
class  has_host_memory_space
 Checks if the given type T has a valid supported Host memory space. More...
 
class  has_index_type
 Checks if the given type T has a valid index type i.e an integral. More...
 
class  has_layout
 Checks if the given type T has a layout i.e has as a array_layout member trait it self and is one of the supported layouts. More...
 
class  has_memory_space
 Checks if the given type T has a valid supported memory space. More...
 
class  has_openmp_execution_space
 Checks if the given type T has an OpenMP execution space. More...
 
class  has_same_format
 Checks if the two types have the same format i.e both are valid containers and have the same tag member trait. More...
 
class  has_same_index_type
 Checks if the two types have the same valid index type. More...
 
class  has_same_layout
 Checks if the two types have the same valid supported layout. More...
 
class  has_same_memory_space
 Checks if the two types have the same valid supported memory space. More...
 
class  has_same_value_type
 Checks if the two types have the same valid value type. More...
 
class  has_serial_execution_space
 Checks if the given type T has a Serial execution space. More...
 
class  has_tag_trait
 Checks if T has tag as a member trait. More...
 
class  has_value_type
 Checks if the given type T has a valid value type i.e a scalar. More...
 
struct  HostMirror
 Given a space S, the HostMirror will generate the appropriate Host backend. More...
 
struct  IndexedTypeList
 Compile-time type list with indexed access. More...
 
struct  IndexType
 A wrapper that checks if the provided type is an integral type. More...
 
struct  InitArguments
 
class  InvalidInputException
 
class  IOException
 
class  is_compatible
 Checks if the two types are compatible containers i.e are in the same memory space and have the same layout, index and value type. More...
 
class  is_container
 Checks if the given type T is a valid Morpheus Container i.e is either a valid matrix or a vector container that satisfies is_matrix_container or is_vector_container. More...
 
class  is_coo_matrix_format_container
 Checks if the given type T is a valid COO Sparse Matrix Format Container i.e is valid matrix container and has CooFormatTag as tag member trait. More...
 
class  is_csr_matrix_format_container
 Checks if the given type T is a valid CSR Sparse Matrix Format Container i.e is valid matrix container and has CsrFormatTag as tag member trait. More...
 
class  is_cuda_execution_space
 Checks if the given type T is a Cuda execution space. More...
 
class  is_default
 Checks if the given type T is a Default type. More...
 
class  is_dense_matrix_container
 A valid Dense Matrix container is the one that has a valid Dense Matrix tag i.e satisfies the has_dense_matrix_tag check. More...
 
class  is_dense_matrix_format_container
 Checks if the given type T is a valid Dense Matrix Format Container i.e is valid matrix container and has DenseMatrixFormatTag as tag member trait. More...
 
class  is_dense_vector_format_container
 Checks if the given type T is a valid Dense Vector Format Container i.e is valid vector container and has DenseVectorFormatTag as tag member trait. More...
 
class  is_dia_matrix_format_container
 Checks if the given type T is a valid DIA Sparse Matrix Format Container i.e is valid matrix container and has DiaFormatTag as tag member trait. More...
 
class  is_dynamic_matrix_container
 A valid Dynamic Matrix container is the one that has a valid Dynamic Matrix tag i.e satisfies the has_dynamic_matrix_tag check. Note that any supported dynamic matrix storage format should be a valid Dynamic Matrix Container. More...
 
class  is_dynamic_matrix_format_container
 Checks if the given type T is a valid Dynamic Matrix Format Container i.e is valid matrix container and has DynamicMatrixFormatTag as tag member trait. More...
 
class  is_dynamically_compatible
 Checks if the two types are dynamically compatible containers i.e are compatible containers and at least one of them is also a dynamic container. More...
 
class  is_execution_space
 Checks if the given type T is a valid supported execution space. More...
 
struct  is_format_compatible
 Checks if the two types are format compatible containers i.e are compatible containers and have the same storage format. More...
 
class  is_format_compatible_different_space
 Checks if the two types are format compatible containers but from different memory space i.e have the same storage format and are compatible containers with relaxed memory space and layout requirements. More...
 
class  is_generic_backend
 Checks if the given type T is a valid generic backend i.e is a GenericBackend container. A valid generic backend is also assumed to be any valid Kokkos Execution Space, Memory Space or Device. More...
 
class  is_hip_execution_space
 Checks if the given type T is a HIP execution space. More...
 
class  is_host_execution_space
 Checks if the given type T is a supported Host execution space. More...
 
class  is_host_memory_space
 Checks if the given type T is a valid supported Host memory space. More...
 
class  is_index_type
 Checks if the given type T is a valid index type i.e an integral. More...
 
class  is_layout
 Checks if the given type T is a layout i.e has as a array_layout member trait it self and is one of the supported layouts. More...
 
class  is_matrix_container
 A valid Matrix container is the one that has a valid Matrix tag i.e satisfies the has_matrix_tag check. Note that both dense and sparse matrices should be valid matrix containers. More...
 
class  is_memory_space
 Checks if the given type T is a valid supported memory space. More...
 
class  is_openmp_execution_space
 Checks if the given type T is an OpenMP execution space. More...
 
class  is_same_index_type
 Checks if the two types is of type index_type and are the same. More...
 
class  is_same_layout
 Checks if the two types have the same valid supported layout. More...
 
class  is_same_memory_space
 Checks if the two types are in the same valid supported memory space. More...
 
class  is_same_value_type
 Checks if the two types are of type value_type and the same. More...
 
class  is_serial_execution_space
 Checks if the given type T is a Serial execution space. More...
 
struct  is_space
 Checks if the given type T is a valid supported space. More...
 
class  is_sparse_matrix_container
 A valid Sparse Matrix container is the one that has a valid Sparse Matrix tag i.e satisfies the has_sparse_matrix_tag check. Note that any supported sparse matrix storage format should be a valid Sparse Matrix Container. More...
 
class  is_value_type
 Checks if the given type T is a valid value type i.e a scalar. More...
 
class  is_variant_member
 Checks if the given type T is a member of Variant container such as std::variant or mpark::variant. More...
 
class  is_vector_container
 A valid Vector container is the one that has a valid Vector tag i.e satisfies the has_vector_tag check. Note that a Vector container could be either dense or sparse. More...
 
class  MatrixBase
 Base class used to derive new matrices. More...
 
struct  MatrixFormats
 
struct  MatrixFormatTag
 
class  NotImplementedException
 
struct  remove_cvref
 Provides the member type which is the same as T, except that its topmost const- and reference-qualifiers are removed. More...
 
class  RuntimeException
 
struct  Set
 Compile-time set. More...
 
struct  TypeList
 Compile-time type list. More...
 
struct  TypeList< Set< Head_... >, Tail_... >
 Compile-time linked-list like type list specialisation for when the types passed are Set. More...
 
struct  UnaryContainer
 A wrapper that constructs a new container type from ContainerType using as arguments the types in TypeSet. More...
 
struct  ValueType
 A wrapper that checks if the provided type is a scalar type. More...
 
struct  VectorFormatTag
 

Typedefs

template<class ValueType , class... Properties>
using vector = DenseVector< ValueType, Properties... >
 
using DefaultHostExecutionSpace = Custom::DefaultHostExecutionSpace
 Alias to Morpheus::Custom::DefaultHostExecutionSpace.
 
using DefaultExecutionSpace = Custom::DefaultExecutionSpace
 Alias to Morpheus::Custom::DefaultExecutionSpace.
 
using HostSpace = Custom::HostSpace
 Alias to Morpheus::Custom::HostSpace.
 
using Serial = Custom::Serial
 Alias to Morpheus::Custom::Serial.
 
using OpenMP = Custom::OpenMP
 Alias to Morpheus::Custom::OpenMP.
 
using Cuda = Custom::Cuda
 Alias to Morpheus::Custom::Cuda.
 
using CudaSpace = Custom::CudaSpace
 Alias to Morpheus::Custom::CudaSpace.
 
using HIP = Custom::HIP
 Alias to Morpheus::Custom::HIP.
 
using HIPSpace = Custom::HIPSpace
 Alias to Morpheus::Custom::HIPSpace.
 
template<typename T >
using is_custom_backend = typename Impl::is_custom_backend_helper< typename std::remove_cv< T >::type >::type
 Checks if the given type T is a valid custom backend i.e is a CustomBackend container. More...
 
template<class T >
using remove_cvref_t = typename remove_cvref< T >::type
 Short-hand to remove_cvref. More...
 

Enumerations

enum  conversion_error_e { DYNAMIC_TO_PROXY = 0 , PROXY_TO_DYNAMIC , CONV_SUCCESS }
 Enum values for in-place conversion status. More...
 
enum  formats_e { COO_FORMAT = 0 , CSR_FORMAT , DIA_FORMAT , NFORMATS }
 
enum  MatrixStructure {
  MATSTR_NONE = 0 , MATSTR_SYMMETRIC = 1 , MATSTR_STRUCTURALLY_SYMMETRIC = 2 , MATSTR_HERMITIAN = 3 ,
  MATSTR_SPD = 4
}
 
enum  MatrixOptions { MATOPT_NONE = 0 , MATOPT_SHORT_ROWS = 1 }
 

Functions

void initialize (int &argc, char *argv[], const bool banner)
 
void initialize (int &argc, char *argv[], InitArguments &arguments, const bool banner)
 
void print_configuration (std::ostream &out, const bool detail)
 
void initialize (InitArguments args, const bool banner)
 
void finalize ()
 
template<typename ExecSpace , typename SourceType , typename DestinationType >
void convert (const SourceType &src, DestinationType &dst)
 Performs a conversion operation between two containers. More...
 
template<typename ExecSpace , typename SourceType >
conversion_error_e convert (SourceType &src, const formats_e index)
 Performs an in-place conversion operation of the DynamicMatrix container to the format indicated by the enum index. More...
 
template<typename ExecSpace , typename SourceType >
conversion_error_e convert (SourceType &src, const int index)
 Performs an in-place conversion operation of the DynamicMatrix container to the format indicated by the index. More...
 
template<typename SourceType , typename DestinationType >
void copy (const SourceType &src, DestinationType &dst)
 Performs a deep copy operation between two containers. More...
 
template<typename SourceType , typename DestinationType >
void copy (const SourceType &src, DestinationType &dst, const typename SourceType::index_type src_begin, const typename SourceType::index_type src_end, const typename DestinationType::index_type dst_begin, const typename DestinationType::index_type dst_end)
 Performs a sliced deep copy operation between two containers. More...
 
template<typename SourceType , typename DestinationType >
void copy (const SourceType &src, DestinationType &dst, const typename SourceType::index_type begin, const typename SourceType::index_type end)
 Performs a sliced deep copy operation between two containers. More...
 
template<typename ExecSpace , typename KeyType , typename SourceType , typename DestinationType >
void copy_by_key (const KeyType keys, const SourceType &src, DestinationType &dst)
 Performs an indirect copy between two containers using a set of key values. More...
 
template<typename ExecSpace , typename Vector1 , typename Vector2 >
Vector2::value_type dot (typename Vector1::size_type n, const Vector1 &x, const Vector2 &y)
 Computes the dot product of two vectors. More...
 
template<typename ExecSpace , typename Matrix , typename Vector >
void update_diagonal (Matrix &A, const Vector &diagonal)
 Updates the main diagonal of the matrix with contents of the diagonal vector. More...
 
template<typename ExecSpace , typename Matrix , typename Vector >
void get_diagonal (const Matrix &A, Vector &diagonal)
 Gets the main diagonal of the matrix and places it in a vector. More...
 
template<typename ExecSpace , typename Matrix , typename SizeType , typename ValueType >
void set_value (Matrix &A, SizeType row, SizeType col, ValueType value)
 Set a single entry into a matrix. More...
 
template<typename ExecSpace , typename Matrix , typename IndexVector , typename ValueVector >
void set_values (Matrix &A, typename IndexVector::value_type m, const IndexVector idxm, typename IndexVector::value_type n, const IndexVector idxn, ValueVector values)
 Inserts or adds a block of values into a matrix. More...
 
template<typename ExecSpace , typename Matrix , typename TransposeMatrix >
void transpose (const Matrix &A, TransposeMatrix &At)
 Computes the transpose of the given matrix. More...
 
template<template< class, class... > class Container, class T , class... P>
Container< T, P... >::HostMirror create_mirror (const Container< T, P... > &src, typename std::enable_if_t< is_container_v< Container< T, P... > > > *=nullptr)
 Allocates a mirror with the same characteristics as source on Host (specialization for different space) More...
 
template<class Space , template< class, class... > class Container, class T , class... P>
Impl::MirrorType< Space, Container, T, P... >::container_type create_mirror (const Container< T, P... > &src, typename std::enable_if_t< is_container_v< Container< T, P... > > > *=nullptr)
 Create a mirror in a new space (specialization for different space) More...
 
template<template< class, class... > class Container, class T , class... P>
Container< T, P... >::HostMirror create_mirror_container (const Container< T, P... > &src, typename std::enable_if_t< is_compatible_v< Container< T, P... >, typename Container< T, P... >::HostMirror > > *=nullptr)
 Creates a mirror container on Host (specialization for same space) More...
 
template<template< class, class... > class Container, class T , class... P>
Container< T, P... >::HostMirror create_mirror_container (const Container< T, P... > &src, typename std::enable_if_t<!is_compatible_v< Container< T, P... >, typename Container< T, P... >::HostMirror > > *=nullptr)
 Creates a mirror container on Host (specialization for different space) More...
 
template<class Space , template< class, class... > class Container, class T , class... P>
Impl::MirrorContainerType< Space, Container, T, P... >::container_type create_mirror_container (const Container< T, P... > &src, typename std::enable_if< Impl::MirrorContainerType< Space, Container, T, P... >::is_same_memspace &&is_container< Container< T, P... > >::value >::type *=nullptr)
 Create a mirror container in a new space (specialization for same space) More...
 
template<class Space , template< class, class... > class Container, class T , class... P>
Impl::MirrorContainerType< Space, Container, T, P... >::container_type create_mirror_container (const Container< T, P... > &src, typename std::enable_if<!Impl::MirrorContainerType< Space, Container, T, P... >::is_same_memspace &&is_container< Container< T, P... > >::value >::type *=nullptr)
 Creates a mirror container in a new space (specialization for different space) More...
 
template<typename ExecSpace , typename Matrix , typename Vector >
void multiply (const Matrix &A, const Vector &x, Vector &y, const bool init)
 Computes the matrix vector product y = Ax. More...
 
template<typename ExecSpace , typename Matrix , typename Vector >
void multiply (const Matrix &A, const Vector &x, Vector &y)
 Computes the matrix vector product y = Ax. More...
 
template<typename Printable , typename Stream >
void print (const Printable &p, Stream &s)
 
template<typename Printable >
void print (const Printable &p)
 
template<typename ExecSpace , typename Vector >
Vector::value_type reduce (const Vector &in, typename Vector::size_type size)
 Performs a sum reduction on the contents of a vector. More...
 
template<typename ExecSpace , typename Vector >
void inclusive_scan (const Vector &in, Vector &out, typename Vector::index_type size, typename Vector::index_type start=0)
 
template<typename ExecSpace , typename Vector >
void exclusive_scan (const Vector &in, Vector &out, typename Vector::index_type size, typename Vector::index_type start=0)
 
template<typename ExecSpace , typename Vector1 , typename Vector2 >
void inclusive_scan_by_key (const Vector1 &keys, const Vector2 &in, Vector2 &out, typename Vector2::index_type size, typename Vector2::index_type start=0)
 
template<typename ExecSpace , typename Vector1 , typename Vector2 >
void exclusive_scan_by_key (const Vector1 &keys, const Vector2 &in, Vector2 &out, typename Vector2::index_type size, typename Vector2::index_type start=0)
 
template<typename ExecSpace , typename Matrix >
void sort_by_row_and_column (Matrix &mat, typename Matrix::index_type min_row=0, typename Matrix::index_type max_row=0, typename Matrix::index_type min_col=0, typename Matrix::index_type max_col=0)
 
template<typename ExecSpace , typename Matrix >
bool is_sorted (Matrix &mat)
 
template<typename ExecSpace , typename Vector1 , typename Vector2 , typename Vector3 >
void waxpby (const size_t n, const typename Vector1::value_type alpha, const Vector1 &x, const typename Vector2::value_type beta, const Vector2 &y, Vector3 &w)
 Computes the update of a vector with the sum of two scaled vectors where: w = alpha*x + beta*y. More...
 

Variables

template<typename T >
constexpr bool is_default_v = is_default<T>::value
 Short-hand to is_default. More...
 
template<class T >
constexpr bool is_custom_backend_v = is_custom_backend<T>::value
 Short-hand to is_custom_backend. More...
 
template<class T >
constexpr bool has_custom_backend_v = has_custom_backend<T>::value
 Short-hand to has_custom_backend. More...
 
template<typename T >
constexpr bool is_coo_matrix_format_container_v
 Short-hand to is_coo_matrix_format_container. More...
 
template<typename T >
constexpr bool is_csr_matrix_format_container_v
 Short-hand to is_csr_matrix_format_container. More...
 
template<typename T >
constexpr bool is_dia_matrix_format_container_v
 Short-hand to is_dia_matrix_format_container. More...
 
template<typename T >
constexpr bool is_dynamic_matrix_format_container_v
 Short-hand to is_dynamic_matrix_format_container. More...
 
template<typename T >
constexpr bool is_dense_matrix_format_container_v
 Short-hand to is_dense_matrix_format_container. More...
 
template<typename T >
constexpr bool is_dense_vector_format_container_v
 Short-hand to is_dense_vector_format_container. More...
 
template<typename T >
constexpr bool is_matrix_container_v = is_matrix_container<T>::value
 Short-hand to is_matrix_container. More...
 
template<typename T >
constexpr bool is_sparse_matrix_container_v
 Short-hand to is_sparse_matrix_container. More...
 
template<typename T >
constexpr bool is_dense_matrix_container_v
 Short-hand to is_dense_matrix_container. More...
 
template<typename T >
constexpr bool is_vector_container_v = is_vector_container<T>::value
 Short-hand to is_vector_container. More...
 
template<typename T >
constexpr bool is_container_v = is_container<T>::value
 Short-hand to is_container. More...
 
template<typename T >
constexpr bool is_dynamic_matrix_container_v
 Short-hand to is_dynamic_matrix_container. More...
 
template<typename T1 , typename T2 >
constexpr bool has_same_format_v = has_same_format<T1, T2>::value
 Short-hand to has_same_format. More...
 
template<typename T1 , typename T2 >
constexpr bool is_compatible_v = is_compatible<T1, T2>::value
 Short-hand to is_compatible. More...
 
template<typename T1 , typename T2 >
constexpr bool is_dynamically_compatible_v
 Short-hand to is_dynamically_compatible. More...
 
template<typename T1 , typename T2 >
constexpr bool is_format_compatible_v
 Short-hand to is_format_compatible. More...
 
template<class T >
constexpr bool is_generic_backend_v = is_generic_backend<T>::value
 Short-hand to is_generic_backend. More...
 
template<class T >
constexpr bool has_generic_backend_v = has_generic_backend<T>::value
 Short-hand to has_generic_backend. More...
 
template<typename T >
constexpr bool has_backend_v = has_backend<T>::value
 Short-hand to has_backend. More...
 
template<typename T >
constexpr bool is_memory_space_v = is_memory_space<T>::value
 Short-hand to is_memory_space. More...
 
template<typename T >
constexpr bool has_memory_space_v = has_memory_space<T>::value
 Short-hand to has_memory_space. More...
 
template<typename T >
constexpr bool is_execution_space_v = is_execution_space<T>::value
 Short-hand to is_execution_space. More...
 
template<typename T >
constexpr bool has_execution_space_v = has_execution_space<T>::value
 Short-hand to has_execution_space. More...
 
template<typename T1 , typename T2 >
constexpr bool is_same_memory_space_v
 Short-hand to is_same_memory_space. More...
 
template<typename T1 , typename T2 >
constexpr bool has_same_memory_space_v
 Short-hand to has_same_memory_space. More...
 
template<typename T >
constexpr bool is_host_memory_space_v = is_host_memory_space<T>::value
 Short-hand to is_host_memory_space. More...
 
template<typename T >
constexpr bool has_host_memory_space_v = has_host_memory_space<T>::value
 Short-hand to has_host_memory_space. More...
 
template<typename T >
constexpr bool is_host_execution_space_v
 Short-hand to is_host_execution_space. More...
 
template<typename T >
constexpr bool has_host_execution_space_v
 Short-hand to has_host_execution_space. More...
 
template<typename T >
constexpr bool is_serial_execution_space_v
 Short-hand to is_serial_execution_space. More...
 
template<typename T >
constexpr bool has_serial_execution_space_v
 Short-hand to has_serial_execution_space. More...
 
template<typename T >
constexpr bool is_openmp_execution_space_v
 Short-hand to is_openmp_execution_space. More...
 
template<typename T >
constexpr bool has_openmp_execution_space_v
 Short-hand to has_openmp_execution_space. More...
 
template<typename T >
constexpr bool is_cuda_execution_space_v
 Short-hand to is_cuda_execution_space. More...
 
template<typename T >
constexpr bool has_cuda_execution_space_v
 Short-hand to has_cuda_execution_space. More...
 
template<typename T >
constexpr bool is_hip_execution_space_v
 Short-hand to is_hip_execution_space. More...
 
template<typename T >
constexpr bool has_hip_execution_space_v
 Short-hand to has_hip_execution_space. More...
 
template<typename ExecSpace , typename... Ts>
constexpr bool has_access_v = has_access<ExecSpace, Ts...>::value
 Short-hand to has_access. More...
 
template<typename T >
constexpr bool is_space_v = is_space<T>::value
 Short-hand to is_space. More...
 
template<typename T , typename Variant >
constexpr bool is_variant_member_v
 Short-hand for is_variant_member. More...
 
template<typename T >
constexpr bool has_tag_trait_v = has_tag_trait<T>::value
 Short-hand for has_tag_trait. More...
 
template<typename T >
constexpr bool is_layout_v = is_layout<T>::value
 Short-hand to is_layout. More...
 
template<typename T >
constexpr bool has_layout_v = has_layout<T>::value
 Short-hand to has_layout. More...
 
template<typename T1 , typename T2 >
constexpr bool is_same_layout_v = is_same_layout<T1, T2>::value
 Short-hand to is_same_layout. More...
 
template<typename T1 , typename T2 >
constexpr bool has_same_layout_v = has_same_layout<T1, T2>::value
 Short-hand to has_same_layout. More...
 
template<typename T >
constexpr bool is_value_type_v = is_value_type<T>::value
 Short-hand to is_value_type. More...
 
template<typename T >
constexpr bool has_value_type_v = has_value_type<T>::value
 Short-hand to has_value_type. More...
 
template<typename T1 , typename T2 >
constexpr bool is_same_value_type_v = is_same_value_type<T1, T2>::value
 Short-hand to is_same_value_type. More...
 
template<typename T1 , typename T2 >
constexpr bool has_same_value_type_v
 Short-hand to has_same_value_type. More...
 
template<typename T >
constexpr bool is_index_type_v = is_index_type<T>::value
 Short-hand to is_index_type. More...
 
template<typename T >
constexpr bool has_index_type_v = has_index_type<T>::value
 Short-hand to has_index_type. More...
 
template<typename T1 , typename T2 >
constexpr bool is_same_index_type_v = is_same_index_type<T1, T2>::value
 Short-hand to is_same_index_type. More...
 
template<typename T1 , typename T2 >
constexpr bool has_same_index_type_v
 Short-hand to has_same_index_type. More...
 

Detailed Description

Generic Morpheus interfaces.

dummy.cpp

EPCC, The University of Edinburgh

(c) 2021 The University of Edinburgh

Contributing Authors: Christodoulos Stylianou (c.sty.nosp@m.lian.nosp@m.ou@ed.nosp@m..ac..nosp@m.uk)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Morpheus_Convert_Impl.hpp

EPCC, The University of Edinburgh

(c) 2021 - 2022 The University of Edinburgh

Contributing Authors: Christodoulos Stylianou (c.sty.nosp@m.lian.nosp@m.ou@ed.nosp@m..ac..nosp@m.uk)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Morpheus_Core.cpp

EPCC, The University of Edinburgh

(c) 2021 - 2022 The University of Edinburgh

Contributing Authors: Christodoulos Stylianou (c.sty.nosp@m.lian.nosp@m.ou@ed.nosp@m..ac..nosp@m.uk)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Variable Documentation

◆ has_access_v

template<typename ExecSpace , typename... Ts>
constexpr bool Morpheus::has_access_v = has_access<ExecSpace, Ts...>::value
inlineconstexpr

Short-hand to has_access.

Template Parameters
ExecSpaceExecution Space
TsAribtrary number of containers

◆ has_backend_v

template<typename T >
constexpr bool Morpheus::has_backend_v = has_backend<T>::value
inlineconstexpr

Short-hand to has_backend.

Template Parameters
TType passed for check.

◆ has_cuda_execution_space_v

template<typename T >
constexpr bool Morpheus::has_cuda_execution_space_v
inlineconstexpr
Initial value:
=
has_cuda_execution_space<T>::value

Short-hand to has_cuda_execution_space.

Template Parameters
TType passed for check.

◆ has_execution_space_v

template<typename T >
constexpr bool Morpheus::has_execution_space_v = has_execution_space<T>::value
inlineconstexpr

Short-hand to has_execution_space.

Template Parameters
TType passed for check.

◆ has_hip_execution_space_v

template<typename T >
constexpr bool Morpheus::has_hip_execution_space_v
inlineconstexpr
Initial value:
=
has_hip_execution_space<T>::value

Short-hand to has_hip_execution_space.

Template Parameters
TType passed for check.

◆ has_host_execution_space_v

template<typename T >
constexpr bool Morpheus::has_host_execution_space_v
inlineconstexpr
Initial value:
=
has_host_execution_space<T>::value

Short-hand to has_host_execution_space.

Template Parameters
TType passed for check.

◆ has_host_memory_space_v

template<typename T >
constexpr bool Morpheus::has_host_memory_space_v = has_host_memory_space<T>::value
inlineconstexpr

Short-hand to has_host_memory_space.

Template Parameters
TType passed for check.

◆ has_memory_space_v

template<typename T >
constexpr bool Morpheus::has_memory_space_v = has_memory_space<T>::value
inlineconstexpr

Short-hand to has_memory_space.

Template Parameters
TType passed for check.

◆ has_openmp_execution_space_v

template<typename T >
constexpr bool Morpheus::has_openmp_execution_space_v
inlineconstexpr
Initial value:
=
has_openmp_execution_space<T>::value

Short-hand to has_openmp_execution_space.

Template Parameters
TType passed for check.

◆ has_same_format_v

template<typename T1 , typename T2 >
constexpr bool Morpheus::has_same_format_v = has_same_format<T1, T2>::value
inlineconstexpr

Short-hand to has_same_format.

Template Parameters
T1First type passed for comparison.
T2Second type passed for comparison.

◆ has_same_memory_space_v

template<typename T1 , typename T2 >
constexpr bool Morpheus::has_same_memory_space_v
inlineconstexpr
Initial value:
=
has_same_memory_space<T1, T2>::value

Short-hand to has_same_memory_space.

Template Parameters
T1First type passed for comparison.
T2Second type passed for comparison.

◆ has_serial_execution_space_v

template<typename T >
constexpr bool Morpheus::has_serial_execution_space_v
inlineconstexpr
Initial value:
=
has_serial_execution_space<T>::value

Short-hand to has_serial_execution_space.

Template Parameters
TType passed for check.

◆ is_compatible_v

template<typename T1 , typename T2 >
constexpr bool Morpheus::is_compatible_v = is_compatible<T1, T2>::value
inlineconstexpr

Short-hand to is_compatible.

Template Parameters
T1First type passed for comparison.
T2Second type passed for comparison.

◆ is_container_v

template<typename T >
constexpr bool Morpheus::is_container_v = is_container<T>::value
inlineconstexpr

Short-hand to is_container.

Template Parameters
TType passed for check.

◆ is_cuda_execution_space_v

template<typename T >
constexpr bool Morpheus::is_cuda_execution_space_v
inlineconstexpr
Initial value:
=
is_cuda_execution_space<T>::value

Short-hand to is_cuda_execution_space.

Template Parameters
TType passed for check.

◆ is_dense_matrix_container_v

template<typename T >
constexpr bool Morpheus::is_dense_matrix_container_v
inlineconstexpr
Initial value:
=
is_dense_matrix_container<T>::value

Short-hand to is_dense_matrix_container.

Template Parameters
TType passed for check.

◆ is_dynamic_matrix_container_v

template<typename T >
constexpr bool Morpheus::is_dynamic_matrix_container_v
inlineconstexpr
Initial value:
=
is_dynamic_matrix_container<T>::value

Short-hand to is_dynamic_matrix_container.

Template Parameters
TType passed for check.

◆ is_dynamically_compatible_v

template<typename T1 , typename T2 >
constexpr bool Morpheus::is_dynamically_compatible_v
inlineconstexpr
Initial value:
=
is_dynamically_compatible<T1, T2>::value

Short-hand to is_dynamically_compatible.

Template Parameters
T1First type passed for comparison.
T2Second type passed for comparison.

◆ is_execution_space_v

template<typename T >
constexpr bool Morpheus::is_execution_space_v = is_execution_space<T>::value
inlineconstexpr

Short-hand to is_execution_space.

Template Parameters
TType passed for check.

◆ is_format_compatible_v

template<typename T1 , typename T2 >
constexpr bool Morpheus::is_format_compatible_v
inlineconstexpr
Initial value:
=
is_format_compatible<T1, T2>::value

Short-hand to is_format_compatible.

Template Parameters
T1First type passed for comparison.
T2Second type passed for comparison.

◆ is_hip_execution_space_v

template<typename T >
constexpr bool Morpheus::is_hip_execution_space_v
inlineconstexpr
Initial value:
=
is_hip_execution_space<T>::value

Short-hand to is_hip_execution_space.

Template Parameters
TType passed for check.

◆ is_host_execution_space_v

template<typename T >
constexpr bool Morpheus::is_host_execution_space_v
inlineconstexpr
Initial value:
=
is_host_execution_space<T>::value

Short-hand to is_host_execution_space.

Template Parameters
TType passed for check.

◆ is_host_memory_space_v

template<typename T >
constexpr bool Morpheus::is_host_memory_space_v = is_host_memory_space<T>::value
inlineconstexpr

Short-hand to is_host_memory_space.

Template Parameters
TType passed for check.

◆ is_matrix_container_v

template<typename T >
constexpr bool Morpheus::is_matrix_container_v = is_matrix_container<T>::value
inlineconstexpr

Short-hand to is_matrix_container.

Template Parameters
TType passed for check.

◆ is_memory_space_v

template<typename T >
constexpr bool Morpheus::is_memory_space_v = is_memory_space<T>::value
inlineconstexpr

Short-hand to is_memory_space.

Template Parameters
TType passed for check.

◆ is_openmp_execution_space_v

template<typename T >
constexpr bool Morpheus::is_openmp_execution_space_v
inlineconstexpr
Initial value:
=
is_openmp_execution_space<T>::value

Short-hand to is_openmp_execution_space.

Template Parameters
TType passed for check.

◆ is_same_memory_space_v

template<typename T1 , typename T2 >
constexpr bool Morpheus::is_same_memory_space_v
inlineconstexpr
Initial value:
=
is_same_memory_space<T1, T2>::value

Short-hand to is_same_memory_space.

Template Parameters
T1First type passed for comparison.
T2Second type passed for comparison.

◆ is_serial_execution_space_v

template<typename T >
constexpr bool Morpheus::is_serial_execution_space_v
inlineconstexpr
Initial value:
=
is_serial_execution_space<T>::value

Short-hand to is_serial_execution_space.

Template Parameters
TType passed for check.

◆ is_space_v

template<typename T >
constexpr bool Morpheus::is_space_v = is_space<T>::value
inlineconstexpr

Short-hand to is_space.

Template Parameters
TType passed for check.

◆ is_sparse_matrix_container_v

template<typename T >
constexpr bool Morpheus::is_sparse_matrix_container_v
inlineconstexpr
Initial value:
=
is_sparse_matrix_container<T>::value

Short-hand to is_sparse_matrix_container.

Template Parameters
TType passed for check.

◆ is_vector_container_v

template<typename T >
constexpr bool Morpheus::is_vector_container_v = is_vector_container<T>::value
inlineconstexpr

Short-hand to is_vector_container.

Template Parameters
TType passed for check.