RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
IndexSetBuilders.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_IndexSetBuilders_HPP
21 #define RAJA_IndexSetBuilders_HPP
22 
23 #include "RAJA/config.hpp"
24 
25 #include "RAJA/index/IndexSet.hpp"
28 
29 #include "RAJA/util/types.hpp"
30 
31 #include "camp/resource.hpp"
32 
33 namespace RAJA
34 {
35 
58 void RAJASHAREDDLL_API buildIndexSetAligned(
60  camp::resources::Resource work_res,
61  const RAJA::Index_type* const indices_in,
62  RAJA::Index_type length,
63  RAJA::Index_type range_min_length,
64  RAJA::Index_type range_align);
65 
66 
69 //
70 // The following methods build "lock-free" index sets.
71 //
72 // Lock-free indexsets are designed to be used with coarse-grained OpenMP
73 // iteration policies. The "lock-free" part here assumes interactions among
74 // the cell-complex associated with the space being partitioned are "tightly
75 // bound".
76 //
79 
98  int fastDim,
99  int midDim,
100  int slowDim);
101 
122  camp::resources::Resource work_res,
123  RAJA::Index_type const* domainToRange,
124  int numEntity,
125  int numRangePerDomain,
126  int numEntityRange,
127  RAJA::Index_type* elemPermutation = nullptr,
128  RAJA::Index_type* ielemPermutation = nullptr);
129 
130 } // namespace RAJA
131 
132 #endif // closing endif for header file include guard
RAJA header file defining index set classes.
Header file containing definition of RAJA list segment class.
Header file containing definitions of RAJA range segment classes.
Definition: IndexSet.hpp:52
Definition: AlignedRangeIndexSetBuilders.cpp:35
void buildIndexSetAligned(RAJA::TypedIndexSet< RAJA::RangeSegment, RAJA::ListSegment > &iset, camp::resources::Resource work_res, const RAJA::Index_type *const indices_in, RAJA::Index_type length, RAJA::Index_type range_min_length, RAJA::Index_type range_align)
Generate an index set with aligned Range segments and List segments, as needed, from given array of i...
Definition: AlignedRangeIndexSetBuilders.cpp:45
void buildLockFreeBlockIndexset(RAJA::TypedIndexSet< RAJA::RangeSegment > &iset, int fastDim, int midDim, int slowDim)
Generate a lock-free "block" index set (planar division) containing range segments.
Definition: LockFreeIndexSetBuilders.cpp:47
void buildLockFreeColorIndexset(RAJA::TypedIndexSet< RAJA::RangeSegment, RAJA::ListSegment > &iset, camp::resources::Resource work_res, RAJA::Index_type const *domainToRange, int numEntity, int numRangePerDomain, int numEntityRange, RAJA::Index_type *elemPermutation, RAJA::Index_type *ielemPermutation)
Generate a lock-free "color" index set containing range and list segments.
Definition: LockFreeIndexSetBuilders.cpp:216
std::ptrdiff_t Index_type
Definition: types.hpp:226
Header file for RAJA type definitions.