RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
RAJA.hpp
Go to the documentation of this file.
1 
19 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
20 // Copyright (c) Lawrence Livermore National Security, LLC and other
21 // RAJA Project Developers. See top-level LICENSE and COPYRIGHT
22 // files for dates and other details. No copyright assignment is required
23 // to contribute to RAJA.
24 //
25 // SPDX-License-Identifier: (BSD-3-Clause)
26 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
27 
28 #ifndef RAJA_HPP
29 #define RAJA_HPP
30 
31 #include "RAJA/config.hpp"
32 
33 #include "RAJA/util/Operators.hpp"
36 #include "RAJA/util/macros.hpp"
37 #include "RAJA/util/types.hpp"
38 #include "RAJA/util/math.hpp"
39 #include "RAJA/util/plugins.hpp"
40 #include "RAJA/util/Registry.hpp"
41 #include "RAJA/util/for_each.hpp"
42 
43 
44 //
45 // Generic iteration templates require specializations defined
46 // in the files included below.
47 //
48 #include "RAJA/pattern/forall.hpp"
49 #include "RAJA/pattern/kernel.hpp"
50 #include "RAJA/pattern/launch.hpp"
51 
52 //
53 // Generic templates to describe SIMD/SIMT registers and vectors
54 //
55 #if defined(RAJA_ENABLE_VECTORIZATION)
56 #include "RAJA/pattern/tensor.hpp"
57 #endif
58 
59 //
60 // All platforms must support sequential execution.
61 //
63 
64 //
65 // All platforms should support simd and vector execution.
66 //
67 #include "RAJA/policy/simd.hpp"
68 #if defined(RAJA_ENABLE_VECTORIZATION)
69 #include "RAJA/policy/tensor.hpp"
70 #endif
71 
72 #if defined(RAJA_ENABLE_CUDA)
73 #include "RAJA/policy/cuda.hpp"
74 #endif
75 
76 #if defined(RAJA_ENABLE_HIP)
77 #include "RAJA/policy/hip.hpp"
78 #endif
79 
80 #if defined(RAJA_ENABLE_SYCL)
81 #include "RAJA/policy/sycl.hpp"
82 #endif
83 
84 #if defined(RAJA_ENABLE_OPENMP)
85 #include "RAJA/policy/openmp.hpp"
86 
87 #if defined(RAJA_ENABLE_TARGET_OPENMP)
89 #endif
90 #endif
91 
92 #if defined(RAJA_ENABLE_DESUL_ATOMICS)
93 #include "RAJA/policy/desul.hpp"
94 #endif
95 
96 #include "RAJA/index/IndexSet.hpp"
97 
98 //
99 // Strongly typed index class
100 //
101 #include "RAJA/index/IndexValue.hpp"
102 
103 
104 //
105 // Generic iteration templates require specializations defined
106 // in the files included below.
107 //
108 #include "RAJA/pattern/forall.hpp"
109 #include "RAJA/pattern/region.hpp"
110 
112 
113 
114 //
115 // Multidimensional layouts and views
116 //
117 #include "RAJA/util/Layout.hpp"
121 #include "RAJA/util/IndexLayout.hpp"
122 #include "RAJA/util/View.hpp"
123 
124 
125 //
126 // View for sequences of objects
127 //
128 #include "RAJA/util/Span.hpp"
129 
130 //
131 // zip iterator to iterator over sequences simultaneously
132 //
133 #include "RAJA/util/zip.hpp"
134 
135 //
136 // Atomic operations support
137 //
138 #include "RAJA/pattern/atomic.hpp"
139 
140 // Thread operations support
141 //
142 #include "RAJA/pattern/thread.hpp"
143 
144 //
145 // Shared memory view patterns
146 //
147 #include "RAJA/util/LocalArray.hpp"
148 
149 //
150 // Bit masking operators
151 //
152 #include "RAJA/util/BitMask.hpp"
153 
154 //
155 // sort algorithms
156 //
157 #include "RAJA/util/sort.hpp"
158 
159 //
160 // reduce algorithms
161 //
162 #include "RAJA/util/reduce.hpp"
163 
164 //
165 // WorkPool, WorkGroup, WorkSite objects
166 //
167 #include "RAJA/policy/WorkGroup.hpp"
169 
170 //
171 // Reduction objects
172 //
173 #include "RAJA/pattern/reduce.hpp"
175 
176 
177 //
178 // Synchronization
179 //
181 
182 //
184 //
185 // These contents of the header files included here define index set
186 // and segment execution methods whose implementations depend on
187 // programming model choice.
188 //
189 // The ordering of these file inclusions must be preserved since there
190 // are dependencies among them.
191 //
193 //
194 
197 
198 #include "RAJA/pattern/scan.hpp"
199 
200 #if defined(RAJA_ENABLE_RUNTIME_PLUGINS)
202 #endif
203 
204 #include "RAJA/pattern/sort.hpp"
205 
206 namespace RAJA
207 {
208 namespace expt
209 {}
210 
211 // // provide a RAJA::expt namespace for experimental work, but bring alias
212 // // it into RAJA so it doesn't affect user code
213 // using namespace expt;
214 } // namespace RAJA
215 
216 #endif // closing endif for header file include guard
RAJA header file defining a bit masking operator.
RAJA header file defining the IndexLayout class and IndexList classes.
Header file for various index set builder methods.
Header file containing generic RAJA index set and segment utility method templates.
RAJA header file defining index set classes.
RAJA header file for strongly-typed integer class.
RAJA header file defining Layout, a N-dimensional index calculator.
Header file for multi-dimensional shared memory tile Views.
RAJA wrapper for "multi-policy" and dynamic policy selection.
RAJA header file defining Layout, a N-dimensional index calculator with offset indices.
Header file for RAJA operator definitions.
RAJA header file defining Layout, a N-dimensional index calculator with permuted stride orderings.
Header file for RAJA span constructs.
RAJA header file defining Layout, a N-dimensional index calculator with compile-time defined sizes an...
RAJA header file defining a multi-dimensional view class.
RAJA header file containing an implementation of a memory pool.
Header file with aliases to camp types.
Header file containing RAJA headers for NVCC CUDA execution.
Header file containing RAJA headers for NVCC CUDA execution.
Header file providing RAJA for_each templates.
Header file containing RAJA headers for NVCC CUDA execution.
Header file for common RAJA internal macro definitions.
Header file providing RAJA math templates.
Definition: AlignedRangeIndexSetBuilders.cpp:35
Header file containing RAJA headers for OpenMP execution.
Header file containing RAJA headers for OpenMP execution.
Header file providing RAJA WorkPool and WorkGroup declarations.
RAJA header file defining atomic operations.
Header file containing RAJA index set and segment iteration template methods that take an execution p...
RAJA header file containing user interface for RAJA::kernel.
RAJA header file containing headers for RAJA::Launch backends.
Header file providing RAJA reduction declarations.
Header file providing RAJA reduction declarations.
Header file containing the RAJA Region API call.
Header file providing RAJA scan declarations.
Header file providing RAJA sort declarations.
RAJA header for execution synchronization template.
RAJA header file defining SIMD/SIMT register operations.
RAJA header file defining thread operations.
RAJA wrapper for "multi-policy" and dynamic policy selection.
Header file containing RAJA headers for SIMD segment execution.
Header file containing RAJA headers for sequential execution.
Header file containing RAJA headers for SIMD segment execution.
Header file containing RAJA headers for SYCL execution.
Header file for RAJA type definitions.
Header file providing RAJA sort templates.
Header file providing RAJA sort templates.
Header file for multi-iterator Zip Views.