Commit 55ded6ad authored by Jakub Klinkovský's avatar Jakub Klinkovský Committed by Jakub Klinkovský
Browse files

Removed conditional per-device Permutation and SliceInfo setting from NDArray and SlicedNDArray

parent de8f1eb8
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -85,7 +85,6 @@ void benchmark_1D( Benchmark& benchmark, index_type size = 500000000 )
   NDArray< value_type,
            SizesHolder< index_type, 0 >,
            std::make_index_sequence< 1 >,
            std::make_index_sequence< 1 >,
            Device > a, b;
   a.setSizes( size );
   b.setSizes( size );
@@ -113,7 +112,6 @@ void benchmark_2D( Benchmark& benchmark, index_type size = 22333 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0 >,
            std::make_index_sequence< 2 >,
            std::make_index_sequence< 2 >,
            Device > a, b;
   a.setSizes( size, size );
   b.setSizes( size, size );
@@ -141,7 +139,6 @@ void benchmark_3D( Benchmark& benchmark, index_type size = 800 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0 >,
            std::make_index_sequence< 3 >,
            std::make_index_sequence< 3 >,
            Device > a, b;
   a.setSizes( size, size, size );
   b.setSizes( size, size, size );
@@ -170,7 +167,6 @@ void benchmark_3D( Benchmark& benchmark, index_type size = 800 )
//   NDArray< value_type,
//            SizesHolder< index_type, 0, 0, 0, 0 >,
//            std::make_index_sequence< 4 >,
//            std::make_index_sequence< 4 >,
//            Device > a, b;
//   a.setSizes( size, size, size, size );
//   b.setSizes( size, size, size, size );
@@ -198,7 +194,6 @@ void benchmark_3D( Benchmark& benchmark, index_type size = 800 )
//   NDArray< value_type,
//            SizesHolder< index_type, 0, 0, 0, 0, 0 >,
//            std::make_index_sequence< 5 >,
//            std::make_index_sequence< 5 >,
//            Device > a, b;
//   a.setSizes( size, size, size, size, size );
//   b.setSizes( size, size, size, size, size );
@@ -226,7 +221,6 @@ void benchmark_3D( Benchmark& benchmark, index_type size = 800 )
//   NDArray< value_type,
//            SizesHolder< index_type, 0, 0, 0, 0, 0, 0 >,
//            std::make_index_sequence< 6 >,
//            std::make_index_sequence< 6 >,
//            Device > a, b;
//   a.setSizes( size, size, size, size, size, size );
//   b.setSizes( size, size, size, size, size, size );
@@ -255,7 +249,6 @@ void benchmark_2D_perm( Benchmark& benchmark, index_type size = 22333 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0 >,
            std::index_sequence< 1, 0 >,
            std::index_sequence< 1, 0 >,
            Device > a, b;
   a.setSizes( size, size );
   b.setSizes( size, size );
@@ -283,7 +276,6 @@ void benchmark_3D_perm( Benchmark& benchmark, index_type size = 800 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0 >,
            std::index_sequence< 2, 1, 0 >,
            std::index_sequence< 2, 1, 0 >,
            Device > a, b;
   a.setSizes( size, size, size );
   b.setSizes( size, size, size );
@@ -312,7 +304,6 @@ void benchmark_3D_perm( Benchmark& benchmark, index_type size = 800 )
//   NDArray< value_type,
//            SizesHolder< index_type, 0, 0, 0, 0 >,
//            std::index_sequence< 3, 2, 1, 0 >,
//            std::index_sequence< 3, 2, 1, 0 >,
//            Device > a, b;
//   a.setSizes( size, size, size, size );
//   b.setSizes( size, size, size, size );
@@ -340,7 +331,6 @@ void benchmark_3D_perm( Benchmark& benchmark, index_type size = 800 )
//   NDArray< value_type,
//            SizesHolder< index_type, 0, 0, 0, 0, 0 >,
//            std::index_sequence< 4, 3, 2, 1, 0 >,
//            std::index_sequence< 4, 3, 2, 1, 0 >,
//            Device > a, b;
//   a.setSizes( size, size, size, size, size );
//   b.setSizes( size, size, size, size, size );
@@ -368,7 +358,6 @@ void benchmark_3D_perm( Benchmark& benchmark, index_type size = 800 )
//   NDArray< value_type,
//            SizesHolder< index_type, 0, 0, 0, 0, 0, 0 >,
//            std::index_sequence< 5, 4, 3, 2, 1, 0 >,
//            std::index_sequence< 5, 4, 3, 2, 1, 0 >,
//            Device > a, b;
//   a.setSizes( size, size, size, size, size, size );
//   b.setSizes( size, size, size, size, size, size );
+0 −11
Original line number Diff line number Diff line
@@ -117,7 +117,6 @@ void benchmark_1D( Benchmark& benchmark, index_type size = 500000000 )
   NDArray< value_type,
            SizesHolder< index_type, 0 >,
            std::make_index_sequence< 1 >,
            std::make_index_sequence< 1 >,
            Device > a, b;
   a.setSizes( size );
   b.setSizes( size );
@@ -141,7 +140,6 @@ void benchmark_2D( Benchmark& benchmark, index_type size = 22333 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0 >,
            std::make_index_sequence< 2 >,
            std::make_index_sequence< 2 >,
            Device > a, b;
   a.setSizes( size, size );
   b.setSizes( size, size );
@@ -165,7 +163,6 @@ void benchmark_3D( Benchmark& benchmark, index_type size = 800 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0 >,
            std::make_index_sequence< 3 >,
            std::make_index_sequence< 3 >,
            Device > a, b;
   a.setSizes( size, size, size );
   b.setSizes( size, size, size );
@@ -189,7 +186,6 @@ void benchmark_4D( Benchmark& benchmark, index_type size = 150 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0, 0 >,
            std::make_index_sequence< 4 >,
            std::make_index_sequence< 4 >,
            Device > a, b;
   a.setSizes( size, size, size, size );
   b.setSizes( size, size, size, size );
@@ -213,7 +209,6 @@ void benchmark_5D( Benchmark& benchmark, index_type size = 56 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0, 0, 0 >,
            std::make_index_sequence< 5 >,
            std::make_index_sequence< 5 >,
            Device > a, b;
   a.setSizes( size, size, size, size, size );
   b.setSizes( size, size, size, size, size );
@@ -237,7 +232,6 @@ void benchmark_6D( Benchmark& benchmark, index_type size = 28 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0, 0, 0, 0 >,
            std::make_index_sequence< 6 >,
            std::make_index_sequence< 6 >,
            Device > a, b;
   a.setSizes( size, size, size, size, size, size );
   b.setSizes( size, size, size, size, size, size );
@@ -262,7 +256,6 @@ void benchmark_2D_perm( Benchmark& benchmark, index_type size = 22333 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0 >,
            std::index_sequence< 1, 0 >,
            std::index_sequence< 1, 0 >,
            Device > a, b;
   a.setSizes( size, size );
   b.setSizes( size, size );
@@ -286,7 +279,6 @@ void benchmark_3D_perm( Benchmark& benchmark, index_type size = 800 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0 >,
            std::index_sequence< 2, 1, 0 >,
            std::index_sequence< 2, 1, 0 >,
            Device > a, b;
   a.setSizes( size, size, size );
   b.setSizes( size, size, size );
@@ -310,7 +302,6 @@ void benchmark_4D_perm( Benchmark& benchmark, index_type size = 150 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0, 0 >,
            std::index_sequence< 3, 2, 1, 0 >,
            std::index_sequence< 3, 2, 1, 0 >,
            Device > a, b;
   a.setSizes( size, size, size, size );
   b.setSizes( size, size, size, size );
@@ -334,7 +325,6 @@ void benchmark_5D_perm( Benchmark& benchmark, index_type size = 56 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0, 0, 0 >,
            std::index_sequence< 4, 3, 2, 1, 0 >,
            std::index_sequence< 4, 3, 2, 1, 0 >,
            Device > a, b;
   a.setSizes( size, size, size, size, size );
   b.setSizes( size, size, size, size, size );
@@ -358,7 +348,6 @@ void benchmark_6D_perm( Benchmark& benchmark, index_type size = 28 )
   NDArray< value_type,
            SizesHolder< index_type, 0, 0, 0, 0, 0, 0 >,
            std::index_sequence< 5, 4, 3, 2, 1, 0 >,
            std::index_sequence< 5, 4, 3, 2, 1, 0 >,
            Device > a, b;
   a.setSizes( size, size, size, size, size, size );
   b.setSizes( size, size, size, size, size, size );
+9 −28
Original line number Diff line number Diff line
@@ -324,23 +324,18 @@ protected:

template< typename Value,
          typename SizesHolder,
          typename PermutationHost = std::make_index_sequence< SizesHolder::getDimension() >,  // identity by default
          typename PermutationCuda = std::make_index_sequence< SizesHolder::getDimension() >,  // identity by default
          typename Permutation = std::make_index_sequence< SizesHolder::getDimension() >,  // identity by default
          typename Device = Devices::Host,
          typename Index = typename SizesHolder::IndexType >
class NDArray
: public NDArrayStorage< Array< Value, Device, Index >,
                         SizesHolder,
                         typename std::conditional< std::is_same< Device, Devices::Host >::value,
                                                    PermutationHost,
                                                    PermutationCuda >::type,
                         Permutation,
                         __ndarray_impl::NDArrayBase< SliceInfo< 0, 0 > > >
{
   using Base = NDArrayStorage< Array< Value, Device, Index >,
                         SizesHolder,
                         typename std::conditional< std::is_same< Device, Devices::Host >::value,
                                                    PermutationHost,
                                                    PermutationCuda >::type,
                         Permutation,
                         __ndarray_impl::NDArrayBase< SliceInfo< 0, 0 > > >;

public:
@@ -403,34 +398,20 @@ public:

template< typename Value,
          typename SizesHolder,
          typename PermutationHost = std::make_index_sequence< SizesHolder::getDimension() >,  // identity by default
          typename SliceInfoHost = SliceInfo<>,  // no slicing by default
          typename PermutationCuda = std::make_index_sequence< SizesHolder::getDimension() >,  // identity by default
          typename SliceInfoCuda = SliceInfo<>,  // no slicing by default
          typename Permutation = std::make_index_sequence< SizesHolder::getDimension() >,  // identity by default
          typename SliceInfo = SliceInfo<>,  // no slicing by default
          typename Device = Devices::Host,
          typename Index = typename SizesHolder::IndexType >
class SlicedNDArray
: public NDArrayStorage< Array< Value, Device, Index >,
                         SizesHolder,
                         typename std::conditional< std::is_same< Device, Devices::Host >::value,
                                                    PermutationHost,
                                                    PermutationCuda >::type,
                         __ndarray_impl::SlicedNDArrayBase<
                            typename std::conditional< std::is_same< Device, Devices::Host >::value,
                                                       SliceInfoHost,
                                                       SliceInfoCuda >::type >
                        >
                         Permutation,
                         __ndarray_impl::SlicedNDArrayBase< SliceInfo > >
{
   using Base = NDArrayStorage< Array< Value, Device, Index >,
                         SizesHolder,
                         typename std::conditional< std::is_same< Device, Devices::Host >::value,
                                                    PermutationHost,
                                                    PermutationCuda >::type,
                         __ndarray_impl::SlicedNDArrayBase<
                            typename std::conditional< std::is_same< Device, Devices::Host >::value,
                                                       SliceInfoHost,
                                                       SliceInfoCuda >::type >
                        >;
                         Permutation,
                         __ndarray_impl::SlicedNDArrayBase< SliceInfo > >;

public:
   // inherit all assignment operators
+0 −1
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ struct SynchronizerBuffersLayer
   using NDArrayType = NDArray< typename DistributedNDArray::ValueType,
                                typename DistributedNDArray::SizesHolderType,
                                typename DistributedNDArray::PermutationType,
                                typename DistributedNDArray::PermutationType,
                                typename DistributedNDArray::DeviceType >;
   NDArrayType left_send_buffer, left_recv_buffer, right_send_buffer, right_recv_buffer;
   typename DistributedNDArray::LocalBeginsType left_send_offsets, left_recv_offsets, right_send_offsets, right_recv_offsets;
+0 −4
Original line number Diff line number Diff line
@@ -71,7 +71,6 @@ using DistributedNDArrayTypes = ::testing::Types<
   DistributedNDArray< NDArray< double,
                                SizesHolder< int, 0 >,
                                std::index_sequence< 0 >,
                                std::index_sequence< 0 >,
                                Devices::Host >,
                       Communicators::MpiCommunicator,
                       std::index_sequence< 2 > >
@@ -79,7 +78,6 @@ using DistributedNDArrayTypes = ::testing::Types<
//   DistributedNDArray< NDArray< double,
//                                SizesHolder< int, 0 >,
//                                std::index_sequence< 0 >,
//                                std::index_sequence< 0 >,
//                                Devices::Host >,
//                       Communicators::NoDistrCommunicator,
//                       std::index_sequence< 2 > >
@@ -88,7 +86,6 @@ using DistributedNDArrayTypes = ::testing::Types<
   DistributedNDArray< NDArray< double,
                                SizesHolder< int, 0 >,
                                std::index_sequence< 0 >,
                                std::index_sequence< 0 >,
                                Devices::Cuda >,
                       Communicators::MpiCommunicator,
                       std::index_sequence< 2 > >
@@ -96,7 +93,6 @@ using DistributedNDArrayTypes = ::testing::Types<
//   DistributedNDArray< NDArray< double,
//                                SizesHolder< int, 0 >,
//                                std::index_sequence< 0 >,
//                                std::index_sequence< 0 >,
//                                Devices::Cuda >,
//                       Communicators::NoDistrCommunicator,
//                       std::index_sequence< 2 > >
Loading