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