Update Kokkos library to r2.6.00
This commit is contained in:
@ -35,7 +35,7 @@
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
|
||||
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
|
||||
//
|
||||
// ************************************************************************
|
||||
//@HEADER
|
||||
@ -99,7 +99,7 @@ struct fill_2D {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()( const int i ) const
|
||||
{
|
||||
for ( int j = 0; j < static_cast< int >( a.dimension_1() ); j++ ) {
|
||||
for ( int j = 0; j < static_cast< int >( a.extent(1) ); j++ ) {
|
||||
a( i, j ) = val;
|
||||
}
|
||||
}
|
||||
@ -122,7 +122,7 @@ void test_auto_1d ()
|
||||
typename mv_type::HostMirror X_h = Kokkos::create_mirror_view( X );
|
||||
|
||||
fill_2D< mv_type, Space > f1( X, ONE );
|
||||
Kokkos::parallel_for( X.dimension_0(), f1 );
|
||||
Kokkos::parallel_for( X.extent(0), f1 );
|
||||
Kokkos::fence();
|
||||
Kokkos::deep_copy( X_h, X );
|
||||
for ( size_type j = 0; j < numCols; ++j ) {
|
||||
@ -132,7 +132,7 @@ void test_auto_1d ()
|
||||
}
|
||||
|
||||
fill_2D< mv_type, Space > f2( X, 0.0 );
|
||||
Kokkos::parallel_for( X.dimension_0(), f2 );
|
||||
Kokkos::parallel_for( X.extent(0), f2 );
|
||||
Kokkos::fence();
|
||||
Kokkos::deep_copy( X_h, X );
|
||||
for ( size_type j = 0; j < numCols; ++j ) {
|
||||
@ -142,7 +142,7 @@ void test_auto_1d ()
|
||||
}
|
||||
|
||||
fill_2D< mv_type, Space > f3( X, TWO );
|
||||
Kokkos::parallel_for( X.dimension_0(), f3 );
|
||||
Kokkos::parallel_for( X.extent(0), f3 );
|
||||
Kokkos::fence();
|
||||
Kokkos::deep_copy( X_h, X );
|
||||
for ( size_type j = 0; j < numCols; ++j ) {
|
||||
@ -155,7 +155,7 @@ void test_auto_1d ()
|
||||
auto X_j = Kokkos::subview( X, Kokkos::ALL, j );
|
||||
|
||||
fill_1D< decltype( X_j ), Space > f4( X_j, ZERO );
|
||||
Kokkos::parallel_for( X_j.dimension_0(), f4 );
|
||||
Kokkos::parallel_for( X_j.extent(0), f4 );
|
||||
Kokkos::fence();
|
||||
Kokkos::deep_copy( X_h, X );
|
||||
for ( size_type i = 0; i < numRows; ++i ) {
|
||||
@ -165,7 +165,7 @@ void test_auto_1d ()
|
||||
for ( size_type jj = 0; jj < numCols; ++jj ) {
|
||||
auto X_jj = Kokkos::subview ( X, Kokkos::ALL, jj );
|
||||
fill_1D< decltype( X_jj ), Space > f5( X_jj, ONE );
|
||||
Kokkos::parallel_for( X_jj.dimension_0(), f5 );
|
||||
Kokkos::parallel_for( X_jj.extent(0), f5 );
|
||||
Kokkos::fence();
|
||||
Kokkos::deep_copy( X_h, X );
|
||||
for ( size_type i = 0; i < numRows; ++i ) {
|
||||
@ -243,17 +243,17 @@ void test_left_0()
|
||||
if ( Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, typename Space::memory_space >::accessible ) {
|
||||
view_static_8_type x_static_8( "x_static_left_8" );
|
||||
|
||||
ASSERT_TRUE( x_static_8.is_contiguous() );
|
||||
ASSERT_TRUE( x_static_8.span_is_contiguous() );
|
||||
|
||||
Kokkos::View< int, Kokkos::LayoutLeft, Space > x0 = Kokkos::subview( x_static_8, 0, 0, 0, 0, 0, 0, 0, 0 );
|
||||
|
||||
ASSERT_TRUE( x0.is_contiguous() );
|
||||
ASSERT_TRUE( x0.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x0() == & x_static_8( 0, 0, 0, 0, 0, 0, 0, 0 ) );
|
||||
|
||||
Kokkos::View< int*, Kokkos::LayoutLeft, Space > x1 =
|
||||
Kokkos::subview( x_static_8, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3, 0, 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( x1.is_contiguous() );
|
||||
ASSERT_TRUE( x1.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x1( 0 ) == & x_static_8( 0, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x1( 1 ) == & x_static_8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
|
||||
@ -261,7 +261,7 @@ void test_left_0()
|
||||
Kokkos::subview( x_static_8, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3
|
||||
, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( ! x2.is_contiguous() );
|
||||
ASSERT_TRUE( ! x2.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x2( 0, 0 ) == & x_static_8( 0, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x2( 1, 0 ) == & x_static_8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x2( 0, 1 ) == & x_static_8( 0, 1, 2, 3, 1, 1, 2, 3 ) );
|
||||
@ -272,7 +272,7 @@ void test_left_0()
|
||||
Kokkos::subview( x_static_8, 1, Kokkos::pair< int, int >( 0, 2 ), 2, 3
|
||||
, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( ! sx2.is_contiguous() );
|
||||
ASSERT_TRUE( ! sx2.span_is_contiguous() );
|
||||
ASSERT_TRUE( & sx2( 0, 0 ) == & x_static_8( 1, 0, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & sx2( 1, 0 ) == & x_static_8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & sx2( 0, 1 ) == & x_static_8( 1, 0, 2, 3, 1, 1, 2, 3 ) );
|
||||
@ -285,12 +285,12 @@ void test_left_0()
|
||||
, 2, Kokkos::pair< int, int >( 2, 4 ) /* of [5] */
|
||||
);
|
||||
|
||||
ASSERT_TRUE( ! sx4.is_contiguous() );
|
||||
ASSERT_TRUE( ! sx4.span_is_contiguous() );
|
||||
|
||||
for ( int i0 = 0; i0 < (int) sx4.dimension_0(); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.dimension_1(); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.dimension_2(); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.dimension_3(); ++i3 )
|
||||
for ( int i0 = 0; i0 < (int) sx4.extent(0); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.extent(1); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.extent(2); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.extent(3); ++i3 )
|
||||
{
|
||||
ASSERT_TRUE( & sx4( i0, i1, i2, i3 ) == & x_static_8( 0, 0 + i0, 1, 1 + i1, 1, 0 + i2, 2, 2 + i3 ) );
|
||||
}
|
||||
@ -305,17 +305,17 @@ void test_left_1()
|
||||
if ( Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, typename Space::memory_space >::accessible ) {
|
||||
view_type x8( "x_left_8", 2, 3, 4, 5 );
|
||||
|
||||
ASSERT_TRUE( x8.is_contiguous() );
|
||||
ASSERT_TRUE( x8.span_is_contiguous() );
|
||||
|
||||
Kokkos::View< int, Kokkos::LayoutLeft, Space > x0 = Kokkos::subview( x8, 0, 0, 0, 0, 0, 0, 0, 0 );
|
||||
|
||||
ASSERT_TRUE( x0.is_contiguous() );
|
||||
ASSERT_TRUE( x0.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x0() == & x8( 0, 0, 0, 0, 0, 0, 0, 0 ) );
|
||||
|
||||
Kokkos::View< int*, Kokkos::LayoutLeft, Space > x1 =
|
||||
Kokkos::subview( x8, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3, 0, 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( x1.is_contiguous() );
|
||||
ASSERT_TRUE( x1.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x1( 0 ) == & x8( 0, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x1( 1 ) == & x8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
|
||||
@ -323,7 +323,7 @@ void test_left_1()
|
||||
Kokkos::subview( x8, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3
|
||||
, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( ! x2.is_contiguous() );
|
||||
ASSERT_TRUE( ! x2.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x2( 0, 0 ) == & x8( 0, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x2( 1, 0 ) == & x8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x2( 0, 1 ) == & x8( 0, 1, 2, 3, 1, 1, 2, 3 ) );
|
||||
@ -334,7 +334,7 @@ void test_left_1()
|
||||
Kokkos::subview( x8, 1, Kokkos::pair< int, int >( 0, 2 ), 2, 3
|
||||
, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( ! sx2.is_contiguous() );
|
||||
ASSERT_TRUE( ! sx2.span_is_contiguous() );
|
||||
ASSERT_TRUE( & sx2( 0, 0 ) == & x8( 1, 0, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & sx2( 1, 0 ) == & x8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & sx2( 0, 1 ) == & x8( 1, 0, 2, 3, 1, 1, 2, 3 ) );
|
||||
@ -347,12 +347,12 @@ void test_left_1()
|
||||
, 2, Kokkos::pair< int, int >( 2, 4 ) /* of [5] */
|
||||
);
|
||||
|
||||
ASSERT_TRUE( ! sx4.is_contiguous() );
|
||||
ASSERT_TRUE( ! sx4.span_is_contiguous() );
|
||||
|
||||
for ( int i0 = 0; i0 < (int) sx4.dimension_0(); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.dimension_1(); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.dimension_2(); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.dimension_3(); ++i3 )
|
||||
for ( int i0 = 0; i0 < (int) sx4.extent(0); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.extent(1); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.extent(2); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.extent(3); ++i3 )
|
||||
{
|
||||
ASSERT_TRUE( & sx4( i0, i1, i2, i3 ) == & x8( 0, 0 + i0, 1, 1 + i1, 1, 0 + i2, 2, 2 + i3 ) );
|
||||
}
|
||||
@ -367,17 +367,17 @@ void test_left_2()
|
||||
if ( Kokkos::Impl::SpaceAccessibility<Kokkos::HostSpace, typename Space::memory_space>::accessible ) {
|
||||
view_type x4( "x4", 2, 3, 4, 5 );
|
||||
|
||||
ASSERT_TRUE( x4.is_contiguous() );
|
||||
ASSERT_TRUE( x4.span_is_contiguous() );
|
||||
|
||||
Kokkos::View< int, Kokkos::LayoutLeft, Space > x0 = Kokkos::subview( x4, 0, 0, 0, 0 );
|
||||
|
||||
ASSERT_TRUE( x0.is_contiguous() );
|
||||
ASSERT_TRUE( x0.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x0() == & x4( 0, 0, 0, 0 ) );
|
||||
|
||||
Kokkos::View< int*, Kokkos::LayoutLeft, Space > x1 =
|
||||
Kokkos::subview( x4, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( x1.is_contiguous() );
|
||||
ASSERT_TRUE( x1.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x1( 0 ) == & x4( 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & x1( 1 ) == & x4( 1, 1, 2, 3 ) );
|
||||
|
||||
@ -385,7 +385,7 @@ void test_left_2()
|
||||
Kokkos::subview( x4, Kokkos::pair< int, int >( 0, 2 ), 1
|
||||
, Kokkos::pair< int, int >( 1, 3 ), 2 );
|
||||
|
||||
ASSERT_TRUE( ! x2.is_contiguous() );
|
||||
ASSERT_TRUE( ! x2.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x2( 0, 0 ) == & x4( 0, 1, 1, 2 ) );
|
||||
ASSERT_TRUE( & x2( 1, 0 ) == & x4( 1, 1, 1, 2 ) );
|
||||
ASSERT_TRUE( & x2( 0, 1 ) == & x4( 0, 1, 2, 2 ) );
|
||||
@ -396,7 +396,7 @@ void test_left_2()
|
||||
Kokkos::subview( x4, 1, Kokkos::pair< int, int >( 0, 2 )
|
||||
, 2, Kokkos::pair< int, int >( 1, 4 ) );
|
||||
|
||||
ASSERT_TRUE( ! sx2.is_contiguous() );
|
||||
ASSERT_TRUE( ! sx2.span_is_contiguous() );
|
||||
ASSERT_TRUE( & sx2( 0, 0 ) == & x4( 1, 0, 2, 1 ) );
|
||||
ASSERT_TRUE( & sx2( 1, 0 ) == & x4( 1, 1, 2, 1 ) );
|
||||
ASSERT_TRUE( & sx2( 0, 1 ) == & x4( 1, 0, 2, 2 ) );
|
||||
@ -411,12 +411,12 @@ void test_left_2()
|
||||
, Kokkos::pair< int, int >( 2, 4 ) /* of [5] */
|
||||
);
|
||||
|
||||
ASSERT_TRUE( ! sx4.is_contiguous() );
|
||||
ASSERT_TRUE( ! sx4.span_is_contiguous() );
|
||||
|
||||
for ( int i0 = 0; i0 < (int) sx4.dimension_0(); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.dimension_1(); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.dimension_2(); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.dimension_3(); ++i3 )
|
||||
for ( int i0 = 0; i0 < (int) sx4.extent(0); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.extent(1); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.extent(2); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.extent(3); ++i3 )
|
||||
{
|
||||
ASSERT_TRUE( & sx4( i0, i1, i2, i3 ) == & x4( 1 + i0, 1 + i1, 0 + i2, 2 + i3 ) );
|
||||
}
|
||||
@ -431,26 +431,26 @@ void test_left_3()
|
||||
if ( Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, typename Space::memory_space >::accessible ) {
|
||||
view_type xm( "x4", 10, 5 );
|
||||
|
||||
ASSERT_TRUE( xm.is_contiguous() );
|
||||
ASSERT_TRUE( xm.span_is_contiguous() );
|
||||
|
||||
Kokkos::View< int, Kokkos::LayoutLeft, Space > x0 = Kokkos::subview( xm, 5, 3 );
|
||||
|
||||
ASSERT_TRUE( x0.is_contiguous() );
|
||||
ASSERT_TRUE( x0.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x0() == & xm( 5, 3 ) );
|
||||
|
||||
Kokkos::View< int*, Kokkos::LayoutLeft, Space > x1 = Kokkos::subview( xm, Kokkos::ALL, 3 );
|
||||
|
||||
ASSERT_TRUE( x1.is_contiguous() );
|
||||
for ( int i = 0; i < int( xm.dimension_0() ); ++i ) {
|
||||
ASSERT_TRUE( x1.span_is_contiguous() );
|
||||
for ( int i = 0; i < int( xm.extent(0) ); ++i ) {
|
||||
ASSERT_TRUE( & x1( i ) == & xm( i, 3 ) );
|
||||
}
|
||||
|
||||
Kokkos::View< int**, Kokkos::LayoutLeft, Space > x2 =
|
||||
Kokkos::subview( xm, Kokkos::pair< int, int >( 1, 9 ), Kokkos::ALL );
|
||||
|
||||
ASSERT_TRUE( ! x2.is_contiguous() );
|
||||
for ( int j = 0; j < int( x2.dimension_1() ); ++j )
|
||||
for ( int i = 0; i < int( x2.dimension_0() ); ++i )
|
||||
ASSERT_TRUE( ! x2.span_is_contiguous() );
|
||||
for ( int j = 0; j < int( x2.extent(1) ); ++j )
|
||||
for ( int i = 0; i < int( x2.extent(0) ); ++i )
|
||||
{
|
||||
ASSERT_TRUE( & x2( i, j ) == & xm( 1 + i, j ) );
|
||||
}
|
||||
@ -458,9 +458,9 @@ void test_left_3()
|
||||
Kokkos::View< int**, Kokkos::LayoutLeft, Space > x2c =
|
||||
Kokkos::subview( xm, Kokkos::ALL, std::pair< int, int >( 2, 4 ) );
|
||||
|
||||
ASSERT_TRUE( x2c.is_contiguous() );
|
||||
for ( int j = 0; j < int( x2c.dimension_1() ); ++j )
|
||||
for ( int i = 0; i < int( x2c.dimension_0() ); ++i )
|
||||
ASSERT_TRUE( x2c.span_is_contiguous() );
|
||||
for ( int j = 0; j < int( x2c.extent(1) ); ++j )
|
||||
for ( int i = 0; i < int( x2c.extent(0) ); ++i )
|
||||
{
|
||||
ASSERT_TRUE( & x2c( i, j ) == & xm( i, 2 + j ) );
|
||||
}
|
||||
@ -468,14 +468,14 @@ void test_left_3()
|
||||
Kokkos::View< int**, Kokkos::LayoutLeft, Space > x2_n1 =
|
||||
Kokkos::subview( xm, std::pair< int, int >( 1, 1 ), Kokkos::ALL );
|
||||
|
||||
ASSERT_TRUE( x2_n1.dimension_0() == 0 );
|
||||
ASSERT_TRUE( x2_n1.dimension_1() == xm.dimension_1() );
|
||||
ASSERT_TRUE( x2_n1.extent(0) == 0 );
|
||||
ASSERT_TRUE( x2_n1.extent(1) == xm.extent(1) );
|
||||
|
||||
Kokkos::View< int**, Kokkos::LayoutLeft, Space > x2_n2 =
|
||||
Kokkos::subview( xm, Kokkos::ALL, std::pair< int, int >( 1, 1 ) );
|
||||
|
||||
ASSERT_TRUE( x2_n2.dimension_0() == xm.dimension_0() );
|
||||
ASSERT_TRUE( x2_n2.dimension_1() == 0 );
|
||||
ASSERT_TRUE( x2_n2.extent(0) == xm.extent(0) );
|
||||
ASSERT_TRUE( x2_n2.extent(1) == 0 );
|
||||
}
|
||||
}
|
||||
|
||||
@ -496,7 +496,7 @@ void test_right_0()
|
||||
Kokkos::View< int*, Kokkos::LayoutRight, Space > x1 =
|
||||
Kokkos::subview( x_static_8, 0, 1, 2, 3, 0, 1, 2, Kokkos::pair< int, int >( 1, 3 ) );
|
||||
|
||||
ASSERT_TRUE( x1.dimension_0() == 2 );
|
||||
ASSERT_TRUE( x1.extent(0) == 2 );
|
||||
ASSERT_TRUE( & x1( 0 ) == & x_static_8( 0, 1, 2, 3, 0, 1, 2, 1 ) );
|
||||
ASSERT_TRUE( & x1( 1 ) == & x_static_8( 0, 1, 2, 3, 0, 1, 2, 2 ) );
|
||||
|
||||
@ -504,8 +504,8 @@ void test_right_0()
|
||||
Kokkos::subview( x_static_8, 0, 1, 2, Kokkos::pair< int, int >( 1, 3 )
|
||||
, 0, 1, 2, Kokkos::pair< int, int >( 1, 3 ) );
|
||||
|
||||
ASSERT_TRUE( x2.dimension_0() == 2 );
|
||||
ASSERT_TRUE( x2.dimension_1() == 2 );
|
||||
ASSERT_TRUE( x2.extent(0) == 2 );
|
||||
ASSERT_TRUE( x2.extent(1) == 2 );
|
||||
ASSERT_TRUE( & x2( 0, 0 ) == & x_static_8( 0, 1, 2, 1, 0, 1, 2, 1 ) );
|
||||
ASSERT_TRUE( & x2( 1, 0 ) == & x_static_8( 0, 1, 2, 2, 0, 1, 2, 1 ) );
|
||||
ASSERT_TRUE( & x2( 0, 1 ) == & x_static_8( 0, 1, 2, 1, 0, 1, 2, 2 ) );
|
||||
@ -516,8 +516,8 @@ void test_right_0()
|
||||
Kokkos::subview( x_static_8, 1, Kokkos::pair< int, int >( 0, 2 ), 2, 3
|
||||
, Kokkos::pair< int, int >( 0, 2 ), 1, 2, 3 );
|
||||
|
||||
ASSERT_TRUE( sx2.dimension_0() == 2 );
|
||||
ASSERT_TRUE( sx2.dimension_1() == 2 );
|
||||
ASSERT_TRUE( sx2.extent(0) == 2 );
|
||||
ASSERT_TRUE( sx2.extent(1) == 2 );
|
||||
ASSERT_TRUE( & sx2( 0, 0 ) == & x_static_8( 1, 0, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & sx2( 1, 0 ) == & x_static_8( 1, 1, 2, 3, 0, 1, 2, 3 ) );
|
||||
ASSERT_TRUE( & sx2( 0, 1 ) == & x_static_8( 1, 0, 2, 3, 1, 1, 2, 3 ) );
|
||||
@ -530,14 +530,14 @@ void test_right_0()
|
||||
, 2, Kokkos::pair< int, int >( 2, 4 ) /* of [5] */
|
||||
);
|
||||
|
||||
ASSERT_TRUE( sx4.dimension_0() == 2 );
|
||||
ASSERT_TRUE( sx4.dimension_1() == 2 );
|
||||
ASSERT_TRUE( sx4.dimension_2() == 2 );
|
||||
ASSERT_TRUE( sx4.dimension_3() == 2 );
|
||||
for ( int i0 = 0; i0 < (int) sx4.dimension_0(); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.dimension_1(); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.dimension_2(); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.dimension_3(); ++i3 )
|
||||
ASSERT_TRUE( sx4.extent(0) == 2 );
|
||||
ASSERT_TRUE( sx4.extent(1) == 2 );
|
||||
ASSERT_TRUE( sx4.extent(2) == 2 );
|
||||
ASSERT_TRUE( sx4.extent(3) == 2 );
|
||||
for ( int i0 = 0; i0 < (int) sx4.extent(0); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.extent(1); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.extent(2); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.extent(3); ++i3 )
|
||||
{
|
||||
ASSERT_TRUE( & sx4( i0, i1, i2, i3 ) == & x_static_8( 0, 0 + i0, 1, 1 + i1, 1, 0 + i2, 2, 2 + i3 ) );
|
||||
}
|
||||
@ -588,10 +588,10 @@ void test_right_1()
|
||||
, 2, Kokkos::pair< int, int >( 2, 4 ) /* of [5] */
|
||||
);
|
||||
|
||||
for ( int i0 = 0; i0 < (int) sx4.dimension_0(); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.dimension_1(); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.dimension_2(); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.dimension_3(); ++i3 )
|
||||
for ( int i0 = 0; i0 < (int) sx4.extent(0); ++i0 )
|
||||
for ( int i1 = 0; i1 < (int) sx4.extent(1); ++i1 )
|
||||
for ( int i2 = 0; i2 < (int) sx4.extent(2); ++i2 )
|
||||
for ( int i3 = 0; i3 < (int) sx4.extent(3); ++i3 )
|
||||
{
|
||||
ASSERT_TRUE( & sx4( i0, i1, i2, i3 ) == & x8( 0, 0 + i0, 1, 1 + i1, 1, 0 + i2, 2, 2 + i3 ) );
|
||||
}
|
||||
@ -606,35 +606,35 @@ void test_right_3()
|
||||
if ( Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, typename Space::memory_space >::accessible ) {
|
||||
view_type xm( "x4", 10, 5 );
|
||||
|
||||
ASSERT_TRUE( xm.is_contiguous() );
|
||||
ASSERT_TRUE( xm.span_is_contiguous() );
|
||||
|
||||
Kokkos::View< int, Kokkos::LayoutRight, Space > x0 = Kokkos::subview( xm, 5, 3 );
|
||||
|
||||
ASSERT_TRUE( x0.is_contiguous() );
|
||||
ASSERT_TRUE( x0.span_is_contiguous() );
|
||||
ASSERT_TRUE( & x0() == & xm( 5, 3 ) );
|
||||
|
||||
Kokkos::View< int*, Kokkos::LayoutRight, Space > x1 = Kokkos::subview( xm, 3, Kokkos::ALL );
|
||||
|
||||
ASSERT_TRUE( x1.is_contiguous() );
|
||||
for ( int i = 0; i < int( xm.dimension_1() ); ++i ) {
|
||||
ASSERT_TRUE( x1.span_is_contiguous() );
|
||||
for ( int i = 0; i < int( xm.extent(1) ); ++i ) {
|
||||
ASSERT_TRUE( & x1( i ) == & xm( 3, i ) );
|
||||
}
|
||||
|
||||
Kokkos::View< int**, Kokkos::LayoutRight, Space > x2c =
|
||||
Kokkos::subview( xm, Kokkos::pair< int, int >( 1, 9 ), Kokkos::ALL );
|
||||
|
||||
ASSERT_TRUE( x2c.is_contiguous() );
|
||||
for ( int j = 0; j < int( x2c.dimension_1() ); ++j )
|
||||
for ( int i = 0; i < int( x2c.dimension_0() ); ++i ) {
|
||||
ASSERT_TRUE( x2c.span_is_contiguous() );
|
||||
for ( int j = 0; j < int( x2c.extent(1) ); ++j )
|
||||
for ( int i = 0; i < int( x2c.extent(0) ); ++i ) {
|
||||
ASSERT_TRUE( & x2c( i, j ) == & xm( 1 + i, j ) );
|
||||
}
|
||||
|
||||
Kokkos::View< int**, Kokkos::LayoutRight, Space > x2 =
|
||||
Kokkos::subview( xm, Kokkos::ALL, std::pair< int, int >( 2, 4 ) );
|
||||
|
||||
ASSERT_TRUE( ! x2.is_contiguous() );
|
||||
for ( int j = 0; j < int( x2.dimension_1() ); ++j )
|
||||
for ( int i = 0; i < int( x2.dimension_0() ); ++i )
|
||||
ASSERT_TRUE( ! x2.span_is_contiguous() );
|
||||
for ( int j = 0; j < int( x2.extent(1) ); ++j )
|
||||
for ( int i = 0; i < int( x2.extent(0) ); ++i )
|
||||
{
|
||||
ASSERT_TRUE( & x2( i, j ) == & xm( i, 2 + j ) );
|
||||
}
|
||||
@ -642,14 +642,14 @@ void test_right_3()
|
||||
Kokkos::View< int**, Kokkos::LayoutRight, Space > x2_n1 =
|
||||
Kokkos::subview( xm, std::pair< int, int >( 1, 1 ), Kokkos::ALL );
|
||||
|
||||
ASSERT_TRUE( x2_n1.dimension_0() == 0 );
|
||||
ASSERT_TRUE( x2_n1.dimension_1() == xm.dimension_1() );
|
||||
ASSERT_TRUE( x2_n1.extent(0) == 0 );
|
||||
ASSERT_TRUE( x2_n1.extent(1) == xm.extent(1) );
|
||||
|
||||
Kokkos::View< int**, Kokkos::LayoutRight, Space > x2_n2 =
|
||||
Kokkos::subview( xm, Kokkos::ALL, std::pair< int, int >( 1, 1 ) );
|
||||
|
||||
ASSERT_TRUE( x2_n2.dimension_0() == xm.dimension_0() );
|
||||
ASSERT_TRUE( x2_n2.dimension_1() == 0 );
|
||||
ASSERT_TRUE( x2_n2.extent(0) == xm.extent(0) );
|
||||
ASSERT_TRUE( x2_n2.extent(1) == 0 );
|
||||
}
|
||||
}
|
||||
|
||||
@ -1091,16 +1091,16 @@ struct FillView_3D {
|
||||
void operator()( const int & ii ) const
|
||||
{
|
||||
const int i = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ii % a.dimension_0()
|
||||
: ii / ( a.dimension_1() * a.dimension_2() );
|
||||
? ii % a.extent(0)
|
||||
: ii / ( a.extent(1) * a.extent(2) );
|
||||
|
||||
const int j = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ( ii / a.dimension_0() ) % a.dimension_1()
|
||||
: ( ii / a.dimension_2() ) % a.dimension_1();
|
||||
? ( ii / a.extent(0) ) % a.extent(1)
|
||||
: ( ii / a.extent(2) ) % a.extent(1);
|
||||
|
||||
const int k = std::is_same< Layout, Kokkos::LayoutRight >::value
|
||||
? ii / ( a.dimension_0() * a.dimension_1() )
|
||||
: ii % a.dimension_2();
|
||||
? ii / ( a.extent(0) * a.extent(1) )
|
||||
: ii % a.extent(2);
|
||||
|
||||
a( i, j, k ) = 1000000 * i + 1000 * j + k;
|
||||
}
|
||||
@ -1113,20 +1113,20 @@ struct FillView_4D {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()( const int & ii ) const {
|
||||
const int i = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ii % a.dimension_0()
|
||||
: ii / ( a.dimension_1() * a.dimension_2() * a.dimension_3() );
|
||||
? ii % a.extent(0)
|
||||
: ii / ( a.extent(1) * a.extent(2) * a.extent(3) );
|
||||
|
||||
const int j = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ( ii / a.dimension_0() ) % a.dimension_1()
|
||||
: ( ii / ( a.dimension_2() * a.dimension_3() ) % a.dimension_1() );
|
||||
? ( ii / a.extent(0) ) % a.extent(1)
|
||||
: ( ii / ( a.extent(2) * a.extent(3) ) % a.extent(1) );
|
||||
|
||||
const int k = std::is_same< Layout, Kokkos::LayoutRight >::value
|
||||
? ( ii / ( a.dimension_0() * a.dimension_1() ) ) % a.dimension_2()
|
||||
: ( ii / a.dimension_3() ) % a.dimension_2();
|
||||
? ( ii / ( a.extent(0) * a.extent(1) ) ) % a.extent(2)
|
||||
: ( ii / a.extent(3) ) % a.extent(2);
|
||||
|
||||
const int l = std::is_same< Layout, Kokkos::LayoutRight >::value
|
||||
? ii / ( a.dimension_0() * a.dimension_1() * a.dimension_2() )
|
||||
: ii % a.dimension_3();
|
||||
? ii / ( a.extent(0) * a.extent(1) * a.extent(2) )
|
||||
: ii % a.extent(3);
|
||||
|
||||
a( i, j, k, l ) = 1000000 * i + 10000 * j + 100 * k + l;
|
||||
}
|
||||
@ -1142,16 +1142,16 @@ struct CheckSubviewCorrectness_3D_3D {
|
||||
void operator()( const int & ii ) const
|
||||
{
|
||||
const int i = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ii % b.dimension_0()
|
||||
: ii / ( b.dimension_1() * b.dimension_2() );
|
||||
? ii % b.extent(0)
|
||||
: ii / ( b.extent(1) * b.extent(2) );
|
||||
|
||||
const int j = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ( ii / b.dimension_0() ) % b.dimension_1()
|
||||
: ( ii / b.dimension_2() ) % b.dimension_1();
|
||||
? ( ii / b.extent(0) ) % b.extent(1)
|
||||
: ( ii / b.extent(2) ) % b.extent(1);
|
||||
|
||||
const int k = std::is_same< Layout, Kokkos::LayoutRight >::value
|
||||
? ii / ( b.dimension_0() * b.dimension_1() )
|
||||
: ii % b.dimension_2();
|
||||
? ii / ( b.extent(0) * b.extent(1) )
|
||||
: ii % b.extent(2);
|
||||
|
||||
if ( a( i + offset_0, j, k + offset_2 ) != b( i, j, k ) ) {
|
||||
Kokkos::abort( "Error: check_subview_correctness 3D-3D (LayoutLeft -> LayoutLeft or LayoutRight -> LayoutRight)" );
|
||||
@ -1168,16 +1168,16 @@ struct CheckSubviewCorrectness_3D_4D {
|
||||
KOKKOS_INLINE_FUNCTION
|
||||
void operator()( const int & ii ) const {
|
||||
const int i = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ii % b.dimension_0()
|
||||
: ii / ( b.dimension_1() * b.dimension_2() );
|
||||
? ii % b.extent(0)
|
||||
: ii / ( b.extent(1) * b.extent(2) );
|
||||
|
||||
const int j = std::is_same< Layout, Kokkos::LayoutLeft >::value
|
||||
? ( ii / b.dimension_0() ) % b.dimension_1()
|
||||
: ( ii / b.dimension_2() ) % b.dimension_1();
|
||||
? ( ii / b.extent(0) ) % b.extent(1)
|
||||
: ( ii / b.extent(2) ) % b.extent(1);
|
||||
|
||||
const int k = std::is_same< Layout, Kokkos::LayoutRight >::value
|
||||
? ii / ( b.dimension_0() * b.dimension_1() )
|
||||
: ii % b.dimension_2();
|
||||
? ii / ( b.extent(0) * b.extent(1) )
|
||||
: ii % b.extent(2);
|
||||
|
||||
int i0, i1, i2, i3;
|
||||
|
||||
@ -1306,7 +1306,7 @@ struct TestUnmanagedSubviewReset
|
||||
{
|
||||
auto sub_a = Kokkos::subview(a,0,Kokkos::ALL,Kokkos::ALL,Kokkos::ALL);
|
||||
|
||||
for ( int i = 0 ; i < int(a.dimension(0)) ; ++i ) {
|
||||
for ( int i = 0 ; i < int(a.extent(0)) ; ++i ) {
|
||||
sub_a.assign_data( & a(i,0,0,0) );
|
||||
if ( & sub_a(1,1,1) != & a(i,1,1,1) ) {
|
||||
Kokkos::abort("TestUnmanagedSubviewReset");
|
||||
|
||||
Reference in New Issue
Block a user