Skip to content
Snippets Groups Projects
Commit 258f4d76 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber Committed by Tomáš Oberhuber
Browse files

Added SlicedEllpack segments unit tests.

parent 01f367ca
No related branches found
No related tags found
1 merge request!48Segments
...@@ -14,8 +14,8 @@ IF( BUILD_CUDA ) ...@@ -14,8 +14,8 @@ IF( BUILD_CUDA )
CUDA_ADD_EXECUTABLE( SegmentsTest_Ellpack SegmentsTest_Ellpack.cu OPTIONS ${CXX_TESTS_FLAGS} ) CUDA_ADD_EXECUTABLE( SegmentsTest_Ellpack SegmentsTest_Ellpack.cu OPTIONS ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( SegmentsTest_Ellpack ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( SegmentsTest_Ellpack ${GTEST_BOTH_LIBRARIES} )
# CUDA_ADD_EXECUTABLE( SegmentsTest_SlicedEllpack SegmentsTest_SlicedEllpack.cu OPTIONS ${CXX_TESTS_FLAGS} ) CUDA_ADD_EXECUTABLE( SegmentsTest_SlicedEllpack SegmentsTest_SlicedEllpack.cu OPTIONS ${CXX_TESTS_FLAGS} )
# TARGET_LINK_LIBRARIES( SegmentsTest_SlicedEllpack ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( SegmentsTest_SlicedEllpack ${GTEST_BOTH_LIBRARIES} )
ELSE( BUILD_CUDA ) ELSE( BUILD_CUDA )
# ADD_EXECUTABLE( SegmentsTest_AdEllpack SegmentsTest_AdEllpack.cpp ) # ADD_EXECUTABLE( SegmentsTest_AdEllpack SegmentsTest_AdEllpack.cpp )
...@@ -38,9 +38,9 @@ ELSE( BUILD_CUDA ) ...@@ -38,9 +38,9 @@ ELSE( BUILD_CUDA )
TARGET_COMPILE_OPTIONS( SegmentsTest_Ellpack PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( SegmentsTest_Ellpack PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( SegmentsTest_Ellpack ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( SegmentsTest_Ellpack ${GTEST_BOTH_LIBRARIES} )
# ADD_EXECUTABLE( SegmentsTest_SlicedEllpack SegmentsTest_SlicedEllpack.cpp ) ADD_EXECUTABLE( SegmentsTest_SlicedEllpack SegmentsTest_SlicedEllpack.cpp )
# TARGET_COMPILE_OPTIONS( SegmentsTest_SlicedEllpack PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( SegmentsTest_SlicedEllpack PRIVATE ${CXX_TESTS_FLAGS} )
# TARGET_LINK_LIBRARIES( SegmentsTest_SlicedEllpack ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( SegmentsTest_SlicedEllpack ${GTEST_BOTH_LIBRARIES} )
ENDIF( BUILD_CUDA ) ENDIF( BUILD_CUDA )
...@@ -48,5 +48,5 @@ ENDIF( BUILD_CUDA ) ...@@ -48,5 +48,5 @@ ENDIF( BUILD_CUDA )
#ADD_TEST( SegmentsTest_ChunkedEllpack ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_ChunkedEllpack${CMAKE_EXECUTABLE_SUFFIX} ) #ADD_TEST( SegmentsTest_ChunkedEllpack ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_ChunkedEllpack${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( SegmentsTest_CSR ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_CSR${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( SegmentsTest_CSR ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_CSR${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( SegmentsTest_Ellpack ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_Ellpack${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( SegmentsTest_Ellpack ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_Ellpack${CMAKE_EXECUTABLE_SUFFIX} )
#ADD_TEST( SegmentsTest_SlicedEllpack ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_SlicedEllpack${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( SegmentsTest_SlicedEllpack ${EXECUTABLE_OUTPUT_PATH}/SegmentsTest_SlicedEllpack${CMAKE_EXECUTABLE_SUFFIX} )
...@@ -40,7 +40,6 @@ void test_SetSegmentsSizes_EqualSizes() ...@@ -40,7 +40,6 @@ void test_SetSegmentsSizes_EqualSizes()
EXPECT_EQ( segments2.getSegmentsCount(), segmentsCount ); EXPECT_EQ( segments2.getSegmentsCount(), segmentsCount );
EXPECT_EQ( segments2.getSize(), segmentsCount * segmentSize ); EXPECT_EQ( segments2.getSize(), segmentsCount * segmentSize );
EXPECT_LE( segments2.getSize(), segments2.getStorageSize() ); EXPECT_LE( segments2.getSize(), segments2.getStorageSize() );
for( IndexType i = 0; i < segmentsCount; i++ ) for( IndexType i = 0; i < segmentsCount; i++ )
EXPECT_EQ( segments2.getSegmentSize( i ), segmentSize ); EXPECT_EQ( segments2.getSegmentSize( i ), segmentSize );
...@@ -100,7 +99,6 @@ void test_AllReduction_MaximumInSegments() ...@@ -100,7 +99,6 @@ void test_AllReduction_MaximumInSegments()
const IndexType segmentsCount = 20; const IndexType segmentsCount = 20;
const IndexType segmentSize = 5; const IndexType segmentSize = 5;
const IndexType size = segmentsCount * segmentSize;
TNL::Containers::Vector< IndexType, DeviceType, IndexType > segmentsSizes( segmentsCount ); TNL::Containers::Vector< IndexType, DeviceType, IndexType > segmentsSizes( segmentsCount );
segmentsSizes = segmentSize; segmentsSizes = segmentSize;
...@@ -113,6 +111,13 @@ void test_AllReduction_MaximumInSegments() ...@@ -113,6 +111,13 @@ void test_AllReduction_MaximumInSegments()
for( IndexType i = 0; i < segmentsCount; i++ ) for( IndexType i = 0; i < segmentsCount; i++ )
for( IndexType j = 0; j < segmentSize; j++ ) for( IndexType j = 0; j < segmentSize; j++ )
v.setElement( segments.getGlobalIndex( i, j ), k++ ); 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;
return true;
};
segments.forAll( init );
std::cerr << v << std::endl;*/
TNL::Containers::Vector< IndexType, DeviceType, IndexType >result( segmentsCount ); TNL::Containers::Vector< IndexType, DeviceType, IndexType >result( segmentsCount );
...@@ -129,7 +134,6 @@ void test_AllReduction_MaximumInSegments() ...@@ -129,7 +134,6 @@ void test_AllReduction_MaximumInSegments()
}; };
segments.allReduction( fetch, reduce, keep, std::numeric_limits< IndexType >::min() ); segments.allReduction( fetch, reduce, keep, std::numeric_limits< IndexType >::min() );
std::cerr << result << std::endl;
for( IndexType i = 0; i < segmentsCount; i++ ) for( IndexType i = 0; i < segmentsCount; i++ )
EXPECT_EQ( result.getElement( i ), ( i + 1 ) * segmentSize ); EXPECT_EQ( result.getElement( i ), ( i + 1 ) * segmentSize );
} }
......
#include "SegmentsTest_SlicedEllpack.h"
#include "SegmentsTest_SlicedEllpack.h"
/***************************************************************************
SegmentsTest_SlicedEllpack.h - description
-------------------
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/Containers/Segments/SlicedEllpack.h>
#include "SegmentsTest.hpp"
#include <iostream>
#ifdef HAVE_GTEST
#include <gtest/gtest.h>
// test fixture for typed tests
template< typename Segments >
class SlicedEllpackSegmentsTest : public ::testing::Test
{
protected:
using SlicedEllpackSegmentsType = Segments;
};
// types for which MatrixTest is instantiated
using SlicedEllpackSegmentsTypes = ::testing::Types
<
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Host, int >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Host, long >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Host, int >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Host, long >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Host, int >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Host, long >
#ifdef HAVE_CUDA
,TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Cuda, int >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Cuda, long >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Cuda, int >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Cuda, long >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Cuda, int >,
TNL::Containers::Segments::SlicedEllpack< TNL::Devices::Cuda, long >,
#endif
>;
TYPED_TEST_SUITE( SlicedEllpackSegmentsTest, SlicedEllpackSegmentsTypes );
TYPED_TEST( SlicedEllpackSegmentsTest, setSegmentsSizes_EqualSizes )
{
using SlicedEllpackSegmentsType = typename TestFixture::SlicedEllpackSegmentsType;
test_SetSegmentsSizes_EqualSizes< SlicedEllpackSegmentsType >();
}
TYPED_TEST( SlicedEllpackSegmentsTest, allReduction_MaximumInSegments )
{
using SlicedEllpackSegmentsType = typename TestFixture::SlicedEllpackSegmentsType;
test_AllReduction_MaximumInSegments< SlicedEllpackSegmentsType >();
}
#endif
#include "../../main.h"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment