Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Stokhos_Tpetra_ETI_Helpers_UQ_PCE.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Stokhos Package
4 //
5 // Copyright 2009 NTESS and the Stokhos contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 // UQ::PCE includes
12 #include "TpetraCore_ETIHelperMacros.h"
13 
14 #define INSTANTIATE_UQ_PCE_STORAGE(INSTMACRO, STORAGE, LO, GO, N) \
15  INSTMACRO( Sacado::UQ::PCE<STORAGE>, LO, GO, N )
16 
17 #define INSTANTIATE_UQ_PCE_DS_SLD(INSTMACRO, S, L, D, LO, GO, N) \
18  typedef Stokhos::DynamicStorage<L,S,D::execution_space> DS_ ## L ## _ ## S ## _ ## _ ## D; \
19  INSTANTIATE_UQ_PCE_STORAGE(INSTMACRO, DS_ ## L ## _ ## S ## _ ## _ ## D, LO, GO, N)
20 
21 #define INSTANTIATE_UQ_PCE_S_D(INSTMACRO, D, LO, GO, N) \
22  INSTANTIATE_UQ_PCE_DS_SLD(INSTMACRO, double, int, D, LO, GO, N)
23 
24 #define INSTANTIATE_UQ_PCE_S(INSTMACRO, LO, GO, N) \
25  typedef Stokhos::DeviceForNode2<N>::type DFN_ ## LO ## _ ## GO ## _ ## N; \
26  INSTANTIATE_UQ_PCE_S_D(INSTMACRO, DFN_ ## LO ## _ ## GO ## _ ## N, LO, GO, N)
27 
28 #define INSTANTIATE_UQ_PCE(INSTMACRO, LO, GO, N) \
29  INSTANTIATE_UQ_PCE_S(INSTMACRO, LO, GO, N)
30 
31 #define INSTANTIATE_TPETRA_UQ_PCE_N(INSTMACRO, N) \
32  using default_local_ordinal_type = Tpetra::Map<>::local_ordinal_type; \
33  using default_global_ordinal_type = Tpetra::Map<>::global_ordinal_type; \
34  INSTANTIATE_UQ_PCE_S(INSTMACRO, default_local_ordinal_type, default_global_ordinal_type, N)
35 
36 #if defined(HAVE_TPETRACORE_TEUCHOSKOKKOSCOMPAT) && defined(HAVE_TPETRA_INST_SERIAL)
37 #define INSTANTIATE_TPETRA_UQ_PCE_SERIAL(INSTMACRO) \
38  INSTMACRO(Tpetra_KokkosCompat_KokkosSerialWrapperNode)
39 #else
40 #define INSTANTIATE_TPETRA_UQ_PCE_SERIAL(INSTMACRO)
41 #endif
42 
43 #if defined(HAVE_TPETRACORE_TEUCHOSKOKKOSCOMPAT) && defined(HAVE_TPETRA_INST_PTHREAD)
44 #define INSTANTIATE_TPETRA_UQ_PCE_THREADS(INSTMACRO) \
45  INSTMACRO(Tpetra_KokkosCompat_KokkosThreadsWrapperNode)
46 #else
47 #define INSTANTIATE_TPETRA_UQ_PCE_THREADS(INSTMACRO)
48 #endif
49 
50 #if defined(HAVE_TPETRACORE_TEUCHOSKOKKOSCOMPAT) && defined(HAVE_TPETRA_INST_OPENMP)
51 #define INSTANTIATE_TPETRA_UQ_PCE_OPENMP(INSTMACRO) \
52  INSTMACRO(Tpetra_KokkosCompat_KokkosOpenMPWrapperNode)
53 #else
54 #define INSTANTIATE_TPETRA_UQ_PCE_OPENMP(INSTMACRO)
55 #endif
56 
57 #if defined(HAVE_TPETRACORE_TEUCHOSKOKKOSCOMPAT) && defined(HAVE_TPETRA_INST_CUDA)
58 #define INSTANTIATE_TPETRA_UQ_PCE_CUDA(INSTMACRO) \
59  INSTMACRO(Tpetra_KokkosCompat_KokkosCudaWrapperNode)
60 #else
61 #define INSTANTIATE_TPETRA_UQ_PCE_CUDA(INSTMACRO)
62 #endif
63 
64 #define INSTANTIATE_TPETRA_UQ_PCE_WRAPPER_NODES(INSTMACRO) \
65  INSTANTIATE_TPETRA_UQ_PCE_THREADS(INSTMACRO) \
66  INSTANTIATE_TPETRA_UQ_PCE_OPENMP(INSTMACRO) \
67  INSTANTIATE_TPETRA_UQ_PCE_CUDA(INSTMACRO)
68 
69 #define INSTANTIATE_TPETRA_UQ_PCE(INSTMACRO) \
70  namespace Tpetra { \
71  \
72  TPETRA_ETI_MANGLING_TYPEDEFS() \
73  \
74  INSTANTIATE_TPETRA_UQ_PCE_WRAPPER_NODES(INSTMACRO) \
75  \
76 }