Loading Documentation/Examples/Matrices/CMakeLists.txt +81 −30 Original line number Diff line number Diff line #IF( BUILD_CUDA ) # CUDA_ADD_EXECUTABLE( DenseMatrixExample_Constructor_init_list_cuda DenseMatrixExample_Constructor_init_list.cu ) # ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_Constructor_init_list_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_Constructor_init_list.out # OUTPUT DenseMatrixExample_Constructor_init_list.out ) # # CUDA_ADD_EXECUTABLE( DenseMatrixExample_setElements_cuda DenseMatrixExample_setElements.cu ) # ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElements_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElements.out # OUTPUT DenseMatrixExample_setElements.out ) # # CUDA_ADD_EXECUTABLE( DenseMatrixExample_getCompressedRowLengths_cuda DenseMatrixExample_getCompressedRowLengths.cu ) # ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getCompressedRowLengths_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getCompressedRowLengths.out # OUTPUT DenseMatrixExample_getCompressedRowLengths.out ) # #ELSE() IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_setElement_cuda DenseMatrixExample_setElement.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElement_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElement.out OUTPUT DenseMatrixExample_setElement.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_addElement_cuda DenseMatrixExample_addElement.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_addElement_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_addElement.out OUTPUT DenseMatrixExample_addElement.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_getElement_cuda DenseMatrixExample_getElement.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElement_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElement.out OUTPUT DenseMatrixExample_getElement.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_rowsReduction_cuda DenseMatrixExample_rowsReduction.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_rowsReduction_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_rowsReduction.out OUTPUT DenseMatrixExample_rowsReduction.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_allRowsReduction_cuda DenseMatrixExample_allRowsReduction.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_allRowsReduction_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_allRowsReduction.out OUTPUT DenseMatrixExample_allRowsReduction.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_forRows_cuda DenseMatrixExample_forRows.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_forRows_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_forRows.out OUTPUT DenseMatrixExample_forRows.out ) ELSE() ADD_EXECUTABLE( DenseMatrixExample_Constructor_init_list DenseMatrixExample_Constructor_init_list.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_Constructor_init_list > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_Constructor_init_list.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_Constructor_init_list > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_Constructor_init_list.out OUTPUT DenseMatrixExample_Constructor_init_list.out ) ADD_EXECUTABLE( DenseMatrixExample_setElements DenseMatrixExample_setElements.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElements > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElements.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElements > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElements.out OUTPUT DenseMatrixExample_setElements.out ) ADD_EXECUTABLE( DenseMatrixExample_getCompressedRowLengths DenseMatrixExample_getCompressedRowLengths.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getCompressedRowLengths > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getCompressedRowLengths.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getCompressedRowLengths > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getCompressedRowLengths.out OUTPUT DenseMatrixExample_getCompressedRowLengths.out ) ADD_EXECUTABLE( DenseMatrixExample_getElementsCount DenseMatrixExample_getElementsCount.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElementsCount > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElementsCount.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElementsCount > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElementsCount.out OUTPUT DenseMatrixExample_getElementsCount.out ) ADD_EXECUTABLE( DenseMatrixExample_getConstRow DenseMatrixExample_getConstRow.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getConstRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getConstRow.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getConstRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getConstRow.out OUTPUT DenseMatrixExample_getConstRow.out ) ADD_EXECUTABLE( DenseMatrixExample_getRow DenseMatrixExample_getRow.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getRow.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getRow.out OUTPUT DenseMatrixExample_getRow.out ) #ENDIF() ADD_EXECUTABLE( DenseMatrixExample_setElement DenseMatrixExample_setElement.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElement > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElement.out OUTPUT DenseMatrixExample_setElement.out ) ADD_EXECUTABLE( DenseMatrixExample_addElement DenseMatrixExample_addElement.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_addElement > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_addElement.out OUTPUT DenseMatrixExample_addElement.out ) ADD_EXECUTABLE( DenseMatrixExample_getElement DenseMatrixExample_getElement.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElement > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElement.out OUTPUT DenseMatrixExample_getElement.out ) ADD_EXECUTABLE( DenseMatrixExample_rowsReduction DenseMatrixExample_rowsReduction.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_rowsReduction > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_rowsReduction.out OUTPUT DenseMatrixExample_rowsReduction.out ) ADD_EXECUTABLE( DenseMatrixExample_allRowsReduction DenseMatrixExample_allRowsReduction.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_allRowsReduction > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_allRowsReduction.out OUTPUT DenseMatrixExample_allRowsReduction.out ) ADD_EXECUTABLE( DenseMatrixExample_forRows DenseMatrixExample_forRows.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_forRows > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_forRows.out OUTPUT DenseMatrixExample_forRows.out ) ENDIF() #IF( BUILD_CUDA ) #ADD_CUSTOM_TARGET( RunMatricesExamples-cuda ALL DEPENDS # DenseMatrixExample_Constructor_init_list.out # DenseMatrixExample_setElements.out # DenseMatrixExample_getCompressedRowLengths.out # ) #ELSE() ADD_CUSTOM_TARGET( RunMatricesExamples ALL DEPENDS DenseMatrixExample_Constructor_init_list.out DenseMatrixExample_setElements.out Loading @@ -52,5 +97,11 @@ ADD_CUSTOM_TARGET( RunMatricesExamples ALL DEPENDS DenseMatrixExample_getElementsCount.out DenseMatrixExample_getConstRow.out DenseMatrixExample_getRow.out DenseMatrixExample_setElement.out DenseMatrixExample_addElement.out DenseMatrixExample_getElement.out DenseMatrixExample_rowsReduction.out DenseMatrixExample_allRowsReduction.out DenseMatrixExample_forRows.out ) #ENDIF() Documentation/Examples/Matrices/DenseMatrixExample_addElement.cpp 0 → 100644 +30 −0 Original line number Diff line number Diff line #include <iostream> #include <TNL/Matrices/DenseMatrix.h> #include <TNL/Devices/Host.h> template< typename Device > void addElements() { TNL::Matrices::DenseMatrix< double, Device > matrix( 5, 5 ); for( int i = 0; i < 5; i++ ) matrix.setElement( i, i, i ); std::cout << "Initial matrix is: " << matrix << std::endl; for( int i = 0; i < 5; i++ ) for( int j = 0; j < 5; j++ ) matrix.addElement( i, j, 1.0, 5.0 ); std::cout << "Matrix after addition is: " << matrix << std::endl; } int main( int argc, char* argv[] ) { std::cout << "Add elements on host:" << std::endl; addElements< TNL::Devices::Host >(); #ifdef HAVE_CUDA std::cout << "Add elements on CUDA device:" << std::endl; addElements< TNL::Devices::Cuda >(); #endif } Documentation/Examples/Matrices/DenseMatrixExample_addElement.cu 0 → 120000 +1 −0 Original line number Diff line number Diff line DenseMatrixExample_addElement.cpp No newline at end of file Documentation/Examples/Matrices/DenseMatrixExample_allRowsReduction.cpp 0 → 100644 +66 −0 Original line number Diff line number Diff line #include <iostream> #include <iomanip> #include <functional> #include <TNL/Matrices/DenseMatrix.h> #include <TNL/Devices/Host.h> template< typename Device > void allRowsReduction() { TNL::Matrices::DenseMatrix< double, Device > matrix { { 1, 0, 0, 0, 0 }, { 1, 2, 0, 0, 0 }, { 0, 1, 8, 0, 0 }, { 0, 0, 1, 9, 0 }, { 0, 0, 0, 0, 1 } }; /*** * Find largest element in each row. */ TNL::Containers::Vector< double, Device > rowMax( matrix.getRows() ); /*** * Prepare vector view and matrix view for lambdas. */ const auto matrixView = matrix.getConstView(); auto rowMaxView = rowMax.getView(); /*** * Fetch lambda just returns absolute value of matrix elements. */ auto fetch = [=] __cuda_callable__ ( int rowIdx, int columnIdx, const double& value ) -> double { return TNL::abs( value ); }; /*** * Reduce lambda return maximum of given values. */ auto reduce = [=] __cuda_callable__ ( double& a, const double& b ) { a = TNL::max( a, b ); }; /*** * Keep lambda store the largest value in each row to the vector rowMax. */ auto keep = [=] __cuda_callable__ ( int rowIdx, const double& value ) mutable { rowMaxView[ rowIdx ] = value; }; /*** * Compute the largest values in each row. */ matrix.allRowsReduction( fetch, reduce, keep, std::numeric_limits< double >::lowest() ); std::cout << "Max. elements in rows are: " << rowMax << std::endl; } int main( int argc, char* argv[] ) { std::cout << "All rows reduction on host:" << std::endl; allRowsReduction< TNL::Devices::Host >(); #ifdef HAVE_CUDA std::cout << "All rows reduction on CUDA device:" << std::endl; allRowsReduction< TNL::Devices::Cuda >(); #endif } Documentation/Examples/Matrices/DenseMatrixExample_allRowsReduction.cu 0 → 120000 +1 −0 Original line number Diff line number Diff line DenseMatrixExample_allRowsReduction.cpp No newline at end of file Loading
Documentation/Examples/Matrices/CMakeLists.txt +81 −30 Original line number Diff line number Diff line #IF( BUILD_CUDA ) # CUDA_ADD_EXECUTABLE( DenseMatrixExample_Constructor_init_list_cuda DenseMatrixExample_Constructor_init_list.cu ) # ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_Constructor_init_list_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_Constructor_init_list.out # OUTPUT DenseMatrixExample_Constructor_init_list.out ) # # CUDA_ADD_EXECUTABLE( DenseMatrixExample_setElements_cuda DenseMatrixExample_setElements.cu ) # ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElements_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElements.out # OUTPUT DenseMatrixExample_setElements.out ) # # CUDA_ADD_EXECUTABLE( DenseMatrixExample_getCompressedRowLengths_cuda DenseMatrixExample_getCompressedRowLengths.cu ) # ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getCompressedRowLengths_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getCompressedRowLengths.out # OUTPUT DenseMatrixExample_getCompressedRowLengths.out ) # #ELSE() IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_setElement_cuda DenseMatrixExample_setElement.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElement_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElement.out OUTPUT DenseMatrixExample_setElement.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_addElement_cuda DenseMatrixExample_addElement.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_addElement_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_addElement.out OUTPUT DenseMatrixExample_addElement.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_getElement_cuda DenseMatrixExample_getElement.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElement_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElement.out OUTPUT DenseMatrixExample_getElement.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_rowsReduction_cuda DenseMatrixExample_rowsReduction.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_rowsReduction_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_rowsReduction.out OUTPUT DenseMatrixExample_rowsReduction.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_allRowsReduction_cuda DenseMatrixExample_allRowsReduction.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_allRowsReduction_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_allRowsReduction.out OUTPUT DenseMatrixExample_allRowsReduction.out ) CUDA_ADD_EXECUTABLE( DenseMatrixExample_forRows_cuda DenseMatrixExample_forRows.cu ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_forRows_cuda > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_forRows.out OUTPUT DenseMatrixExample_forRows.out ) ELSE() ADD_EXECUTABLE( DenseMatrixExample_Constructor_init_list DenseMatrixExample_Constructor_init_list.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_Constructor_init_list > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_Constructor_init_list.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_Constructor_init_list > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_Constructor_init_list.out OUTPUT DenseMatrixExample_Constructor_init_list.out ) ADD_EXECUTABLE( DenseMatrixExample_setElements DenseMatrixExample_setElements.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElements > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElements.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElements > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElements.out OUTPUT DenseMatrixExample_setElements.out ) ADD_EXECUTABLE( DenseMatrixExample_getCompressedRowLengths DenseMatrixExample_getCompressedRowLengths.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getCompressedRowLengths > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getCompressedRowLengths.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getCompressedRowLengths > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getCompressedRowLengths.out OUTPUT DenseMatrixExample_getCompressedRowLengths.out ) ADD_EXECUTABLE( DenseMatrixExample_getElementsCount DenseMatrixExample_getElementsCount.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElementsCount > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElementsCount.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElementsCount > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElementsCount.out OUTPUT DenseMatrixExample_getElementsCount.out ) ADD_EXECUTABLE( DenseMatrixExample_getConstRow DenseMatrixExample_getConstRow.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getConstRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getConstRow.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getConstRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getConstRow.out OUTPUT DenseMatrixExample_getConstRow.out ) ADD_EXECUTABLE( DenseMatrixExample_getRow DenseMatrixExample_getRow.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getRow.out ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getRow > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getRow.out OUTPUT DenseMatrixExample_getRow.out ) #ENDIF() ADD_EXECUTABLE( DenseMatrixExample_setElement DenseMatrixExample_setElement.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_setElement > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_setElement.out OUTPUT DenseMatrixExample_setElement.out ) ADD_EXECUTABLE( DenseMatrixExample_addElement DenseMatrixExample_addElement.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_addElement > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_addElement.out OUTPUT DenseMatrixExample_addElement.out ) ADD_EXECUTABLE( DenseMatrixExample_getElement DenseMatrixExample_getElement.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_getElement > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_getElement.out OUTPUT DenseMatrixExample_getElement.out ) ADD_EXECUTABLE( DenseMatrixExample_rowsReduction DenseMatrixExample_rowsReduction.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_rowsReduction > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_rowsReduction.out OUTPUT DenseMatrixExample_rowsReduction.out ) ADD_EXECUTABLE( DenseMatrixExample_allRowsReduction DenseMatrixExample_allRowsReduction.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_allRowsReduction > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_allRowsReduction.out OUTPUT DenseMatrixExample_allRowsReduction.out ) ADD_EXECUTABLE( DenseMatrixExample_forRows DenseMatrixExample_forRows.cpp ) ADD_CUSTOM_COMMAND( COMMAND DenseMatrixExample_forRows > ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/DenseMatrixExample_forRows.out OUTPUT DenseMatrixExample_forRows.out ) ENDIF() #IF( BUILD_CUDA ) #ADD_CUSTOM_TARGET( RunMatricesExamples-cuda ALL DEPENDS # DenseMatrixExample_Constructor_init_list.out # DenseMatrixExample_setElements.out # DenseMatrixExample_getCompressedRowLengths.out # ) #ELSE() ADD_CUSTOM_TARGET( RunMatricesExamples ALL DEPENDS DenseMatrixExample_Constructor_init_list.out DenseMatrixExample_setElements.out Loading @@ -52,5 +97,11 @@ ADD_CUSTOM_TARGET( RunMatricesExamples ALL DEPENDS DenseMatrixExample_getElementsCount.out DenseMatrixExample_getConstRow.out DenseMatrixExample_getRow.out DenseMatrixExample_setElement.out DenseMatrixExample_addElement.out DenseMatrixExample_getElement.out DenseMatrixExample_rowsReduction.out DenseMatrixExample_allRowsReduction.out DenseMatrixExample_forRows.out ) #ENDIF()
Documentation/Examples/Matrices/DenseMatrixExample_addElement.cpp 0 → 100644 +30 −0 Original line number Diff line number Diff line #include <iostream> #include <TNL/Matrices/DenseMatrix.h> #include <TNL/Devices/Host.h> template< typename Device > void addElements() { TNL::Matrices::DenseMatrix< double, Device > matrix( 5, 5 ); for( int i = 0; i < 5; i++ ) matrix.setElement( i, i, i ); std::cout << "Initial matrix is: " << matrix << std::endl; for( int i = 0; i < 5; i++ ) for( int j = 0; j < 5; j++ ) matrix.addElement( i, j, 1.0, 5.0 ); std::cout << "Matrix after addition is: " << matrix << std::endl; } int main( int argc, char* argv[] ) { std::cout << "Add elements on host:" << std::endl; addElements< TNL::Devices::Host >(); #ifdef HAVE_CUDA std::cout << "Add elements on CUDA device:" << std::endl; addElements< TNL::Devices::Cuda >(); #endif }
Documentation/Examples/Matrices/DenseMatrixExample_addElement.cu 0 → 120000 +1 −0 Original line number Diff line number Diff line DenseMatrixExample_addElement.cpp No newline at end of file
Documentation/Examples/Matrices/DenseMatrixExample_allRowsReduction.cpp 0 → 100644 +66 −0 Original line number Diff line number Diff line #include <iostream> #include <iomanip> #include <functional> #include <TNL/Matrices/DenseMatrix.h> #include <TNL/Devices/Host.h> template< typename Device > void allRowsReduction() { TNL::Matrices::DenseMatrix< double, Device > matrix { { 1, 0, 0, 0, 0 }, { 1, 2, 0, 0, 0 }, { 0, 1, 8, 0, 0 }, { 0, 0, 1, 9, 0 }, { 0, 0, 0, 0, 1 } }; /*** * Find largest element in each row. */ TNL::Containers::Vector< double, Device > rowMax( matrix.getRows() ); /*** * Prepare vector view and matrix view for lambdas. */ const auto matrixView = matrix.getConstView(); auto rowMaxView = rowMax.getView(); /*** * Fetch lambda just returns absolute value of matrix elements. */ auto fetch = [=] __cuda_callable__ ( int rowIdx, int columnIdx, const double& value ) -> double { return TNL::abs( value ); }; /*** * Reduce lambda return maximum of given values. */ auto reduce = [=] __cuda_callable__ ( double& a, const double& b ) { a = TNL::max( a, b ); }; /*** * Keep lambda store the largest value in each row to the vector rowMax. */ auto keep = [=] __cuda_callable__ ( int rowIdx, const double& value ) mutable { rowMaxView[ rowIdx ] = value; }; /*** * Compute the largest values in each row. */ matrix.allRowsReduction( fetch, reduce, keep, std::numeric_limits< double >::lowest() ); std::cout << "Max. elements in rows are: " << rowMax << std::endl; } int main( int argc, char* argv[] ) { std::cout << "All rows reduction on host:" << std::endl; allRowsReduction< TNL::Devices::Host >(); #ifdef HAVE_CUDA std::cout << "All rows reduction on CUDA device:" << std::endl; allRowsReduction< TNL::Devices::Cuda >(); #endif }
Documentation/Examples/Matrices/DenseMatrixExample_allRowsReduction.cu 0 → 120000 +1 −0 Original line number Diff line number Diff line DenseMatrixExample_allRowsReduction.cpp No newline at end of file