Loading src/implementation/matrices/tnlChunkedEllpackMatrix_impl.h +10 −7 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ bool tnlChunkedEllpackMatrix< Real, Device, Index >::setDimensions( const IndexT * Allocate slice info array. Note that there cannot be * more slices than rows. */ if( ! this->slices.setSize( rows ) || if( ! this->slices.setSize( this->rows ) || ! this->chunksToRowsMapping.setSize( this-> rows ) || ! this->slicesToRowsMapping.setSize( this->rows ) || ! this->rowPointers.setSize( this->rows + 1 ) ) Loading Loading @@ -331,12 +331,13 @@ bool tnlChunkedEllpackMatrix< Real, Device, Index >::addElementFast( const Index const RealType& value, const RealType& thisElementMultiplicator ) { tnlAssert( row >= 0 && row < this->rows && // TODO: return this back when CUDA kernels support cerr /*tnlAssert( row >= 0 && row < this->rows && column >= 0 && column <= this->rows, cerr << " row = " << row << " column = " << column << " this->rows = " << this->rows << " this->columns = " << this-> columns ); << " this->columns = " << this-> columns );*/ const IndexType& sliceIndex = slicesToRowsMapping[ row ]; tnlAssert( sliceIndex < this->rows, ); Loading @@ -344,10 +345,11 @@ bool tnlChunkedEllpackMatrix< Real, Device, Index >::addElementFast( const Index IndexType elementPtr = rowPointers[ row ]; const IndexType rowEnd = rowPointers[ row + 1 ]; tnlAssert( elementPtr >= 0, // TODO: return this back when CUDA kernels support cerr /*tnlAssert( elementPtr >= 0, cerr << "elementPtr = " << elementPtr ); tnlAssert( rowEnd <= this->columnIndexes.getSize(), cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() ); cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() );*/ while( elementPtr < rowEnd && this->columnIndexes[ elementPtr ] < column ) elementPtr++; if( elementPtr == rowEnd ) Loading Loading @@ -476,8 +478,9 @@ Real tnlChunkedEllpackMatrix< Real, Device, Index >::getElementFast( const Index const IndexType& chunkSize = slices.getElement( sliceIndex ).chunkSize; IndexType elementPtr = rowPointers[ row ]; const IndexType rowEnd = rowPointers[ row + 1 ]; tnlAssert( rowEnd <= this->columnIndexes.getSize(), cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() ); // TODO: return this back when CUDA kernels support cerr /*tnlAssert( rowEnd <= this->columnIndexes.getSize(), cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() );*/ while( elementPtr < rowEnd && this->columnIndexes[ elementPtr ] < column ) elementPtr++; if( elementPtr < rowEnd && this->columnIndexes[ elementPtr ] == column ) Loading tests/unit-tests/matrices/tnlChunkedEllpackMatrixTest.cpp +13 −12 Original line number Diff line number Diff line Loading @@ -21,23 +21,24 @@ #include <cstdlib> #include "tnlSparseMatrixTester.h" #include "tnlChunkedEllpackMatrixTestSetup.h" #include "../tnlUnitTestStarter.h" int main( int argc, char* argv[] ) { #ifdef HAVE_CPPUNIT if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int, 2, 16 > > >() if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() ) return EXIT_FAILURE; return EXIT_SUCCESS; Loading tests/unit-tests/matrices/tnlChunkedEllpackMatrixTest.cu +13 −12 Original line number Diff line number Diff line Loading @@ -21,23 +21,24 @@ #include <cstdlib> #include "tnlSparseMatrixTester.h" #include "tnlChunkedEllpackMatrixTestSetup.h" #include "../tnlUnitTestStarter.h" int main( int argc, char* argv[] ) { #ifdef HAVE_CPPUNIT if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int, 2, 16 > > >() if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() ) return EXIT_FAILURE; return EXIT_SUCCESS; Loading tests/unit-tests/matrices/tnlChunkedEllpackMatrixTestSetup.h 0 → 100644 +50 −0 Original line number Diff line number Diff line /*************************************************************************** tnlChunkedEllpackMatrixTestSetup.h - description ------------------- begin : May 9, 2014 copyright : (C) 2014 by Tomas Oberhuber email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef TNLCHUNKEDELLPACKMATRIXTESTSETUP_H_ #define TNLCHUNKEDELLPACKMATRIXTESTSETUP_H_ template< int SliceSize, int ChunkSize > class tnlChunkedEllpackMatrixTestSetup { public: enum { sliceSize = SliceSize }; enum { chunkSize = ChunkSize }; }; template< typename Real, typename Device, typename Index, typename TestSetup > class tnlSparseMatrixTesterMatrixSetter< tnlChunkedEllpackMatrix< Real, Device, Index >, TestSetup > { public: typedef tnlChunkedEllpackMatrix< Real, Device, Index > Matrix; static bool setup( Matrix& matrix ) { matrix.setNumberOfChunksInSlice( TestSetup::sliceSize ); matrix.setDesiredChunkSize( TestSetup::chunkSize ); return true; } }; #endif /* TNLCHUNKEDELLPACKMATRIXTESTSETUP_H_ */ tests/unit-tests/matrices/tnlSparseMatrixTester.h +30 −6 Original line number Diff line number Diff line Loading @@ -69,21 +69,23 @@ __global__ void tnlSparseMatrixTester__setRowFast_LowerTriangularMatrixTestCudaK #endif template< typename Matrix > class tnlSparseMatrixTesterMatrixSetter; class tnlSparseMatrixTestDefaultSetup {}; template<> template< typename Matrix, typename TestSetup > class tnlSparseMatrixTesterMatrixSetter { public: bool setup( Matrix& matrix ) static bool setup( Matrix& matrix ) { return true; } }; template< typename Matrix > template< typename Matrix, typename MatrixSetup = tnlSparseMatrixTestDefaultSetup > class tnlSparseMatrixTester : public CppUnit :: TestCase { public: Loading @@ -93,7 +95,8 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase typedef typename Matrix::IndexType IndexType; typedef tnlVector< RealType, DeviceType, IndexType > VectorType; typedef tnlVector< IndexType, DeviceType, IndexType > IndexVector; typedef tnlSparseMatrixTester< MatrixType > TesterType; typedef tnlSparseMatrixTester< MatrixType, MatrixSetup > TesterType; typedef tnlSparseMatrixTesterMatrixSetter< MatrixType, MatrixSetup > MatrixSetter; typedef typename CppUnit::TestCaller< TesterType > TestCallerType; tnlSparseMatrixTester(){}; Loading Loading @@ -136,6 +139,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setDimensionsTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); CPPUNIT_ASSERT( m.getRows() == 10 ); CPPUNIT_ASSERT( m.getColumns() == 10 ); Loading @@ -144,6 +148,8 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setLikeTest() { MatrixType m1, m2; MatrixSetter::setup( m1 ); MatrixSetter::setup( m2 ); m1.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m1.getRows() ); Loading @@ -159,12 +165,15 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); rowLengths.setValue( 7 ); m.setRowLengths( rowLengths ); cout << m << endl; for( int i = 0; i < 7; i++ ) CPPUNIT_ASSERT( m.setElement( 0, i, i ) ); CPPUNIT_ASSERT( m.setElement( 0, 8, 8 ) == false ); Loading @@ -177,6 +186,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFastTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -215,6 +225,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElement_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading @@ -239,6 +250,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFast_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -284,6 +296,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElement_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -318,6 +331,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFast_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -395,6 +409,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElement_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -431,6 +446,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFast_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -510,6 +526,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void addElementTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -539,6 +556,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRow_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -569,6 +587,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRowFast_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -622,6 +641,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRow_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -668,6 +688,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRowFast_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -760,6 +781,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRow_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -809,6 +831,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRowFast_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -907,6 +930,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase v.setSize( size ); w.setSize( size ); MatrixType m; MatrixSetter::setup( m ); m.setDimensions( size, size ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading
src/implementation/matrices/tnlChunkedEllpackMatrix_impl.h +10 −7 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ bool tnlChunkedEllpackMatrix< Real, Device, Index >::setDimensions( const IndexT * Allocate slice info array. Note that there cannot be * more slices than rows. */ if( ! this->slices.setSize( rows ) || if( ! this->slices.setSize( this->rows ) || ! this->chunksToRowsMapping.setSize( this-> rows ) || ! this->slicesToRowsMapping.setSize( this->rows ) || ! this->rowPointers.setSize( this->rows + 1 ) ) Loading Loading @@ -331,12 +331,13 @@ bool tnlChunkedEllpackMatrix< Real, Device, Index >::addElementFast( const Index const RealType& value, const RealType& thisElementMultiplicator ) { tnlAssert( row >= 0 && row < this->rows && // TODO: return this back when CUDA kernels support cerr /*tnlAssert( row >= 0 && row < this->rows && column >= 0 && column <= this->rows, cerr << " row = " << row << " column = " << column << " this->rows = " << this->rows << " this->columns = " << this-> columns ); << " this->columns = " << this-> columns );*/ const IndexType& sliceIndex = slicesToRowsMapping[ row ]; tnlAssert( sliceIndex < this->rows, ); Loading @@ -344,10 +345,11 @@ bool tnlChunkedEllpackMatrix< Real, Device, Index >::addElementFast( const Index IndexType elementPtr = rowPointers[ row ]; const IndexType rowEnd = rowPointers[ row + 1 ]; tnlAssert( elementPtr >= 0, // TODO: return this back when CUDA kernels support cerr /*tnlAssert( elementPtr >= 0, cerr << "elementPtr = " << elementPtr ); tnlAssert( rowEnd <= this->columnIndexes.getSize(), cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() ); cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() );*/ while( elementPtr < rowEnd && this->columnIndexes[ elementPtr ] < column ) elementPtr++; if( elementPtr == rowEnd ) Loading Loading @@ -476,8 +478,9 @@ Real tnlChunkedEllpackMatrix< Real, Device, Index >::getElementFast( const Index const IndexType& chunkSize = slices.getElement( sliceIndex ).chunkSize; IndexType elementPtr = rowPointers[ row ]; const IndexType rowEnd = rowPointers[ row + 1 ]; tnlAssert( rowEnd <= this->columnIndexes.getSize(), cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() ); // TODO: return this back when CUDA kernels support cerr /*tnlAssert( rowEnd <= this->columnIndexes.getSize(), cerr << "rowEnd = " << rowEnd << " this->columnIndexes.getSize() = " << this->columnIndexes.getSize() );*/ while( elementPtr < rowEnd && this->columnIndexes[ elementPtr ] < column ) elementPtr++; if( elementPtr < rowEnd && this->columnIndexes[ elementPtr ] == column ) Loading
tests/unit-tests/matrices/tnlChunkedEllpackMatrixTest.cpp +13 −12 Original line number Diff line number Diff line Loading @@ -21,23 +21,24 @@ #include <cstdlib> #include "tnlSparseMatrixTester.h" #include "tnlChunkedEllpackMatrixTestSetup.h" #include "../tnlUnitTestStarter.h" int main( int argc, char* argv[] ) { #ifdef HAVE_CPPUNIT if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int, 2, 16 > > >() if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlHost, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() ) return EXIT_FAILURE; return EXIT_SUCCESS; Loading
tests/unit-tests/matrices/tnlChunkedEllpackMatrixTest.cu +13 −12 Original line number Diff line number Diff line Loading @@ -21,23 +21,24 @@ #include <cstdlib> #include "tnlSparseMatrixTester.h" #include "tnlChunkedEllpackMatrixTestSetup.h" #include "../tnlUnitTestStarter.h" int main( int argc, char* argv[] ) { #ifdef HAVE_CPPUNIT if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int, 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int, 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int, 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int, 2, 16 > > >() if( ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 4, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 16, 2 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< float, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() || ! tnlUnitTestStarter :: run< tnlSparseMatrixTester< tnlChunkedEllpackMatrix< double, tnlCuda, long int >, tnlChunkedEllpackMatrixTestSetup< 2, 16 > > >() ) return EXIT_FAILURE; return EXIT_SUCCESS; Loading
tests/unit-tests/matrices/tnlChunkedEllpackMatrixTestSetup.h 0 → 100644 +50 −0 Original line number Diff line number Diff line /*************************************************************************** tnlChunkedEllpackMatrixTestSetup.h - description ------------------- begin : May 9, 2014 copyright : (C) 2014 by Tomas Oberhuber email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef TNLCHUNKEDELLPACKMATRIXTESTSETUP_H_ #define TNLCHUNKEDELLPACKMATRIXTESTSETUP_H_ template< int SliceSize, int ChunkSize > class tnlChunkedEllpackMatrixTestSetup { public: enum { sliceSize = SliceSize }; enum { chunkSize = ChunkSize }; }; template< typename Real, typename Device, typename Index, typename TestSetup > class tnlSparseMatrixTesterMatrixSetter< tnlChunkedEllpackMatrix< Real, Device, Index >, TestSetup > { public: typedef tnlChunkedEllpackMatrix< Real, Device, Index > Matrix; static bool setup( Matrix& matrix ) { matrix.setNumberOfChunksInSlice( TestSetup::sliceSize ); matrix.setDesiredChunkSize( TestSetup::chunkSize ); return true; } }; #endif /* TNLCHUNKEDELLPACKMATRIXTESTSETUP_H_ */
tests/unit-tests/matrices/tnlSparseMatrixTester.h +30 −6 Original line number Diff line number Diff line Loading @@ -69,21 +69,23 @@ __global__ void tnlSparseMatrixTester__setRowFast_LowerTriangularMatrixTestCudaK #endif template< typename Matrix > class tnlSparseMatrixTesterMatrixSetter; class tnlSparseMatrixTestDefaultSetup {}; template<> template< typename Matrix, typename TestSetup > class tnlSparseMatrixTesterMatrixSetter { public: bool setup( Matrix& matrix ) static bool setup( Matrix& matrix ) { return true; } }; template< typename Matrix > template< typename Matrix, typename MatrixSetup = tnlSparseMatrixTestDefaultSetup > class tnlSparseMatrixTester : public CppUnit :: TestCase { public: Loading @@ -93,7 +95,8 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase typedef typename Matrix::IndexType IndexType; typedef tnlVector< RealType, DeviceType, IndexType > VectorType; typedef tnlVector< IndexType, DeviceType, IndexType > IndexVector; typedef tnlSparseMatrixTester< MatrixType > TesterType; typedef tnlSparseMatrixTester< MatrixType, MatrixSetup > TesterType; typedef tnlSparseMatrixTesterMatrixSetter< MatrixType, MatrixSetup > MatrixSetter; typedef typename CppUnit::TestCaller< TesterType > TestCallerType; tnlSparseMatrixTester(){}; Loading Loading @@ -136,6 +139,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setDimensionsTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); CPPUNIT_ASSERT( m.getRows() == 10 ); CPPUNIT_ASSERT( m.getColumns() == 10 ); Loading @@ -144,6 +148,8 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setLikeTest() { MatrixType m1, m2; MatrixSetter::setup( m1 ); MatrixSetter::setup( m2 ); m1.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m1.getRows() ); Loading @@ -159,12 +165,15 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); rowLengths.setValue( 7 ); m.setRowLengths( rowLengths ); cout << m << endl; for( int i = 0; i < 7; i++ ) CPPUNIT_ASSERT( m.setElement( 0, i, i ) ); CPPUNIT_ASSERT( m.setElement( 0, 8, 8 ) == false ); Loading @@ -177,6 +186,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFastTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -215,6 +225,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElement_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading @@ -239,6 +250,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFast_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -284,6 +296,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElement_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -318,6 +331,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFast_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -395,6 +409,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElement_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -431,6 +446,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setElementFast_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -510,6 +526,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void addElementTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -539,6 +556,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRow_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -569,6 +587,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRowFast_DiagonalMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -622,6 +641,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRow_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -668,6 +688,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRowFast_DenseMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -760,6 +781,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRow_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -809,6 +831,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase void setRowFast_LowerTriangularMatrixTest() { MatrixType m; MatrixSetter::setup( m ); m.setDimensions( 10, 10 ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading Loading @@ -907,6 +930,7 @@ class tnlSparseMatrixTester : public CppUnit :: TestCase v.setSize( size ); w.setSize( size ); MatrixType m; MatrixSetter::setup( m ); m.setDimensions( size, size ); IndexVector rowLengths; rowLengths.setSize( m.getRows() ); Loading