RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
TypeTraits.hpp
Go to the documentation of this file.
1 
11 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
12 // Copyright (c) Lawrence Livermore National Security, LLC and other
13 // RAJA Project Developers. See top-level LICENSE and COPYRIGHT
14 // files for dates and other details. No copyright assignment is required
15 // to contribute to RAJA.
16 //
17 // SPDX-License-Identifier: (BSD-3-Clause)
18 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
19 
20 #ifndef RAJA_pattern_kernel_type_traits_HPP
21 #define RAJA_pattern_kernel_type_traits_HPP
22 
28 
29 namespace RAJA
30 {
31 namespace internal
32 {
33 
34 template<typename T>
35 struct loop_data_has_reducers : std::false_type
36 {};
37 
38 template<typename SegmentTuple,
39  typename ParamTuple,
40  typename Resource,
41  typename... Bodies>
43  LoopData<SegmentTuple, ParamTuple, Resource, Bodies...>>
45 {};
46 
47 template<typename T>
48 struct is_wrapper_with_reducers : std::false_type
49 {};
50 
51 template<camp::idx_t ArgumentId,
52  typename Data,
53  typename Types,
54  typename... EnclosedStmts>
56  ForWrapper<ArgumentId, Data, Types, EnclosedStmts...>>
57  : loop_data_has_reducers<camp::decay<Data>>
58 {};
59 
60 template<camp::idx_t ArgumentId,
61  typename ParamId,
62  typename Data,
63  typename Types,
64  typename... EnclosedStmts>
66  ForICountWrapper<ArgumentId, ParamId, Data, Types, EnclosedStmts...>>
67  : loop_data_has_reducers<camp::decay<Data>>
68 {};
69 
70 template<camp::idx_t ArgumentId,
71  typename Data,
72  typename Types,
73  typename... EnclosedStmts>
75  TileWrapper<ArgumentId, Data, Types, EnclosedStmts...>>
76  : loop_data_has_reducers<camp::decay<Data>>
77 {};
78 
79 template<camp::idx_t ArgumentId,
80  typename Data,
81  typename Types,
82  typename... EnclosedStmts>
84  TileTCountWrapper<ArgumentId, Data, Types, EnclosedStmts...>>
85  : loop_data_has_reducers<camp::decay<Data>>
86 {};
87 
88 } // namespace internal
89 } // namespace RAJA
90 
91 #endif
Definition: AlignedRangeIndexSetBuilders.cpp:35
Header file for statement wrappers and executors.
Header file for statement wrappers and executors.
Header file for tile wrapper and iterator.
Header file for tile wrapper and iterator.
Definition: TypeTraits.hpp:89
Definition: ForICount.hpp:76
Definition: For.hpp:71
Definition: LoopData.hpp:110
Definition: TileTCount.hpp:78
Definition: Tile.hpp:95
Definition: TypeTraits.hpp:49
Definition: TypeTraits.hpp:36