From 5be2891b58b375441e8785b281b4a603e25852bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com> Date: Wed, 22 Jan 2020 21:02:00 +0100 Subject: [PATCH] Fixing segments. --- src/TNL/Containers/Segments/CSR.hpp | 2 +- src/TNL/Containers/Segments/CSRView.hpp | 4 ++-- src/TNL/Containers/Segments/SegmentView.h | 10 +++------- src/UnitTests/Containers/Segments/SegmentsTest.hpp | 12 ++++++------ 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/TNL/Containers/Segments/CSR.hpp b/src/TNL/Containers/Segments/CSR.hpp index 3581748fad..9a05d84f75 100644 --- a/src/TNL/Containers/Segments/CSR.hpp +++ b/src/TNL/Containers/Segments/CSR.hpp @@ -207,7 +207,7 @@ void CSR< Device, Index, IndexAllocator >:: forAll( Function& f, Args... args ) const { - this->forSegments( 0, this->getSize(), f, args... ); + this->forSegments( 0, this->getSegmentsCount(), f, args... ); } template< typename Device, diff --git a/src/TNL/Containers/Segments/CSRView.hpp b/src/TNL/Containers/Segments/CSRView.hpp index d8ea9b06ed..d6ec55b6af 100644 --- a/src/TNL/Containers/Segments/CSRView.hpp +++ b/src/TNL/Containers/Segments/CSRView.hpp @@ -156,7 +156,7 @@ auto CSRView< Device, Index >:: getSegmentView( const IndexType segmentIdx ) const -> SegmentViewType { - printf( "----> size %d \n", offsets[ segmentIdx + 1 ] ); + printf( "----> segmentIdx %d offset %d size %d ptr %p \n", segmentIdx, offsets[ segmentIdx ], offsets.getSize(), offsets.getData() ); return SegmentViewType( offsets[ segmentIdx ], offsets[ segmentIdx + 1 ] - offsets[ segmentIdx ], 1 ); } @@ -186,7 +186,7 @@ void CSRView< Device, Index >:: forAll( Function& f, Args... args ) const { - this->forSegments( 0, this->getSize(), f, args... ); + this->forSegments( 0, this->getSegmentsCount(), f, args... ); } template< typename Device, diff --git a/src/TNL/Containers/Segments/SegmentView.h b/src/TNL/Containers/Segments/SegmentView.h index edfe31df43..eeb3f9d244 100644 --- a/src/TNL/Containers/Segments/SegmentView.h +++ b/src/TNL/Containers/Segments/SegmentView.h @@ -29,16 +29,12 @@ class SegmentView< Index, false > SegmentView( const IndexType offset, const IndexType size, const IndexType step ) - : segmentOffset( offset ), segmentSize( size ), step( step ) - { - printf( "--- size = %d \n", size ); - }; + : segmentOffset( offset ), segmentSize( size ), step( step ){}; __cuda_callable__ SegmentView( const SegmentView& view ) - : segmentOffset( view.segmentOffset ), segmentSize( view.segmentSize ), step( view.step ) - { - }; + : segmentOffset( view.segmentOffset ), segmentSize( view.segmentSize ), step( view.step ){}; + __cuda_callable__ IndexType getSize() const { diff --git a/src/UnitTests/Containers/Segments/SegmentsTest.hpp b/src/UnitTests/Containers/Segments/SegmentsTest.hpp index 8320fafe57..590b39881f 100644 --- a/src/UnitTests/Containers/Segments/SegmentsTest.hpp +++ b/src/UnitTests/Containers/Segments/SegmentsTest.hpp @@ -127,17 +127,17 @@ void test_AllReduction_MaximumInSegments() TNL::Containers::Vector< IndexType, DeviceType, IndexType > v( segments.getStorageSize() ); - IndexType k( 1 ); + /*IndexType k( 1 ); for( IndexType i = 0; i < segmentsCount; i++ ) for( IndexType j = 0; j < segmentSize; j++ ) - v.setElement( segments.getGlobalIndex( i, j ), k++ ); - /*auto view = v.getView(); - auto init = [=] __cuda_callable__ ( const IndexType i, const IndexType j ) mutable -> bool { - view[ j ] = j + 1; + v.setElement( segments.getGlobalIndex( i, j ), k++ );*/ + auto view = v.getView(); + auto init = [=] __cuda_callable__ ( const IndexType segmentIdx, const IndexType localIdx, const IndexType globalIdx ) mutable -> bool { + view[ globalIdx ] = segmentIdx * 5 + localIdx + 1; return true; }; segments.forAll( init ); - std::cerr << v << std::endl;*/ + std::cerr << v << std::endl; TNL::Containers::Vector< IndexType, DeviceType, IndexType >result( segmentsCount ); -- GitLab