Advanced Multi-Physics (AMP)
On-Line Documentation
CSRConfigHypre.h
Go to the documentation of this file.
1#include "AMP/AMP_TPLs.h"
2
3
4#if defined( HYPRE_SINGLE )
5inline constexpr scalar hypre_real = scalar::f32;
6#elif defined( HYPRE_LONG_DOUBLE )
7inline constexpr scalar hypre_real = scalar::fld;
8#else
9inline constexpr scalar hypre_real = scalar::f64;
10#endif // FP precision
11
12#if defined( HYPRE_BIGINT )
13inline constexpr index hypre_small = index::ill;
14inline constexpr index hypre_big = index::ill;
15 #define CSR_CONFIG_FORALL_HYPRE_HOST( INST ) \
16 INST( csr_mode::hllf ) \
17 INST( csr_mode::hlld )
18 #define CSR_CONFIG_CC_FORALL_HYPRE_HOST( F, G ) \
19 F( G, csr_mode::hllf ) \
20 F( G, csr_mode::hlld )
21#elif defined( HYPRE_MIXEDINT )
22inline constexpr index hypre_small = index::i32;
23inline constexpr index hypre_big = index::ill;
24 #define CSR_CONFIG_FORALL_HYPRE_HOST( INST ) \
25 INST( csr_mode::hilf ) \
26 INST( csr_mode::hild )
27 #define CSR_CONFIG_CC_FORALL_HYPRE_HOST( F, G ) \
28 F( G, csr_mode::hilf ) \
29 F( G, csr_mode::hild )
30#else
31inline constexpr index hypre_small = index::i32;
32inline constexpr index hypre_big = index::i32;
33 #define CSR_CONFIG_FORALL_HYPRE_HOST( INST ) \
34 INST( csr_mode::hiif ) \
35 INST( csr_mode::hiid )
36 #define CSR_CONFIG_CC_FORALL_HYPRE_HOST( F, G ) \
37 F( G, csr_mode::hiif ) \
38 F( G, csr_mode::hiid )
39#endif // Integer config
40
41#ifdef AMP_USE_DEVICE
42 #if defined( HYPRE_BIGINT )
43 #define CSR_CONFIG_FORALL_HYPRE_DEVICE( INST ) \
44 INST( csr_mode::dllf ) \
45 INST( csr_mode::dlld ) \
46 INST( csr_mode::mllf ) \
47 INST( csr_mode::mlld )
48 #define CSR_CONFIG_CC_FORALL_HYPRE_DEVICE( F, G ) \
49 F( G, csr_mode::dllf ) \
50 F( G, csr_mode::dlld ) \
51 F( G, csr_mode::mllf ) \
52 F( G, csr_mode::mlld )
53 #elif defined( HYPRE_MIXEDINT )
54 #define CSR_CONFIG_FORALL_HYPRE_DEVICE( INST ) \
55 INST( csr_mode::dilf ) \
56 INST( csr_mode::dild ) \
57 INST( csr_mode::milf ) \
58 INST( csr_mode::mild )
59 #define CSR_CONFIG_CC_FORALL_HYPRE_DEVICE( F, G ) \
60 F( G, csr_mode::dilf ) \
61 F( G, csr_mode::dild ) \
62 F( G, csr_mode::milf ) \
63 F( G, csr_mode::mild )
64 #else
65 #define CSR_CONFIG_FORALL_HYPRE_DEVICE( INST ) \
66 INST( csr_mode::diif ) \
67 INST( csr_mode::diid ) \
68 INST( csr_mode::miif ) \
69 INST( csr_mode::miid )
70 #define CSR_CONFIG_CC_FORALL_HYPRE_DEVICE( F, G ) \
71 F( G, csr_mode::diif ) \
72 F( G, csr_mode::diid ) \
73 F( G, csr_mode::miif ) \
74 F( G, csr_mode::miid )
75 #endif // Integer config
76#else
77 #define CSR_CONFIG_FORALL_HYPRE_DEVICE( INST )
78 #define CSR_CONFIG_CC_FORALL_HYPRE_DEVICE( F, G )
79#endif
80
81#define CSR_CONFIG_CC_FORALL0_HYPRE( F, G ) \
82 CSR_CONFIG_CC_FORALL_HYPRE_HOST( F, G ) \
83 CSR_CONFIG_CC_FORALL_HYPRE_DEVICE( F, G )
84#define CSR_CONFIG_CC_FORALL1_HYPRE() CSR_CONFIG_CC_FORALL0_HYPRE
85#define CSR_CONFIG_CC_FORALL2_HYPRE( F, G ) DEFER( CSR_CONFIG_CC_FORALL1_HYPRE )()( F, G )
86#define CSR_CONFIG_CC_FORALL_HYPRE( INST ) \
87 EXPAND( CSR_CONFIG_CC_FORALL0_HYPRE( CSR_CONFIG_CC_FORALL2_HYPRE, INST ) )
88
89#if defined( HYPRE_BIGINT )
90 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST( INST ) \
91 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hllf, INST ) \
92 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hlld, INST )
93#elif defined( HYPRE_MIXEDINT )
94 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST( INST ) \
95 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hilf, INST ) \
96 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hild, INST )
97#else
98 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_HOST( INST ) \
99 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hiif, INST ) \
100 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::hiid, INST )
101#endif
102#if defined( AMP_USE_DEVICE )
103 #if defined( HYPRE_BIGINT )
104 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE( INST ) \
105 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::mllf, INST ) \
106 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::mlld, INST ) \
107 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::dllf, INST ) \
108 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::dlld, INST )
109 #elif defined( HYPRE_MIXEDINT )
110 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE( INST ) \
111 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::milf, INST ) \
112 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::mild, INST ) \
113 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::dilf, INST ) \
114 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::dild, INST )
115 #else
116 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE( INST ) \
117 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::miif, INST ) \
118 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::miid, INST ) \
119 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::diif, INST ) \
120 CSR_INOUT_CONFIG_MIGRATE_LOOP( csr_mode::diid, INST )
121 #endif
122#else
123 #define CSR_INOUT_CONFIG_MIGRATE_OUTLIST_HYPRE_DEVICE( INST )
124#endif
125
126template<alloc, index, index, scalar>
128template<alloc Alloc>
constexpr index hypre_small
constexpr scalar hypre_real
constexpr index hypre_big



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:40.
Comments on this page