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

Added unit tests for CSR matrix using Segments.

parent d849e7ac
No related branches found
No related tags found
1 merge request!48Segments
......@@ -25,6 +25,12 @@ IF( BUILD_CUDA )
CUDA_ADD_EXECUTABLE( DenseMatrixTest DenseMatrixTest.cu OPTIONS ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( DenseMatrixTest ${GTEST_BOTH_LIBRARIES} )
####
# Segments tests
CUDA_ADD_EXECUTABLE( SparseMatrixTest_CSR_segments SparseMatrixTest_CSR_segments.cu OPTIONS ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( SparseMatrixTest_CSR_segments ${GTEST_BOTH_LIBRARIES} )
ELSE( BUILD_CUDA )
ADD_EXECUTABLE( SparseMatrixCopyTest SparseMatrixCopyTest.cpp )
TARGET_COMPILE_OPTIONS( SparseMatrixCopyTest PRIVATE ${CXX_TESTS_FLAGS} )
......@@ -61,6 +67,13 @@ ELSE( BUILD_CUDA )
ADD_EXECUTABLE( DenseMatrixTest DenseMatrixTest.cpp )
TARGET_COMPILE_OPTIONS( DenseMatrixTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( DenseMatrixTest ${GTEST_BOTH_LIBRARIES} )
####
# Segments tests
ADD_EXECUTABLE( SparseMatrixTest_CSR_segments SparseMatrixTest_CSR_segments.cpp )
TARGET_COMPILE_OPTIONS( SparseMatrixTest_CSR_segments PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( SparseMatrixTest_CSR_segments ${GTEST_BOTH_LIBRARIES} )
ENDIF( BUILD_CUDA )
......@@ -76,6 +89,9 @@ ADD_TEST( SparseMatrixTest_SlicedEllpack ${EXECUTABLE_OUTPUT_PATH}/SparseMatrixT
# TODO: DenseMatrixTest is not finished
#ADD_TEST( DenseMatrixTest ${EXECUTABLE_OUTPUT_PATH}/DenseMatrixTest${CMAKE_EXECUTABLE_SUFFIX} )
####
# Segments tests
ADD_TEST( SparseMatrixTest_CSR_segments ${EXECUTABLE_OUTPUT_PATH}/SparseMatrixTest_CSR_segments${CMAKE_EXECUTABLE_SUFFIX} )
if( ${BUILD_MPI} )
if( BUILD_CUDA )
......
#include "SparseMatrixTest_CSR_segments.h"
#include "SparseMatrixTest_CSR_segments.h"
/***************************************************************************
SparseMatrixTest_CSR.h - description
-------------------
begin : Nov 2, 2018
copyright : (C) 2018 by Tomas Oberhuber et al.
email : tomas.oberhuber@fjfi.cvut.cz
***************************************************************************/
/* See Copyright Notice in tnl/Copyright */
#include <TNL/Containers/Segments/CSR.h>
#include <TNL/Matrices/SparseMatrix.h>
#include "SparseMatrixTest.hpp"
#include <iostream>
#ifdef HAVE_GTEST
#include <gtest/gtest.h>
// test fixture for typed tests
template< typename Matrix >
class CSRMatrixTest : public ::testing::Test
{
protected:
using CSRMatrixType = Matrix;
};
// types for which MatrixTest is instantiated
using CSRMatrixTypes = ::testing::Types
<
TNL::Matrices::SparseMatrix< int, TNL::Containers::Segments::CSR, TNL::Devices::Host, short >,
TNL::Matrices::SparseMatrix< long, TNL::Containers::Segments::CSR, TNL::Devices::Host, short >,
TNL::Matrices::SparseMatrix< float, TNL::Containers::Segments::CSR, TNL::Devices::Host, short >,
TNL::Matrices::SparseMatrix< double, TNL::Containers::Segments::CSR, TNL::Devices::Host, short >,
TNL::Matrices::SparseMatrix< int, TNL::Containers::Segments::CSR, TNL::Devices::Host, int >,
TNL::Matrices::SparseMatrix< long, TNL::Containers::Segments::CSR, TNL::Devices::Host, int >,
TNL::Matrices::SparseMatrix< float, TNL::Containers::Segments::CSR, TNL::Devices::Host, int >,
TNL::Matrices::SparseMatrix< double, TNL::Containers::Segments::CSR, TNL::Devices::Host, int >,
TNL::Matrices::SparseMatrix< int, TNL::Containers::Segments::CSR, TNL::Devices::Host, long >,
TNL::Matrices::SparseMatrix< long, TNL::Containers::Segments::CSR, TNL::Devices::Host, long >,
TNL::Matrices::SparseMatrix< float, TNL::Containers::Segments::CSR, TNL::Devices::Host, long >,
TNL::Matrices::SparseMatrix< double, TNL::Containers::Segments::CSR, TNL::Devices::Host, long >
#ifdef HAVE_CUDA
,TNL::Matrices::SparseMatrix< int, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, short >,
TNL::Matrices::SparseMatrix< long, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, short >,
TNL::Matrices::SparseMatrix< float, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, short >,
TNL::Matrices::SparseMatrix< double, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, short >,
TNL::Matrices::SparseMatrix< int, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, int >,
TNL::Matrices::SparseMatrix< long, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, int >,
TNL::Matrices::SparseMatrix< float, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, int >,
TNL::Matrices::SparseMatrix< double, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, int >,
TNL::Matrices::SparseMatrix< int, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, long >,
TNL::Matrices::SparseMatrix< long, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, long >,
TNL::Matrices::SparseMatrix< float, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, long >,
TNL::Matrices::SparseMatrix< double, TNL::Containers::Segments::CSR, TNL::Devices::Cuda, long >
#endif
>;
TYPED_TEST_SUITE( CSRMatrixTest, CSRMatrixTypes);
TYPED_TEST( CSRMatrixTest, setDimensionsTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_SetDimensions< CSRMatrixType >();
}
//TYPED_TEST( CSRMatrixTest, setCompressedRowLengthsTest )
//{
//// using CSRMatrixType = typename TestFixture::CSRMatrixType;
//
//// test_SetCompressedRowLengths< CSRMatrixType >();
//
// bool testRan = false;
// EXPECT_TRUE( testRan );
// std::cout << "\nTEST DID NOT RUN. NOT WORKING.\n\n";
// std::cout << " This test is dependent on the input format. \n";
// std::cout << " Almost every format allocates elements per row differently.\n\n";
// std::cout << "\n TODO: Finish implementation of getNonZeroRowLength (Only non-zero elements, not the number of allocated elements.)\n\n";
//}
TYPED_TEST( CSRMatrixTest, setLikeTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_SetLike< CSRMatrixType, CSRMatrixType >();
}
TYPED_TEST( CSRMatrixTest, resetTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_Reset< CSRMatrixType >();
}
TYPED_TEST( CSRMatrixTest, setElementTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_SetElement< CSRMatrixType >();
}
TYPED_TEST( CSRMatrixTest, addElementTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_AddElement< CSRMatrixType >();
}
TYPED_TEST( CSRMatrixTest, setRowTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_SetRow< CSRMatrixType >();
}
TYPED_TEST( CSRMatrixTest, vectorProductTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_VectorProduct< CSRMatrixType >();
}
TYPED_TEST( CSRMatrixTest, saveAndLoadTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_SaveAndLoad< CSRMatrixType >( "test_SparseMatrixTest_CSR" );
}
TYPED_TEST( CSRMatrixTest, printTest )
{
using CSRMatrixType = typename TestFixture::CSRMatrixType;
test_Print< CSRMatrixType >();
}
#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