diff --git a/src/TNL/Containers/Segments/SlicedEllpack.hpp b/src/TNL/Containers/Segments/SlicedEllpack.hpp
index e23ee5f15b811aef83d7d05d0043432b3e831906..c8e74ec5911eca97b8bfa13a34211fbc00e6a58d 100644
--- a/src/TNL/Containers/Segments/SlicedEllpack.hpp
+++ b/src/TNL/Containers/Segments/SlicedEllpack.hpp
@@ -326,8 +326,8 @@ save( File& file ) const
    file.save( &size );
    file.save( &alignedSize );
    file.save( &segmentsCount );
-   this->sliceOffsets.save( file );
-   this->sliceSegmentSizes.save( file );
+   file << this->sliceOffsets;
+   file << this->sliceSegmentSizes;
 }
 
 template< typename Device,
@@ -341,8 +341,8 @@ load( File& file )
    file.load( &size );
    file.load( &alignedSize );
    file.load( &segmentsCount );
-   this->sliceOffsets.load( file );
-   this->sliceSegmentSizes.load( file );
+   file >> this->sliceOffsets;
+   file >> this->sliceSegmentSizes;
 }
 
       } // namespace Segments
diff --git a/src/UnitTests/Matrices/CMakeLists.txt b/src/UnitTests/Matrices/CMakeLists.txt
index ef1f043710a792b30d74cad335e6659643d3554b..9b168bd563781c12dab0c148fc9edea1776d33d3 100644
--- a/src/UnitTests/Matrices/CMakeLists.txt
+++ b/src/UnitTests/Matrices/CMakeLists.txt
@@ -34,6 +34,9 @@ IF( BUILD_CUDA )
    CUDA_ADD_EXECUTABLE( SparseMatrixTest_Ellpack_segments SparseMatrixTest_Ellpack_segments.cu OPTIONS ${CXX_TESTS_FLAGS} )
    TARGET_LINK_LIBRARIES( SparseMatrixTest_Ellpack_segments ${GTEST_BOTH_LIBRARIES} )
 
+   CUDA_ADD_EXECUTABLE( SparseMatrixTest_SlicedEllpack_segments SparseMatrixTest_SlicedEllpack_segments.cu OPTIONS ${CXX_TESTS_FLAGS} )
+   TARGET_LINK_LIBRARIES( SparseMatrixTest_SlicedEllpack_segments ${GTEST_BOTH_LIBRARIES} )
+
 ELSE(  BUILD_CUDA )
    ADD_EXECUTABLE( SparseMatrixCopyTest SparseMatrixCopyTest.cpp )
    TARGET_COMPILE_OPTIONS( SparseMatrixCopyTest PRIVATE ${CXX_TESTS_FLAGS} )
@@ -81,6 +84,9 @@ ELSE(  BUILD_CUDA )
    TARGET_COMPILE_OPTIONS( SparseMatrixTest_Ellpack_segments PRIVATE ${CXX_TESTS_FLAGS} )
    TARGET_LINK_LIBRARIES( SparseMatrixTest_Ellpack_segments ${GTEST_BOTH_LIBRARIES} )
 
+   ADD_EXECUTABLE( SparseMatrixTest_SlicedEllpack_segments SparseMatrixTest_SlicedEllpack_segments.cpp )
+   TARGET_COMPILE_OPTIONS( SparseMatrixTest_SlicedEllpack_segments PRIVATE ${CXX_TESTS_FLAGS} )
+   TARGET_LINK_LIBRARIES( SparseMatrixTest_SlicedEllpack_segments ${GTEST_BOTH_LIBRARIES} )
 
 ENDIF( BUILD_CUDA )
 
@@ -101,6 +107,7 @@ ADD_TEST( SparseMatrixTest_SlicedEllpack ${EXECUTABLE_OUTPUT_PATH}/SparseMatrixT
 # Segments tests
 ADD_TEST( SparseMatrixTest_CSR_segments ${EXECUTABLE_OUTPUT_PATH}/SparseMatrixTest_CSR_segments${CMAKE_EXECUTABLE_SUFFIX} )
 ADD_TEST( SparseMatrixTest_Ellpack_segments ${EXECUTABLE_OUTPUT_PATH}/SparseMatrixTest_Ellpack_segments${CMAKE_EXECUTABLE_SUFFIX} )
+ADD_TEST( SparseMatrixTest_SlicedEllpack_segments ${EXECUTABLE_OUTPUT_PATH}/SparseMatrixTest_SlicedEllpack_segments${CMAKE_EXECUTABLE_SUFFIX} )
 
 if( ${BUILD_MPI} )
    if( BUILD_CUDA )
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cpp b/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cpp
index 40e2e94b81ca64051ddceee82f46dd2d20e66e42..a88301100dd94be8d859e545ea9a03cc98f4da73 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cpp
+++ b/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cpp
@@ -1 +1 @@
-#include "SparseMatrixTest_SlicedEllpack.h"
+#include "SparseMatrixTest_SlicedEllpack_segments.h"
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cu b/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cu
index 40e2e94b81ca64051ddceee82f46dd2d20e66e42..a88301100dd94be8d859e545ea9a03cc98f4da73 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cu
+++ b/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.cu
@@ -1 +1 @@
-#include "SparseMatrixTest_SlicedEllpack.h"
+#include "SparseMatrixTest_SlicedEllpack_segments.h"
diff --git a/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.h b/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.h
index 0798f59dc49fbb5ada03d975fe60a61ae3e85fcc..00184754c6c26632b3e2ffbccd3b244be58a4771 100644
--- a/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.h
+++ b/src/UnitTests/Matrices/SparseMatrixTest_SlicedEllpack.h
@@ -1,14 +1,16 @@
 /***************************************************************************
-                          SparseMatrixTest_SlicedEllpack.h -  description
+                          SparseMatrixTest_SlicedEllpack_segments.h -  description
                              -------------------
-    begin                : Nov 2, 2018
-    copyright            : (C) 2018 by Tomas Oberhuber et al.
+    begin                : Dec 9, 2019
+    copyright            : (C) 2019 by Tomas Oberhuber et al.
     email                : tomas.oberhuber@fjfi.cvut.cz
  ***************************************************************************/
 
 /* See Copyright Notice in tnl/Copyright */
 
-#include <TNL/Matrices/SlicedEllpack.h>
+#include <TNL/Containers/Segments/SlicedEllpack.h>
+#include <TNL/Matrices/SparseMatrix.h>
+
 
 #include "SparseMatrixTest.hpp"
 #include <iostream>
@@ -24,38 +26,49 @@ protected:
    using SlicedEllpackMatrixType = Matrix;
 };
 
+////
+// Row-major format is used for the host system
+template< typename Device, typename Index >
+using RowMajorSlicedEllpack = TNL::Containers::Segments::SlicedEllpack< Device, Index, true, 32 >;
+
+
+////
+// Column-major format is used for GPUs
+template< typename Device, typename Index >
+using ColumnMajorSlicedEllpack = TNL::Containers::Segments::SlicedEllpack< Device, Index, false, 32 >;
+
 // types for which MatrixTest is instantiated
 using SlicedEllpackMatrixTypes = ::testing::Types
 <
-    TNL::Matrices::SlicedEllpack< int,    TNL::Devices::Host, short >,
-    TNL::Matrices::SlicedEllpack< long,   TNL::Devices::Host, short >,
-    TNL::Matrices::SlicedEllpack< float,  TNL::Devices::Host, short >,
-    TNL::Matrices::SlicedEllpack< double, TNL::Devices::Host, short >,
-    TNL::Matrices::SlicedEllpack< int,    TNL::Devices::Host, int >,
-    TNL::Matrices::SlicedEllpack< long,   TNL::Devices::Host, int >,
-    TNL::Matrices::SlicedEllpack< float,  TNL::Devices::Host, int >,
-    TNL::Matrices::SlicedEllpack< double, TNL::Devices::Host, int >,
-    TNL::Matrices::SlicedEllpack< int,    TNL::Devices::Host, long >,
-    TNL::Matrices::SlicedEllpack< long,   TNL::Devices::Host, long >,
-    TNL::Matrices::SlicedEllpack< float,  TNL::Devices::Host, long >,
-    TNL::Matrices::SlicedEllpack< double, TNL::Devices::Host, long >
+    TNL::Matrices::SparseMatrix< int,     RowMajorSlicedEllpack, TNL::Devices::Host, short >,
+    TNL::Matrices::SparseMatrix< long,    RowMajorSlicedEllpack, TNL::Devices::Host, short >,
+    TNL::Matrices::SparseMatrix< float,   RowMajorSlicedEllpack, TNL::Devices::Host, short >,
+    TNL::Matrices::SparseMatrix< double,  RowMajorSlicedEllpack, TNL::Devices::Host, short >,
+    TNL::Matrices::SparseMatrix< int,     RowMajorSlicedEllpack, TNL::Devices::Host, int   >,
+    TNL::Matrices::SparseMatrix< long,    RowMajorSlicedEllpack, TNL::Devices::Host, int   >,
+    TNL::Matrices::SparseMatrix< float,   RowMajorSlicedEllpack, TNL::Devices::Host, int   >,
+    TNL::Matrices::SparseMatrix< double,  RowMajorSlicedEllpack, TNL::Devices::Host, int   >,
+    TNL::Matrices::SparseMatrix< int,     RowMajorSlicedEllpack, TNL::Devices::Host, long  >,
+    TNL::Matrices::SparseMatrix< long,    RowMajorSlicedEllpack, TNL::Devices::Host, long  >,
+    TNL::Matrices::SparseMatrix< float,   RowMajorSlicedEllpack, TNL::Devices::Host, long  >,
+    TNL::Matrices::SparseMatrix< double,  RowMajorSlicedEllpack, TNL::Devices::Host, long  >
 #ifdef HAVE_CUDA
-   ,TNL::Matrices::SlicedEllpack< int,    TNL::Devices::Cuda, short >,
-    TNL::Matrices::SlicedEllpack< long,   TNL::Devices::Cuda, short >,
-    TNL::Matrices::SlicedEllpack< float,  TNL::Devices::Cuda, short >,
-    TNL::Matrices::SlicedEllpack< double, TNL::Devices::Cuda, short >,
-    TNL::Matrices::SlicedEllpack< int,    TNL::Devices::Cuda, int >,
-    TNL::Matrices::SlicedEllpack< long,   TNL::Devices::Cuda, int >,
-    TNL::Matrices::SlicedEllpack< float,  TNL::Devices::Cuda, int >,
-    TNL::Matrices::SlicedEllpack< double, TNL::Devices::Cuda, int >,
-    TNL::Matrices::SlicedEllpack< int,    TNL::Devices::Cuda, long >,
-    TNL::Matrices::SlicedEllpack< long,   TNL::Devices::Cuda, long >,
-    TNL::Matrices::SlicedEllpack< float,  TNL::Devices::Cuda, long >,
-    TNL::Matrices::SlicedEllpack< double, TNL::Devices::Cuda, long >
+   ,TNL::Matrices::SparseMatrix< int,     ColumnMajorSlicedEllpack, TNL::Devices::Cuda, short >,
+    TNL::Matrices::SparseMatrix< long,    ColumnMajorSlicedEllpack, TNL::Devices::Cuda, short >,
+    TNL::Matrices::SparseMatrix< float,   ColumnMajorSlicedEllpack, TNL::Devices::Cuda, short >,
+    TNL::Matrices::SparseMatrix< double,  ColumnMajorSlicedEllpack, TNL::Devices::Cuda, short >,
+    TNL::Matrices::SparseMatrix< int,     ColumnMajorSlicedEllpack, TNL::Devices::Cuda, int   >,
+    TNL::Matrices::SparseMatrix< long,    ColumnMajorSlicedEllpack, TNL::Devices::Cuda, int   >,
+    TNL::Matrices::SparseMatrix< float,   ColumnMajorSlicedEllpack, TNL::Devices::Cuda, int   >,
+    TNL::Matrices::SparseMatrix< double,  ColumnMajorSlicedEllpack, TNL::Devices::Cuda, int   >,
+    TNL::Matrices::SparseMatrix< int,     ColumnMajorSlicedEllpack, TNL::Devices::Cuda, long  >,
+    TNL::Matrices::SparseMatrix< long,    ColumnMajorSlicedEllpack, TNL::Devices::Cuda, long  >,
+    TNL::Matrices::SparseMatrix< float,   ColumnMajorSlicedEllpack, TNL::Devices::Cuda, long  >,
+    TNL::Matrices::SparseMatrix< double,  ColumnMajorSlicedEllpack, TNL::Devices::Cuda, long  >
 #endif
 >;
 
-TYPED_TEST_SUITE( SlicedEllpackMatrixTest, SlicedEllpackMatrixTypes );
+TYPED_TEST_SUITE( SlicedEllpackMatrixTest, SlicedEllpackMatrixTypes);
 
 TYPED_TEST( SlicedEllpackMatrixTest, setDimensionsTest )
 {
@@ -124,7 +137,7 @@ TYPED_TEST( SlicedEllpackMatrixTest, saveAndLoadTest )
 {
     using SlicedEllpackMatrixType = typename TestFixture::SlicedEllpackMatrixType;
 
-    test_SaveAndLoad< SlicedEllpackMatrixType >( "test_SparseMatrixTest_SlicedEllpack" );
+    test_SaveAndLoad< SlicedEllpackMatrixType >( "test_SparseMatrixTest_SlicedEllpack_segments" );
 }
 
 TYPED_TEST( SlicedEllpackMatrixTest, printTest )