Skip to content

Commit 160e94e

Browse files
committed
Bugfix for ArrayView::setValues.
1 parent a946c89 commit 160e94e

File tree

3 files changed

+21
-16
lines changed

3 files changed

+21
-16
lines changed

src/ArrayView.hpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -574,9 +574,10 @@ class ArrayView
574574
template< typename POLICY >
575575
void setValues( T const & value ) const
576576
{
577-
RAJA::forall< POLICY >( RAJA::TypedRangeSegment< INDEX_TYPE >( 0, size() ), [value, this] LVARRAY_HOST_DEVICE ( INDEX_TYPE const i )
577+
auto const view = toView();
578+
RAJA::forall< POLICY >( RAJA::TypedRangeSegment< INDEX_TYPE >( 0, size() ), [value, view] LVARRAY_HOST_DEVICE ( INDEX_TYPE const i )
578579
{
579-
data()[ i ] = value;
580+
view.data()[ i ] = value;
580581
} );
581582
}
582583

@@ -595,9 +596,10 @@ class ArrayView
595596
"This method only works with Arrays with the same data layout." );
596597
}
597598

598-
RAJA::forall< POLICY >( RAJA::TypedRangeSegment< INDEX_TYPE >( 0, size() ), [rhs, this] LVARRAY_HOST_DEVICE ( INDEX_TYPE const i )
599+
auto const view = toView();
600+
RAJA::forall< POLICY >( RAJA::TypedRangeSegment< INDEX_TYPE >( 0, size() ), [view, rhs] LVARRAY_HOST_DEVICE ( INDEX_TYPE const i )
599601
{
600-
data()[ i ] = rhs.data()[ i ];
602+
view.data()[ i ] = rhs.data()[ i ];
601603
} );
602604
}
603605

unitTests/testArray1DOfArray1D.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
* SPDX-License-Identifier: (BSD-3-Clause)
66
*/
77

8-
#if 0
9-
108
// Source includes
119
#include "Array.hpp"
1210
#include "output.hpp"
@@ -277,5 +275,3 @@ int main( int argc, char * * argv )
277275
int const result = RUN_ALL_TESTS();
278276
return result;
279277
}
280-
281-
#endif

unitTests/testArrayView.hpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,19 @@ class ArrayViewPolicyTest : public ArrayViewTest< typename ARRAY_POLICY_PAIR::fi
433433
}
434434

435435
array->template setValues< POLICY >( value );
436-
array->move( MemorySpace::CPU );
436+
437+
ViewTypeConst const view = array->toViewConst();
438+
forall< POLICY >( array->size(), [view, value] LVARRAY_HOST_DEVICE ( INDEX_TYPE const i )
439+
{
440+
PORTABLE_EXPECT_EQ( view.data()[ i ], value );
441+
} );
437442

438443
EXPECT_EQ( array->size(), totalSize );
439444
EXPECT_EQ( array->capacity(), totalSize );
440445
EXPECT_EQ( array->data(), initialPtr );
441446

442447
for( int dim = 0; dim < NDIM; ++dim )
443448
{ EXPECT_EQ( array->size( dim ), sizes[ dim ] ); }
444-
445-
for( INDEX_TYPE i = 0; i < array->size(); ++i )
446-
{ EXPECT_EQ( array->data()[ i ], value ); }
447449
}
448450

449451
static void setValuesFromView()
@@ -454,16 +456,21 @@ class ArrayViewPolicyTest : public ArrayViewTest< typename ARRAY_POLICY_PAIR::fi
454456
array.resize( NDIM, arrayToCopy->dims() );
455457
T const * const initialPtr = array.data();
456458

459+
ViewTypeConst const viewToCopy = arrayToCopy->toViewConst();
457460
array.template setValues< POLICY >( arrayToCopy->toViewConst() );
458-
array.move( MemorySpace::CPU );
461+
462+
ViewTypeConst const view = array.toViewConst();
463+
forall< POLICY >( array.size(), [view, viewToCopy] LVARRAY_HOST_DEVICE ( INDEX_TYPE const i )
464+
{
465+
PORTABLE_EXPECT_EQ( view.data()[ i ], viewToCopy.data()[ i ] );
466+
} );
467+
459468

460469
EXPECT_EQ( array.size(), arrayToCopy->size() );
461470
EXPECT_EQ( array.capacity(), arrayToCopy->size() );
462471
EXPECT_EQ( array.data(), initialPtr );
463472

464-
for( int dim = 0; dim < NDIM; ++dim )
465-
{ EXPECT_EQ( array.size( dim ), arrayToCopy->size( dim ) ); }
466-
473+
array.move( MemorySpace::CPU );
467474
ParentClass::checkFill( array );
468475
}
469476

0 commit comments

Comments
 (0)