diff --git a/src/TNL/Algorithms/Segments/CSR.h b/src/TNL/Algorithms/Segments/CSR.h
index a05dccf29a3e282b42767d22e245fae841119110..fd5a80fd84e5ea92976fd98d08cec473c0911ccc 100644
--- a/src/TNL/Algorithms/Segments/CSR.h
+++ b/src/TNL/Algorithms/Segments/CSR.h
@@ -96,6 +96,10 @@ class CSR
       __cuda_callable__
       SegmentViewType getSegmentView( const IndexType segmentIdx ) const;
 
+      const OffsetsHolder& getOffsets() const;
+
+      OffsetsHolder& getOffsets();
+
       /***
        * \brief Go over all segments and for each segment element call
        * function 'f' with arguments 'args'. The return type of 'f' is bool.
diff --git a/src/TNL/Algorithms/Segments/CSR.hpp b/src/TNL/Algorithms/Segments/CSR.hpp
index d6a177f3be5206301b388575346a95bb04d76393..6ea5c49f7a8d60b6bf627f1d96569815a21cf0e6 100644
--- a/src/TNL/Algorithms/Segments/CSR.hpp
+++ b/src/TNL/Algorithms/Segments/CSR.hpp
@@ -201,6 +201,28 @@ getSegmentView( const IndexType segmentIdx ) const -> SegmentViewType
    return SegmentViewType( offsets[ segmentIdx ], offsets[ segmentIdx + 1 ] - offsets[ segmentIdx ] );
 }
 
+template< typename Device,
+          typename Index,
+          typename Kernel,
+          typename IndexAllocator >
+auto
+CSR< Device, Index, Kernel, IndexAllocator >::
+getOffsets() const -> const OffsetsHolder&
+{
+   return this->offsets;
+}
+
+template< typename Device,
+          typename Index,
+          typename Kernel,
+          typename IndexAllocator >
+auto
+CSR< Device, Index, Kernel, IndexAllocator >::
+getOffsets() -> OffsetsHolder&
+{
+   return this->offsets;
+}
+
 template< typename Device,
           typename Index,
           typename Kernel,