Loading src/TNL/Containers/Segments/ChunkedEllpack.hpp +0 −1 Original line number Diff line number Diff line Loading @@ -303,7 +303,6 @@ getSegmentSize( const IndexType segmentIdx ) const const IndexType lastChunkOfSegment = rowToChunkMapping[ segmentIdx ]; const IndexType segmentChunksCount = lastChunkOfSegment - firstChunkOfSegment; const IndexType chunkSize = slices[ sliceIndex ].chunkSize; std::cerr << chunkSize << " * " << segmentChunksCount << std::endl; return chunkSize * segmentChunksCount; } Loading src/TNL/Containers/Segments/details/Ellpack.hdeleted 100644 → 0 +0 −105 Original line number Diff line number Diff line /*************************************************************************** Ellpack.h - description ------------------- begin : Dec 3, 2019 copyright : (C) 2019 by Tomas Oberhuber email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /* See Copyright Notice in tnl/Copyright */ #pragma once #include <TNL/Containers/Vector.h> namespace TNL { namespace Containers { namespace Segments { template< typename Device, typename Index, bool RowMajorOrder = std::is_same< Device, Devices::Host >::value, int Alignment = 32 > class Ellpack { public: using DeviceType = Device; using IndexType = Index; static constexpr int getAlignment() { return Alignment; } static constexpr bool getRowMajorOrder() { return RowMajorOrder; } using OffsetsHolder = Containers::Vector< IndexType, DeviceType, IndexType >; using SegmentsSizes = OffsetsHolder; Ellpack(); Ellpack( const SegmentsSizes& sizes ); Ellpack( const IndexType segmentsCount, const IndexType segmentSize ); Ellpack( const Ellpack& segments ); Ellpack( const Ellpack&& segments ); /** * \brief Set sizes of particular segments. */ template< typename SizesHolder = OffsetsHolder > void setSegmentsSizes( const SizesHolder& sizes ); void setSegmentsSizes( const IndexType segmentsCount, const IndexType segmentSize ); /** * \brief Number segments. */ __cuda_callable__ IndexType getSegmentsCount() const; __cuda_callable__ IndexType getSegmentSize( const IndexType segmentIdx ) const; __cuda_callable__ IndexType getSize() const; __cuda_callable__ IndexType getStorageSize() const; __cuda_callable__ IndexType getGlobalIndex( const Index segmentIdx, const Index localIdx ) const; __cuda_callable__ void getSegmentAndLocalIndex( const Index globalIdx, Index& segmentIdx, Index& localIdx ) const; /*** * \brief Go over all segments and for each segment element call * function 'f' with arguments 'args'. The return type of 'f' is bool. * When its true, the for-loop continues. Once 'f' returns false, the for-loop * is terminated. */ template< typename Function, typename... Args > void forSegments( IndexType first, IndexType last, Function& f, Args... args ) const; template< typename Function, typename... Args > void forAll( Function& f, Args... args ) const; /*** * \brief Go over all segments and perform a reduction in each of them. */ template< typename Fetch, typename Reduction, typename ResultKeeper, typename Real, typename... Args > void segmentsReduction( IndexType first, IndexType last, Fetch& fetch, Reduction& reduction, ResultKeeper& keeper, const Real& zero, Args... args ) const; template< typename Fetch, typename Reduction, typename ResultKeeper, typename Real, typename... Args > void allReduction( Fetch& fetch, Reduction& reduction, ResultKeeper& keeper, const Real& zero, Args... args ) const; void save( File& file ) const; void load( File& file ); protected: IndexType segmentSize, size, alignedSize; }; } // namespace Segements } // namespace Conatiners } // namespace TNL src/TNL/Containers/Segments/details/SlicedEllpack.h +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ template< typename Device, typename Index, bool RowMajorOrder = std::is_same< Device, Devices::Host >::value, int SliceSize = 32 > class SlicedEllpack class { public: Loading Loading
src/TNL/Containers/Segments/ChunkedEllpack.hpp +0 −1 Original line number Diff line number Diff line Loading @@ -303,7 +303,6 @@ getSegmentSize( const IndexType segmentIdx ) const const IndexType lastChunkOfSegment = rowToChunkMapping[ segmentIdx ]; const IndexType segmentChunksCount = lastChunkOfSegment - firstChunkOfSegment; const IndexType chunkSize = slices[ sliceIndex ].chunkSize; std::cerr << chunkSize << " * " << segmentChunksCount << std::endl; return chunkSize * segmentChunksCount; } Loading
src/TNL/Containers/Segments/details/Ellpack.hdeleted 100644 → 0 +0 −105 Original line number Diff line number Diff line /*************************************************************************** Ellpack.h - description ------------------- begin : Dec 3, 2019 copyright : (C) 2019 by Tomas Oberhuber email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /* See Copyright Notice in tnl/Copyright */ #pragma once #include <TNL/Containers/Vector.h> namespace TNL { namespace Containers { namespace Segments { template< typename Device, typename Index, bool RowMajorOrder = std::is_same< Device, Devices::Host >::value, int Alignment = 32 > class Ellpack { public: using DeviceType = Device; using IndexType = Index; static constexpr int getAlignment() { return Alignment; } static constexpr bool getRowMajorOrder() { return RowMajorOrder; } using OffsetsHolder = Containers::Vector< IndexType, DeviceType, IndexType >; using SegmentsSizes = OffsetsHolder; Ellpack(); Ellpack( const SegmentsSizes& sizes ); Ellpack( const IndexType segmentsCount, const IndexType segmentSize ); Ellpack( const Ellpack& segments ); Ellpack( const Ellpack&& segments ); /** * \brief Set sizes of particular segments. */ template< typename SizesHolder = OffsetsHolder > void setSegmentsSizes( const SizesHolder& sizes ); void setSegmentsSizes( const IndexType segmentsCount, const IndexType segmentSize ); /** * \brief Number segments. */ __cuda_callable__ IndexType getSegmentsCount() const; __cuda_callable__ IndexType getSegmentSize( const IndexType segmentIdx ) const; __cuda_callable__ IndexType getSize() const; __cuda_callable__ IndexType getStorageSize() const; __cuda_callable__ IndexType getGlobalIndex( const Index segmentIdx, const Index localIdx ) const; __cuda_callable__ void getSegmentAndLocalIndex( const Index globalIdx, Index& segmentIdx, Index& localIdx ) const; /*** * \brief Go over all segments and for each segment element call * function 'f' with arguments 'args'. The return type of 'f' is bool. * When its true, the for-loop continues. Once 'f' returns false, the for-loop * is terminated. */ template< typename Function, typename... Args > void forSegments( IndexType first, IndexType last, Function& f, Args... args ) const; template< typename Function, typename... Args > void forAll( Function& f, Args... args ) const; /*** * \brief Go over all segments and perform a reduction in each of them. */ template< typename Fetch, typename Reduction, typename ResultKeeper, typename Real, typename... Args > void segmentsReduction( IndexType first, IndexType last, Fetch& fetch, Reduction& reduction, ResultKeeper& keeper, const Real& zero, Args... args ) const; template< typename Fetch, typename Reduction, typename ResultKeeper, typename Real, typename... Args > void allReduction( Fetch& fetch, Reduction& reduction, ResultKeeper& keeper, const Real& zero, Args... args ) const; void save( File& file ) const; void load( File& file ); protected: IndexType segmentSize, size, alignedSize; }; } // namespace Segements } // namespace Conatiners } // namespace TNL
src/TNL/Containers/Segments/details/SlicedEllpack.h +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ template< typename Device, typename Index, bool RowMajorOrder = std::is_same< Device, Devices::Host >::value, int SliceSize = 32 > class SlicedEllpack class { public: Loading