RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
plugins.hpp
Go to the documentation of this file.
1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
2 // Copyright (c) Lawrence Livermore National Security, LLC and other
3 // RAJA Project Developers. See top-level LICENSE and COPYRIGHT
4 // files for dates and other details. No copyright assignment is required
5 // to contribute to RAJA.
6 //
7 // SPDX-License-Identifier: (BSD-3-Clause)
8 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
9 
10 #ifndef RAJA_plugins_HPP
11 #define RAJA_plugins_HPP
12 
13 #include "RAJA/config.hpp"
14 
18 #if defined(RAJA_ENABLE_RUNTIME_PLUGINS)
21 #endif
22 
23 namespace RAJA
24 {
25 namespace util
26 {
27 
28 template<typename T>
29 RAJA_INLINE auto trigger_updates_before(T&& item) ->
30  typename std::remove_reference<T>::type
31 {
32  return item;
33 }
34 
35 RAJA_INLINE
37 {
38  for (auto plugin = PluginRegistry::begin(); plugin != PluginRegistry::end();
39  ++plugin)
40  {
41  (*plugin).get()->preCapture(p);
42  }
43 }
44 
45 RAJA_INLINE
47 {
48  for (auto plugin = PluginRegistry::begin(); plugin != PluginRegistry::end();
49  ++plugin)
50  {
51  (*plugin).get()->postCapture(p);
52  }
53 }
54 
55 RAJA_INLINE
57 {
58  for (auto plugin = PluginRegistry::begin(); plugin != PluginRegistry::end();
59  ++plugin)
60  {
61  (*plugin).get()->preLaunch(p);
62  }
63 }
64 
65 RAJA_INLINE
67 {
68  for (auto plugin = PluginRegistry::begin(); plugin != PluginRegistry::end();
69  ++plugin)
70  {
71  (*plugin).get()->postLaunch(p);
72  }
73 }
74 
75 RAJA_INLINE
77 {
78  for (auto plugin = PluginRegistry::begin(); plugin != PluginRegistry::end();
79  ++plugin)
80  {
81  (*plugin).get()->init(p);
82  }
83 }
84 
85 RAJA_INLINE
86 void init_plugins(const std::string& path)
87 {
89 }
90 
91 RAJA_INLINE
93 
94 RAJA_INLINE
96 {
97  for (auto plugin = PluginRegistry::begin(); plugin != PluginRegistry::end();
98  ++plugin)
99  {
100  (*plugin).get()->finalize();
101  }
102 }
103 
104 } // namespace util
105 } // namespace RAJA
106 
107 #endif
static RAJASHAREDDLL_API iterator begin()
static iterator end()
Definition: Registry.hpp:113
RAJA_INLINE void finalize_plugins()
Definition: plugins.hpp:95
RAJA_INLINE void callInitPlugins(const PluginOptions p)
Definition: plugins.hpp:76
RAJA_INLINE void callPreLaunchPlugins(const PluginContext &p)
Definition: plugins.hpp:56
RAJA_INLINE void callPostCapturePlugins(const PluginContext &p)
Definition: plugins.hpp:46
RAJA_INLINE void init_plugins(const std::string &path)
Definition: plugins.hpp:86
RAJA_INLINE auto trigger_updates_before(T &&item) -> typename std::remove_reference< T >::type
Definition: plugins.hpp:29
RAJA_INLINE void callPostLaunchPlugins(const PluginContext &p)
Definition: plugins.hpp:66
PluginOptions make_options(const std::string &newstr)
Definition: PluginOptions.hpp:27
RAJA_INLINE void callPreCapturePlugins(const PluginContext &p)
Definition: plugins.hpp:36
Definition: AlignedRangeIndexSetBuilders.cpp:35
Definition: PluginContext.hpp:26
Definition: PluginOptions.hpp:21