Commit aa336ffb authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Writting documentation on SparseMatrixView.

parent 4220d2ef
Loading
Loading
Loading
Loading
+119 −131
Original line number Diff line number Diff line
@@ -84,65 +84,60 @@ IF( BUILD_CUDA )
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixExample_forAllRows.out
                       OUTPUT SparseMatrixExample_forAllRows.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_constructor_cuda SparseMatrixViewExample_constructor.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_constructor_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_constructor.out
#                       OUTPUT SparseMatrixViewExample_constructor.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getCompressedRowLengths_cuda SparseMatrixViewExample_getCompressedRowLengths.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getCompressedRowLengths_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getCompressedRowLengths.out
#                       OUTPUT SparseMatrixViewExample_getCompressedRowLengths.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getElementsCount_cuda SparseMatrixViewExample_getElementsCount.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getElementsCount_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getElementsCount.out
#                       OUTPUT SparseMatrixViewExample_getElementsCount.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getConstRow_cuda SparseMatrixViewExample_getConstRow.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getConstRow_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getConstRow.out
#                       OUTPUT SparseMatrixViewExample_getConstRow.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getRow_cuda SparseMatrixViewExample_getRow.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getRow_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getRow.out
#                       OUTPUT SparseMatrixViewExample_getRow.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_setElement_cuda SparseMatrixViewExample_setElement.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_setElement_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_setElement.out
#                       OUTPUT SparseMatrixViewExample_setElement.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_addElement_cuda SparseMatrixViewExample_addElement.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_addElement_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_addElement.out
#                       OUTPUT SparseMatrixViewExample_addElement.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getElement_cuda SparseMatrixViewExample_getElement.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getElement_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getElement.out
#                       OUTPUT SparseMatrixViewExample_getElement.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_rowsReduction_cuda SparseMatrixViewExample_rowsReduction.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_rowsReduction_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_rowsReduction.out
#                       OUTPUT SparseMatrixViewExample_rowsReduction.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_allRowsReduction_cuda SparseMatrixViewExample_allRowsReduction.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_allRowsReduction_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_allRowsReduction.out
#                       OUTPUT SparseMatrixViewExample_allRowsReduction.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_forRows_cuda SparseMatrixViewExample_forRows.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forRows_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forRows.out
#                       OUTPUT SparseMatrixViewExample_forRows.out )

#   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_forAllRows_cuda SparseMatrixViewExample_forAllRows.cu )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forAllRows_cuda >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forAllRows.out
#                       OUTPUT SparseMatrixViewExample_forAllRows.out )
   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getSerializationType_cuda SparseMatrixViewExample_getSerializationType.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getSerializationType_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getSerializationType.out
                       OUTPUT SparseMatrixViewExample_getSerializationType.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getCompressedRowLengths_cuda SparseMatrixViewExample_getCompressedRowLengths.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getCompressedRowLengths_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getCompressedRowLengths.out
                       OUTPUT SparseMatrixViewExample_getCompressedRowLengths.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getConstRow_cuda SparseMatrixViewExample_getConstRow.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getConstRow_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getConstRow.out
                       OUTPUT SparseMatrixViewExample_getConstRow.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getRow_cuda SparseMatrixViewExample_getRow.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getRow_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getRow.out
                       OUTPUT SparseMatrixViewExample_getRow.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_setElement_cuda SparseMatrixViewExample_setElement.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_setElement_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_setElement.out
                       OUTPUT SparseMatrixViewExample_setElement.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_addElement_cuda SparseMatrixViewExample_addElement.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_addElement_cuda >
                       ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_addElement.out
                       OUTPUT SparseMatrixViewExample_addElement.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_getElement_cuda SparseMatrixViewExample_getElement.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getElement_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getElement.out
                       OUTPUT SparseMatrixViewExample_getElement.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_rowsReduction_cuda SparseMatrixViewExample_rowsReduction.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_rowsReduction_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_rowsReduction.out
                       OUTPUT SparseMatrixViewExample_rowsReduction.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_allRowsReduction_cuda SparseMatrixViewExample_allRowsReduction.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_allRowsReduction_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_allRowsReduction.out
                       OUTPUT SparseMatrixViewExample_allRowsReduction.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_forRows_cuda SparseMatrixViewExample_forRows.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forRows_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forRows.out
                       OUTPUT SparseMatrixViewExample_forRows.out )

   CUDA_ADD_EXECUTABLE( SparseMatrixViewExample_forAllRows_cuda SparseMatrixViewExample_forAllRows.cu )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forAllRows_cuda >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forAllRows.out
                       OUTPUT SparseMatrixViewExample_forAllRows.out )

ELSE()
   ADD_EXECUTABLE( SparseMatrixExample_Constructor_init_list_1 SparseMatrixExample_Constructor_init_list_1.cpp )
@@ -230,65 +225,60 @@ ELSE()
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixExample_forAllRows.out
                       OUTPUT SparseMatrixExample_forAllRows.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_constructor SparseMatrixViewExample_constructor.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_constructor >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_constructor.out
#                       OUTPUT SparseMatrixViewExample_constructor.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_getCompressedRowLengths SparseMatrixViewExample_getCompressedRowLengths.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getCompressedRowLengths >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getCompressedRowLengths.out
#                       OUTPUT SparseMatrixViewExample_getCompressedRowLengths.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_getElementsCount SparseMatrixViewExample_getElementsCount.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getElementsCount >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getElementsCount.out
#                       OUTPUT SparseMatrixViewExample_getElementsCount.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_getConstRow SparseMatrixViewExample_getConstRow.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getConstRow >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getConstRow.out
#                       OUTPUT SparseMatrixViewExample_getConstRow.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_getRow SparseMatrixViewExample_getRow.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getRow >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getRow.out
#                       OUTPUT SparseMatrixViewExample_getRow.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_setElement SparseMatrixViewExample_setElement.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_setElement >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_setElement.out
#                       OUTPUT SparseMatrixViewExample_setElement.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_addElement SparseMatrixViewExample_addElement.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_addElement >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_addElement.out
#                       OUTPUT SparseMatrixViewExample_addElement.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_getElement SparseMatrixViewExample_getElement.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getElement >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getElement.out
#                       OUTPUT SparseMatrixViewExample_getElement.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_rowsReduction SparseMatrixViewExample_rowsReduction.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_rowsReduction >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_rowsReduction.out
#                       OUTPUT SparseMatrixViewExample_rowsReduction.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_allRowsReduction SparseMatrixViewExample_allRowsReduction.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_allRowsReduction >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_allRowsReduction.out
#                       OUTPUT SparseMatrixViewExample_allRowsReduction.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_forRows SparseMatrixViewExample_forRows.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forRows >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forRows.out
#                       OUTPUT SparseMatrixViewExample_forRows.out )

#   ADD_EXECUTABLE( SparseMatrixViewExample_forAllRows SparseMatrixViewExample_forAllRows.cpp )
#   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forAllRows >
#                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forAllRows.out
#                       OUTPUT SparseMatrixViewExample_forAllRows.out )
   ADD_EXECUTABLE( SparseMatrixViewExample_getSerializationType SparseMatrixViewExample_getSerializationType.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getSerializationType >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getSerializationType.out
                       OUTPUT SparseMatrixViewExample_getSerializationType.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_getCompressedRowLengths SparseMatrixViewExample_getCompressedRowLengths.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getCompressedRowLengths >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getCompressedRowLengths.out
                       OUTPUT SparseMatrixViewExample_getCompressedRowLengths.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_getConstRow SparseMatrixViewExample_getConstRow.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getConstRow >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getConstRow.out
                       OUTPUT SparseMatrixViewExample_getConstRow.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_getRow SparseMatrixViewExample_getRow.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getRow >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getRow.out
                       OUTPUT SparseMatrixViewExample_getRow.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_setElement SparseMatrixViewExample_setElement.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_setElement >
                       ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_setElement.out
                       OUTPUT SparseMatrixViewExample_setElement.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_addElement SparseMatrixViewExample_addElement.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_addElement >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_addElement.out
                       OUTPUT SparseMatrixViewExample_addElement.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_getElement SparseMatrixViewExample_getElement.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_getElement >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_getElement.out
                       OUTPUT SparseMatrixViewExample_getElement.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_rowsReduction SparseMatrixViewExample_rowsReduction.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_rowsReduction >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_rowsReduction.out
                       OUTPUT SparseMatrixViewExample_rowsReduction.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_allRowsReduction SparseMatrixViewExample_allRowsReduction.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_allRowsReduction >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_allRowsReduction.out
                       OUTPUT SparseMatrixViewExample_allRowsReduction.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_forRows SparseMatrixViewExample_forRows.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forRows >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forRows.out
                       OUTPUT SparseMatrixViewExample_forRows.out )

   ADD_EXECUTABLE( SparseMatrixViewExample_forAllRows SparseMatrixViewExample_forAllRows.cpp )
   ADD_CUSTOM_COMMAND( COMMAND SparseMatrixViewExample_forAllRows >
                        ${TNL_DOCUMENTATION_OUTPUT_SNIPPETS_PATH}/SparseMatrixViewExample_forAllRows.out
                       OUTPUT SparseMatrixViewExample_forAllRows.out )

ENDIF()

@@ -310,18 +300,16 @@ ADD_CUSTOM_TARGET( RunSparseMatricesExamples ALL DEPENDS
   SparseMatrixExample_allRowsReduction.out
   SparseMatrixExample_forRows.out
   SparseMatrixExample_forAllRows.out
#   SparseMatrixViewExample_constructor.out
#   SparseMatrixViewExample_getCompressedRowLengths.out
#   SparseMatrixViewExample_getElementsCount.out
#   SparseMatrixViewExample_getConstRow.out
#   SparseMatrixViewExample_getRow.out
#   SparseMatrixViewExample_setElement.out
#   SparseMatrixViewExample_addElement.out
#   SparseMatrixViewExample_getElement.out
#   SparseMatrixViewExample_rowsReduction.out
#   SparseMatrixViewExample_allRowsReduction.out
#   SparseMatrixViewExample_forRows.out
#   SparseMatrixViewExample_forAllRows.out

   SparseMatrixViewExample_getSerializationType.out
   SparseMatrixViewExample_getCompressedRowLengths.out
   SparseMatrixViewExample_getConstRow.out
   SparseMatrixViewExample_getRow.out
   SparseMatrixViewExample_setElement.out
   SparseMatrixViewExample_addElement.out
   SparseMatrixViewExample_getElement.out
   SparseMatrixViewExample_rowsReduction.out
   SparseMatrixViewExample_allRowsReduction.out
   SparseMatrixViewExample_forRows.out
   SparseMatrixViewExample_forAllRows.out
)
+31 −0
Original line number Diff line number Diff line
#include <iostream>
#include <TNL/Matrices/SparseMatrix.h>
#include <TNL/Devices/Host.h>

template< typename Device >
void addElements()
{
   TNL::Matrices::SparseMatrix< double, Device > matrix( { 5, 5, 5, 5, 5 }, 5 );
   auto view = matrix.getView();
   for( int i = 0; i < 5; i++ )
      view.setElement( i, i, i );

   std::cout << "Initial matrix is: " << std::endl << matrix << std::endl;

   for( int i = 0; i < 5; i++ )
      for( int j = 0; j < 5; j++ )
         view.addElement( i, j, 1.0, 5.0 );

   std::cout << "Matrix after addition is: " << std::endl << 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
}
+1 −0
Original line number Diff line number Diff line
SparseMatrixViewExample_addElement.cpp
 No newline at end of file
+68 −0
Original line number Diff line number Diff line
#include <iostream>
#include <iomanip>
#include <functional>
#include <TNL/Matrices/SparseMatrix.h>
#include <TNL/Devices/Host.h>
#include <TNL/Devices/Cuda.h>

template< typename Device >
void allRowsReduction()
{
   TNL::Matrices::SparseMatrix< double, Device > matrix ( 5, 5, {
      { 0, 0, 1 },
      { 1, 1, 1 }, { 1, 2, 8 },
      { 2, 2, 1 }, { 2, 3, 9 },
      { 3, 3, 1 }, { 3, 4, 9 },
      { 4, 4, 1 } } );
   auto matrixView = matrix.getView();

   /***
    * Find largest element in each row.
    */
   TNL::Containers::Vector< double, Device > rowMax( matrix.getRows() );

   /***
    * Prepare vector view and matrix view for lambdas.
    */
   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 ) -> double {
      return 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.
    */
   matrixView.allRowsReduction( fetch, reduce, keep, std::numeric_limits< double >::lowest() );

   std::cout << "The matrix reads as: " << std::endl << matrix << std::endl;
   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
}
+1 −0
Original line number Diff line number Diff line
SparseMatrixViewExample_allRowsReduction.cpp
 No newline at end of file
Loading