Advanced Multi-Physics (AMP)
On-Line Documentation
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
CSRConfig.h File Reference
#include "AMP/AMP_TPLs.h"
#include "AMP/IO/PIO.h"
#include "AMP/utils/Memory.h"
#include <cstdint>
#include <limits>
#include <tuple>
Include dependency graph for CSRConfig.h:

Go to the source code of this file.

Classes

struct  AMP::LinearAlgebra::csr_mode_layout::alloc
 
struct  AMP::LinearAlgebra::alloc_info< alloc::host >
 
struct  AMP::LinearAlgebra::make_mode< Alloc, local, global, Scalar >::assemble< vs >
 
struct  AMP::LinearAlgebra::detail::config_list< Cs >
 
struct  AMP::LinearAlgebra::config_mode< mode >
 
struct  AMP::LinearAlgebra::detail::contains< C, config_list< Cs... > >
 
struct  AMP::LinearAlgebra::csr_mode_layout
 
struct  AMP::LinearAlgebra::CSRConfig< Alloc, LocalInd, GlobalInd, Scalar >
 
struct  AMP::LinearAlgebra::get_mode_comp< mode, L >
 
struct  AMP::LinearAlgebra::csr_mode_layout::gidx
 
struct  AMP::LinearAlgebra::detail::ignore_first< config_list< Ignore, Cs... > >
 
struct  AMP::LinearAlgebra::index_info< index::i32 >
 
struct  AMP::LinearAlgebra::index_info< index::i64 >
 
struct  AMP::LinearAlgebra::index_info< index::ill >
 
struct  AMP::LinearAlgebra::csr_mode_layout::lidx
 
struct  AMP::LinearAlgebra::make_mode< Alloc, local, global, Scalar >
 
struct  AMP::LinearAlgebra::csr_mode_layout::scalar
 
struct  AMP::LinearAlgebra::scalar_info< scalar::f32 >
 
struct  AMP::LinearAlgebra::scalar_info< scalar::f64 >
 
struct  AMP::LinearAlgebra::scalar_info< scalar::fld >
 
struct  AMP::LinearAlgebra::CSRConfig< Alloc, LocalInd, GlobalInd, Scalar >::set_alloc< new_alloc >
 
struct  AMP::LinearAlgebra::CSRConfig< Alloc, LocalInd, GlobalInd, Scalar >::set_scalar< new_scalar >
 

Namespaces

namespace  AMP
 
namespace  AMP::LinearAlgebra
 
namespace  AMP::LinearAlgebra::detail
 

Macros

#define AMP_GEN_MODE(i1_name, i1_id, i2_name, i2_id)
 
#define CSR_CONFIG_CC_FORALL(INST)
 
#define CSR_CONFIG_CC_FORALL0(F, G)
 
#define CSR_CONFIG_CC_FORALL0_HYPRE(F, G)
 
#define CSR_CONFIG_CC_FORALL1()   CSR_CONFIG_CC_FORALL0
 
#define CSR_CONFIG_CC_FORALL2(F, G)   DEFER( CSR_CONFIG_CC_FORALL1 )()( F, G )
 
#define CSR_CONFIG_CC_FORALL_DEVICE(F, G)
 
#define CSR_CONFIG_CC_FORALL_HOST(F, G)
 
#define CSR_CONFIG_CC_FORALL_HYPRE(INST)
 
#define CSR_CONFIG_FORALL(INST)
 
#define CSR_CONFIG_FORALL_DEVICE(INST)
 
#define CSR_CONFIG_FORALL_HOST(INST)
 
#define CSR_CONFIG_FORALL_HYPRE_HOST(INST)
 
#define CSR_INOUT_CONFIG_MIGRATE(INST)
 
#define CSR_INOUT_CONFIG_MIGRATE_LOOP(mode_in, INST)
 
#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_DEVICE(INST)
 
#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HOST(INST)
 
#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE(INST)
 
#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST(INST)
 
#define DEFER(X)   X EMPTY()
 
#define EMPTY()
 
#define EXPAND(X)   X
 
#define X(C)   , config_mode_t<C>
 
#define X(MODE)
 

Typedefs

using AMP::LinearAlgebra::detail::built_configs = typename ignore_first< built_configs_extra_first >::type
 
using AMP::LinearAlgebra::built_configs = detail::built_configs
 
using AMP::LinearAlgebra::detail::built_configs_extra_first = config_list< config_mode_t< csr_mode::hiIf > #define X(C), config_mode_t< csr_mode::hiIf >, config_mode_t< csr_mode::hiId > >
 
template<csr_mode mode>
using AMP::LinearAlgebra::config_mode_t = typename config_mode< mode >::type
 
template<alloc Alloc>
using AMP::LinearAlgebra::DefaultCSRConfig = CSRConfig< Alloc, index::i32, index::i64, scalar::f64 >
 
using AMP::LinearAlgebra::DefaultHostCSRConfig = DefaultCSRConfig< alloc::host >
 

Enumerations

enum class  AMP::LinearAlgebra::alloc : uint8_t { AMP::LinearAlgebra::host , AMP::LinearAlgebra::device , AMP::LinearAlgebra::managed }
 
enum class  AMP::LinearAlgebra::csr_mode : std::uint16_t {
  AMP::LinearAlgebra::hiIf = make_mode_v<alloc::host, index::i32 , index::i64 , scalar::f32> , AMP::LinearAlgebra::hiId = make_mode_v<alloc::host, index::i32 , index::i64 , scalar::f64> , AMP::LinearAlgebra::diIf = make_mode_v<alloc::device, index::i32 , index::i64 , scalar::f32> , AMP::LinearAlgebra::diId = make_mode_v<alloc::device, index::i32 , index::i64 , scalar::f64> ,
  AMP::LinearAlgebra::miIf = make_mode_v<alloc::managed, index::i32 , index::i64 , scalar::f32> , AMP::LinearAlgebra::miId = make_mode_v<alloc::managed, index::i32 , index::i64 , scalar::f64> , AMP::LinearAlgebra::hiif = make_mode_v<alloc::host, index::i32 , index::i32 , scalar::f32> , AMP::LinearAlgebra::hiid = make_mode_v<alloc::host, index::i32 , index::i32 , scalar::f64> ,
  AMP::LinearAlgebra::diif = make_mode_v<alloc::device, index::i32 , index::i32 , scalar::f32> , AMP::LinearAlgebra::diid = make_mode_v<alloc::device, index::i32 , index::i32 , scalar::f64> , AMP::LinearAlgebra::miif = make_mode_v<alloc::managed, index::i32 , index::i32 , scalar::f32> , AMP::LinearAlgebra::miid = make_mode_v<alloc::managed, index::i32 , index::i32 , scalar::f64> ,
  AMP::LinearAlgebra::hilf = make_mode_v<alloc::host, index::i32 , index::ill , scalar::f32> , AMP::LinearAlgebra::hild = make_mode_v<alloc::host, index::i32 , index::ill , scalar::f64> , AMP::LinearAlgebra::dilf = make_mode_v<alloc::device, index::i32 , index::ill , scalar::f32> , AMP::LinearAlgebra::dild = make_mode_v<alloc::device, index::i32 , index::ill , scalar::f64> ,
  AMP::LinearAlgebra::milf = make_mode_v<alloc::managed, index::i32 , index::ill , scalar::f32> , AMP::LinearAlgebra::mild = make_mode_v<alloc::managed, index::i32 , index::ill , scalar::f64> , AMP::LinearAlgebra::hllf = make_mode_v<alloc::host, index::ill , index::ill , scalar::f32> , AMP::LinearAlgebra::hlld = make_mode_v<alloc::host, index::ill , index::ill , scalar::f64> ,
  AMP::LinearAlgebra::dllf = make_mode_v<alloc::device, index::ill , index::ill , scalar::f32> , AMP::LinearAlgebra::dlld = make_mode_v<alloc::device, index::ill , index::ill , scalar::f64> , AMP::LinearAlgebra::mllf = make_mode_v<alloc::managed, index::ill , index::ill , scalar::f32> , AMP::LinearAlgebra::mlld = make_mode_v<alloc::managed, index::ill , index::ill , scalar::f64> ,
  AMP::LinearAlgebra::other = std::numeric_limits<std::uint16_t>::max()
}
 
enum class  AMP::LinearAlgebra::index : uint8_t { AMP::LinearAlgebra::i32 , AMP::LinearAlgebra::i64 , AMP::LinearAlgebra::ill }
 
enum class  AMP::LinearAlgebra::scalar : uint8_t { AMP::LinearAlgebra::f32 , AMP::LinearAlgebra::f64 , AMP::LinearAlgebra::fld }
 

Functions

auto AMP::LinearAlgebra::get_alloc (csr_mode mode)
 
template<class L >
auto AMP::LinearAlgebra::get_from_mode (csr_mode mode)
 
auto AMP::LinearAlgebra::get_gidx (csr_mode mode)
 
auto AMP::LinearAlgebra::get_lidx (csr_mode mode)
 
auto AMP::LinearAlgebra::get_scalar (csr_mode mode)
 
bool AMP::LinearAlgebra::is_built (csr_mode mode)
 

Variables

template<csr_mode mode>
constexpr alloc AMP::LinearAlgebra::get_alloc_v = get_mode_comp<mode, csr_mode_layout::alloc>::value
 
template<csr_mode mode>
constexpr index AMP::LinearAlgebra::get_gidx_v = get_mode_comp<mode, csr_mode_layout::gidx>::value
 
template<csr_mode mode>
constexpr index AMP::LinearAlgebra::get_lidx_v = get_mode_comp<mode, csr_mode_layout::lidx>::value
 
template<csr_mode mode>
constexpr scalar AMP::LinearAlgebra::get_scalar_v = get_mode_comp<mode, csr_mode_layout::scalar>::value
 
template<class C >
constexpr bool AMP::LinearAlgebra::is_config_built = detail::contains<C, built_configs>::value
 
template<alloc a, index l, index g, scalar s>
constexpr std::uint16_t AMP::LinearAlgebra::make_mode_v = make_mode<a, l, g, s>::value
 

Macro Definition Documentation

◆ AMP_GEN_MODE

#define AMP_GEN_MODE (   i1_name,
  i1_id,
  i2_name,
  i2_id 
)
Value:
h##i1_name##i2_name##f = make_mode_v<alloc::host, i1_id, i2_id, scalar::f32>, \
h##i1_name##i2_name##d = make_mode_v<alloc::host, i1_id, i2_id, scalar::f64>, \
d##i1_name##i2_name##f = make_mode_v<alloc::device, i1_id, i2_id, scalar::f32>, \
d##i1_name##i2_name##d = make_mode_v<alloc::device, i1_id, i2_id, scalar::f64>, \
m##i1_name##i2_name##f = make_mode_v<alloc::managed, i1_id, i2_id, scalar::f32>, \
m##i1_name##i2_name##d = make_mode_v<alloc::managed, i1_id, i2_id, scalar::f64>

Definition at line 152 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL

#define CSR_CONFIG_CC_FORALL (   INST)
Value:
CSR_CONFIG_CC_FORALL_HYPRE( INST )
#define CSR_CONFIG_CC_FORALL2(F, G)
Definition CSRConfig.h:217
#define EXPAND(X)
Definition CSRConfig.h:170
#define CSR_CONFIG_CC_FORALL0(F, G)
Definition CSRConfig.h:213

Definition at line 218 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL0

#define CSR_CONFIG_CC_FORALL0 (   F,
 
)
Value:
CSR_CONFIG_CC_FORALL_DEVICE( F, G )
#define CSR_CONFIG_CC_FORALL_HOST(F, G)
Definition CSRConfig.h:187

Definition at line 213 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL0_HYPRE

#define CSR_CONFIG_CC_FORALL0_HYPRE (   F,
 
)

Definition at line 180 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL1

#define CSR_CONFIG_CC_FORALL1 ( )    CSR_CONFIG_CC_FORALL0

Definition at line 216 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL2

#define CSR_CONFIG_CC_FORALL2 (   F,
 
)    DEFER( CSR_CONFIG_CC_FORALL1 )()( F, G )

Definition at line 217 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL_DEVICE

#define CSR_CONFIG_CC_FORALL_DEVICE (   F,
 
)

Definition at line 206 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL_HOST

#define CSR_CONFIG_CC_FORALL_HOST (   F,
 
)
Value:
F( G, csr_mode::hiIf ) \
F( G, csr_mode::hiId )

Definition at line 187 of file CSRConfig.h.

◆ CSR_CONFIG_CC_FORALL_HYPRE

#define CSR_CONFIG_CC_FORALL_HYPRE (   INST)

Definition at line 179 of file CSRConfig.h.

◆ CSR_CONFIG_FORALL

#define CSR_CONFIG_FORALL (   INST)
Value:
CSR_CONFIG_FORALL_DEVICE( INST )
#define CSR_CONFIG_FORALL_HOST(INST)
Definition CSRConfig.h:183

Definition at line 209 of file CSRConfig.h.

◆ CSR_CONFIG_FORALL_DEVICE

#define CSR_CONFIG_FORALL_DEVICE (   INST)

Definition at line 205 of file CSRConfig.h.

◆ CSR_CONFIG_FORALL_HOST

#define CSR_CONFIG_FORALL_HOST (   INST)
Value:
INST( csr_mode::hiIf ) \
INST( csr_mode::hiId ) \
CSR_CONFIG_FORALL_HYPRE_HOST( INST )

Definition at line 183 of file CSRConfig.h.

◆ CSR_CONFIG_FORALL_HYPRE_HOST

#define CSR_CONFIG_FORALL_HYPRE_HOST (   INST)

Definition at line 175 of file CSRConfig.h.

◆ CSR_INOUT_CONFIG_MIGRATE

#define CSR_INOUT_CONFIG_MIGRATE (   INST)
Value:
CSR_INOUT_CONFIG_MIGRATE_OUTLIST_DEVICE( INST ) \
CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST( INST ) \
CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE( INST )
#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HOST(INST)
Definition CSRConfig.h:253

Definition at line 272 of file CSRConfig.h.

◆ CSR_INOUT_CONFIG_MIGRATE_LOOP

#define CSR_INOUT_CONFIG_MIGRATE_LOOP (   mode_in,
  INST 
)
Value:
CSR_CONFIG_CC_FORALL0( INST, mode_in ) \
CSR_CONFIG_CC_FORALL0_HYPRE( INST, mode_in )

Definition at line 249 of file CSRConfig.h.

◆ CSR_INOUT_CONFIG_MIGRATE_OUTLIST_DEVICE

#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_DEVICE (   INST)

Definition at line 264 of file CSRConfig.h.

◆ CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HOST

#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HOST (   INST)
Value:
CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hiIf, INST ) \
CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hiId, INST )
#define CSR_INOUT_CONFIG_MIGRATE_LOOP(mode_in, INST)
Definition CSRConfig.h:249

Definition at line 253 of file CSRConfig.h.

◆ CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE

#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE (   INST)

Definition at line 269 of file CSRConfig.h.

◆ CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST

#define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST (   INST)

Definition at line 268 of file CSRConfig.h.

◆ DEFER

#define DEFER (   X)    X EMPTY()

Definition at line 169 of file CSRConfig.h.

◆ EMPTY

#define EMPTY ( )

Definition at line 168 of file CSRConfig.h.

◆ EXPAND

#define EXPAND (   X)    X

Definition at line 170 of file CSRConfig.h.

◆ X [1/2]

#define X (   C)    , config_mode_t<C>

◆ X [2/2]

#define X (   MODE)
Value:
case MODE: \
built = true; \
break;



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page