Skip to content

Commit 6074837

Browse files
committed
WIP on new layouts
1 parent bc43fa5 commit 6074837

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2975
-1356
lines changed

benchmarks/benchmarkArray1DR2TensorMultiplicationKernels.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,18 @@ namespace benchmarking
5252
RAJA_OUTER_LOOP( N, INNER_LOOP( a_ijl, b_ilk, c_ijk ) )
5353

5454

55-
template< typename VALUE_TYPE_CONST, int USD >
55+
template< typename VALUE_TYPE_CONST, typename LAYOUT, std::enable_if_t< LAYOUT::NDIM == 2 >* = nullptr >
5656
inline LVARRAY_HOST_DEVICE constexpr
57-
void R2TensorMultiplyFortran( LvArray::ArraySlice< VALUE_TYPE_CONST, 2, USD, INDEX_TYPE > const a,
58-
LvArray::ArraySlice< VALUE_TYPE_CONST, 2, USD, INDEX_TYPE > const b,
59-
LvArray::ArraySlice< VALUE_TYPE, 2, USD, INDEX_TYPE > const c )
57+
void R2TensorMultiplyFortran( LvArray::ArraySlice2< VALUE_TYPE_CONST, LAYOUT > const a,
58+
LvArray::ArraySlice2< VALUE_TYPE_CONST, LAYOUT > const b,
59+
LvArray::ArraySlice2< VALUE_TYPE, LAYOUT > const c )
6060
{ INNER_LOOP( a( j, l ), b( l, k ), c( j, k ) ) }
6161

62-
template< typename VALUE_TYPE_CONST, int USD >
62+
template< typename VALUE_TYPE_CONST, typename LAYOUT, std::enable_if_t< LAYOUT::NDIM == 2 >* = nullptr >
6363
RAJA_INLINE LVARRAY_HOST_DEVICE constexpr
64-
void R2TensorMultiplySubscript( LvArray::ArraySlice< VALUE_TYPE_CONST, 2, USD, INDEX_TYPE > const a,
65-
LvArray::ArraySlice< VALUE_TYPE_CONST, 2, USD, INDEX_TYPE > const b,
66-
LvArray::ArraySlice< VALUE_TYPE, 2, USD, INDEX_TYPE > const c )
64+
void R2TensorMultiplySubscript( LvArray::ArraySlice2< VALUE_TYPE_CONST, LAYOUT > const a,
65+
LvArray::ArraySlice2< VALUE_TYPE_CONST, LAYOUT > const b,
66+
LvArray::ArraySlice2< VALUE_TYPE, LAYOUT > const c )
6767
{ INNER_LOOP( a[ j ][ l ], b[ l ][ k ], c[ j ][ k ] ) }
6868

6969

benchmarks/benchmarkArrayOfArraysNodeToElementMapConstructionKernels.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace benchmarking
1515

1616
// Sphinx start after vector
1717
void NaiveNodeToElemMapConstruction::
18-
vector( ArrayView< INDEX_TYPE const, 2, 1, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
18+
vector( ArrayView< INDEX_TYPE const, 2, RAJA::PERM_IJ, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
1919
std::vector< std::vector< INDEX_TYPE > > & nodeToElementMap,
2020
INDEX_TYPE const numNodes )
2121
{
@@ -33,7 +33,7 @@ void NaiveNodeToElemMapConstruction::
3333

3434
// Sphinx start after naive
3535
void NaiveNodeToElemMapConstruction::
36-
naive( ArrayView< INDEX_TYPE const, 2, 1, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
36+
naive( ArrayView< INDEX_TYPE const, 2, RAJA::PERM_IJ, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
3737
ArrayOfArrays< INDEX_TYPE, INDEX_TYPE, DEFAULT_BUFFER > & nodeToElementMap,
3838
INDEX_TYPE const numNodes )
3939
{
@@ -52,7 +52,7 @@ void NaiveNodeToElemMapConstruction::
5252
// Sphinx start after overAllocation
5353
template< typename POLICY >
5454
void NodeToElemMapConstruction< POLICY >::
55-
overAllocation( ArrayView< INDEX_TYPE const, 2, 1, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
55+
overAllocation( ArrayView< INDEX_TYPE const, 2, RAJA::PERM_IJ, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
5656
ArrayOfArrays< INDEX_TYPE, INDEX_TYPE, DEFAULT_BUFFER > & nodeToElementMap,
5757
INDEX_TYPE const numNodes,
5858
INDEX_TYPE const maxNodeElements )
@@ -83,7 +83,7 @@ overAllocation( ArrayView< INDEX_TYPE const, 2, 1, INDEX_TYPE, DEFAULT_BUFFER >
8383
// Sphinx start after resizeFromCapacities
8484
template< typename POLICY >
8585
void NodeToElemMapConstruction< POLICY >::
86-
resizeFromCapacities( ArrayView< INDEX_TYPE const, 2, 1, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
86+
resizeFromCapacities( ArrayView< INDEX_TYPE const, 2, RAJA::PERM_IJ, INDEX_TYPE, DEFAULT_BUFFER > const & elementToNodeMap,
8787
ArrayOfArrays< INDEX_TYPE, INDEX_TYPE, DEFAULT_BUFFER > & nodeToElementMap,
8888
INDEX_TYPE const numNodes )
8989
{

benchmarks/benchmarkHelpers.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ using ArrayT = LvArray::Array< T, typeManipulation::getDimension< PERMUTATION >,
7171
template< typename T, typename PERMUTATION >
7272
using ArrayViewT = LvArray::ArrayView< T,
7373
typeManipulation::getDimension< PERMUTATION >,
74-
typeManipulation::getStrideOneDimension( PERMUTATION {} ),
74+
PERMUTATION,
7575
INDEX_TYPE,
7676
DEFAULT_BUFFER >;
7777

@@ -145,8 +145,8 @@ inline std::uint_fast64_t getSeed()
145145
}
146146

147147

148-
template< typename T, int NDIM, int USD >
149-
void initialize( ArraySlice< T, NDIM, USD, INDEX_TYPE > const slice, int & iter )
148+
template< typename T, typename LAYOUT >
149+
void initialize( ArraySlice2< T, LAYOUT > const slice, int & iter )
150150
{
151151
++iter;
152152
std::mt19937_64 gen( iter * getSeed() );
@@ -171,7 +171,7 @@ RajaView< T, PERMUTATION > makeRajaView( ArrayT< T, PERMUTATION > const & array
171171

172172
for( int i = 0; i < NDIM; ++i )
173173
{
174-
sizes[ i ] = array.dims()[ i ];
174+
sizes[ i ] = array.size( i );
175175
}
176176

177177
constexpr std::array< camp::idx_t, NDIM > const permutation = RAJA::as_array< PERMUTATION >::get();

examples/exampleArray.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,9 @@ TEST( Array, permutations )
106106
LvArray::MallocBuffer > array( 3, 4, 5 );
107107

108108
// Index 0 has the largest stride while index 2 has unit stride.
109-
EXPECT_EQ( array.strides()[ 0 ], array.size( 2 ) * array.size( 1 ) );
110-
EXPECT_EQ( array.strides()[ 1 ], array.size( 2 ) );
111-
EXPECT_EQ( array.strides()[ 2 ], 1 );
109+
EXPECT_EQ( array.stride< 0 >(), array.size( 2 ) * array.size( 1 ) );
110+
EXPECT_EQ( array.stride< 1 >(), array.size( 2 ) );
111+
EXPECT_EQ( array.stride< 2 >(), 1 );
112112

113113
int const * const pointer = array.data();
114114
for( std::ptrdiff_t i = 0; i < array.size( 0 ); ++i )
@@ -134,9 +134,9 @@ TEST( Array, permutations )
134134
LvArray::MallocBuffer > array( 3, 4, 5 );
135135

136136
// Index 0 has the unit stride while index 2 has the largest stride.
137-
EXPECT_EQ( array.strides()[ 0 ], 1 );
138-
EXPECT_EQ( array.strides()[ 1 ], array.size( 0 ) );
139-
EXPECT_EQ( array.strides()[ 2 ], array.size( 0 ) * array.size( 1 ) );
137+
EXPECT_EQ( array.stride< 0 >(), 1 );
138+
EXPECT_EQ( array.stride< 1 >(), array.size( 0 ) );
139+
EXPECT_EQ( array.stride< 2 >(), array.size( 0 ) * array.size( 1 ) );
140140

141141
int const * const pointer = array.data();
142142
for( std::ptrdiff_t i = 0; i < array.size( 0 ); ++i )
@@ -223,8 +223,7 @@ TEST( Array, resizeSingleDimension )
223223
}
224224

225225
// Shrink the second dimension from 6 to 3;
226-
array.setSingleParameterResizeIndex( 1 );
227-
array.resize( 3 );
226+
array.resizeDimension< 1 >( 3 );
228227
for( std::ptrdiff_t i = 0; i < array.size( 0 ); ++i )
229228
{
230229
for( std::ptrdiff_t j = 0; j < array.size( 1 ); ++j )
@@ -254,23 +253,23 @@ TEST( Array, arrayView )
254253
// Create a view.
255254
LvArray::ArrayView< int,
256255
2,
257-
0,
256+
camp::idx_seq< 1, 0 >,
258257
std::ptrdiff_t,
259258
LvArray::MallocBuffer > const view = array;
260259
EXPECT_EQ( view.data(), array.data() );
261260

262261
// Create a view with const values.
263262
LvArray::ArrayView< int const,
264263
2,
265-
0,
264+
camp::idx_seq< 1, 0 >,
266265
std::ptrdiff_t,
267266
LvArray::MallocBuffer > const viewConst = array.toViewConst();
268267
EXPECT_EQ( viewConst.data(), array.data() );
269268

270269
// Copy a view.
271270
LvArray::ArrayView< int,
272271
2,
273-
0,
272+
camp::idx_seq< 1, 0 >,
274273
std::ptrdiff_t,
275274
LvArray::MallocBuffer > const viewCopy = view;
276275
EXPECT_EQ( viewCopy.data(), array.data() );

0 commit comments

Comments
 (0)