diff --git a/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-1.cpp b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-1.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f5fc25337cd0b5d6470c5ac2e507c4b8ef19fd53
--- /dev/null
+++ b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-1.cpp
@@ -0,0 +1,49 @@
+#include <iostream>
+#include <functional>
+#include <TNL/Containers/Vector.h>
+#include <TNL/Algorithms/Segments/CSR.h>
+#include <TNL/Algorithms/Segments/Ellpack.h>
+#include <TNL/Algorithms/Segments/ChunkedEllpack.h>
+#include <TNL/Algorithms/Segments/BiEllpack.h>
+#include <TNL/Devices/Host.h>
+#include <TNL/Devices/Cuda.h>
+
+template< typename Segments >
+void SegmentsExample()
+{
+   /***
+    * Create segments with given segments sizes and print their setup.
+    */
+   Segments segments{ 1, 2, 3, 4, 5 };
+   std::cout << "Segments sizes are: " << segments << std::endl << std::endl;
+}
+
+int main( int argc, char* argv[] )
+{
+   std::cout << "Example of CSR segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::CSR< TNL::Devices::Host, int > >();
+
+   std::cout << "Example of Ellpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::Ellpack< TNL::Devices::Host, int > >();
+
+   std::cout << "Example of ChunkedEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::ChunkedEllpack< TNL::Devices::Host, int > >();
+
+   std::cout << "Example of BiEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::BiEllpack< TNL::Devices::Host, int > >();
+
+#ifdef HAVE_CUDA
+   std::cout << "Example of CSR segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::CSR< TNL::Devices::Cuda, int > >();
+
+   std::cout << "Example of Ellpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::Ellpack< TNL::Devices::Cuda, int > >();
+
+   std::cout << "Example of ChunkedEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::ChunkedEllpack< TNL::Devices::Cuda, int > >();
+
+   std::cout << "Example of BiEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::BiEllpack< TNL::Devices::Cuda, int > >();
+#endif
+   return EXIT_SUCCESS;
+}
diff --git a/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-1.cu b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-1.cu
new file mode 120000
index 0000000000000000000000000000000000000000..42cd3852fcf53d8d8fe347f3e5f6b4d47ea9d86c
--- /dev/null
+++ b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-1.cu
@@ -0,0 +1 @@
+SegmentsPrintingExample-1.cpp
\ No newline at end of file
diff --git a/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-2.cpp b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ceaff0ecd9964da0ed87d223c28a583b0c7c9fc9
--- /dev/null
+++ b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-2.cpp
@@ -0,0 +1,68 @@
+#include <iostream>
+#include <functional>
+#include <TNL/Containers/Vector.h>
+#include <TNL/Algorithms/Segments/CSR.h>
+#include <TNL/Algorithms/Segments/Ellpack.h>
+#include <TNL/Algorithms/Segments/ChunkedEllpack.h>
+#include <TNL/Algorithms/Segments/BiEllpack.h>
+#include <TNL/Devices/Host.h>
+#include <TNL/Devices/Cuda.h>
+
+template< typename Segments >
+void SegmentsExample()
+{
+   using Device = typename Segments::DeviceType;
+
+   /***
+    * Create segments with given segments sizes.
+    */
+   TNL::Containers::Vector< int, Device > sizes{ 1, 2, 3, 4, 5 };
+   Segments segments( sizes );
+   std::cout << "Segments sizes are: " << segments << std::endl;
+
+   /***
+    * Allocate array for the segments;
+    */
+   TNL::Containers::Array< double, Device > data( segments.getStorageSize(), 0.0 );
+   data.forAllElements( [=] __cuda_callable__ ( int idx, double& value ) {
+      value = idx + 1.0;
+   } );
+
+   /***
+    * Print the data managed by the segments.
+    */
+   auto data_view = data.getView();
+   auto fetch = [=] __cuda_callable__ ( int globalIdx ) -> double { return data_view[ globalIdx ]; };
+   printSegments( segments, fetch, std::cout );
+   std::cout << std::endl;
+}
+
+int main( int argc, char* argv[] )
+{
+   std::cout << "Example of CSR segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::CSR< TNL::Devices::Host, int > >();
+
+   std::cout << "Example of Ellpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::Ellpack< TNL::Devices::Host, int > >();
+
+   std::cout << "Example of ChunkedEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::ChunkedEllpack< TNL::Devices::Host, int > >();
+
+   std::cout << "Example of BiEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::BiEllpack< TNL::Devices::Host, int > >();
+
+#ifdef HAVE_CUDA
+   std::cout << "Example of CSR segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::CSR< TNL::Devices::Cuda, int > >();
+
+   std::cout << "Example of Ellpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::Ellpack< TNL::Devices::Cuda, int > >();
+
+   std::cout << "Example of ChunkedEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::ChunkedEllpack< TNL::Devices::Cuda, int > >();
+
+   std::cout << "Example of BiEllpack segments on host: " << std::endl;
+   SegmentsExample< TNL::Algorithms::Segments::BiEllpack< TNL::Devices::Cuda, int > >();
+#endif
+   return EXIT_SUCCESS;
+}
diff --git a/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-2.cu b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-2.cu
new file mode 120000
index 0000000000000000000000000000000000000000..2f3149802f11c622ca908556b3d21412361879cc
--- /dev/null
+++ b/Documentation/Examples/Algorithms/Segments/SegmentsPrintingExample-2.cu
@@ -0,0 +1 @@
+SegmentsPrintingExample-2.cpp
\ No newline at end of file