RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Reduce.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_Reduce_HPP
21 #define RAJA_pattern_kernel_Reduce_HPP
22 
23 #include "RAJA/config.hpp"
24 
25 #include <iostream>
26 #include <type_traits>
27 
29 
30 namespace RAJA
31 {
32 
33 namespace statement
34 {
35 
36 
43 template<typename ReducePolicy,
44  template<typename...> class ReduceOperator,
45  typename ParamId,
46  typename... EnclosedStmts>
47 struct Reduce : public internal::Statement<camp::nil, EnclosedStmts...>
48 {
49 
50  static_assert(std::is_base_of<RAJA::expt::detail::ParamBase, ParamId>::value,
51  "Inappropriate ParamId, ParamId must be of type "
52  "RAJA::Statement::Param< # >");
53 
54  using execution_policy_t = camp::nil;
55 };
56 
57 
58 } // end namespace statement
59 
60 
61 } // end namespace RAJA
62 
63 
64 #endif /* RAJA_pattern_kernel_Reduce_HPP */
Definition: AlignedRangeIndexSetBuilders.cpp:35
Header file for loop kernel internals.
Definition: Statement.hpp:35
Definition: Reduce.hpp:48
camp::nil execution_policy_t
Definition: Reduce.hpp:54