Commit 2c674bba authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Fixing benchmarks for traversers with BC

parent 336bddf8
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
/***************************************************************************
                          BenchmarkTraverserUserData.h  -  description
                             -------------------
    begin                : Jan 5, 2019
    copyright            : (C) 2019 by oberhuber
    email                : tomas.oberhuber@fjfi.cvut.cz
 ***************************************************************************/

/* See Copyright Notice in tnl/Copyright */

// Implemented by: Tomas Oberhuber

#pragma once

#include <TNL/Devices/Cuda.h>

namespace TNL {
   namespace Benchmarks {
      namespace Traversers {

template< typename TraverserUserData >
class AddTwoEntitiesProcessor
{
   public:
      
      using MeshType = typename TraverserUserData::MeshType;
      using DeviceType = typename MeshType::DeviceType;
      using RealType = typename MeshType::RealType;

      template< typename GridEntity >
      __cuda_callable__
      static inline void processEntity( const MeshType& mesh,
                                        TraverserUserData& userData,
                                        const GridEntity& entity )
      {
         auto& u = *userData.u;
         u( entity ) += ( RealType ) 2.0;
      }
};

      } // namespace Traversers
   } // namespace Benchmarks
} // namespace TNL
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@
#include <TNL/Functions/MeshFunction.h>
#include <TNL/Pointers/SharedPointer.h>

#include "AddOneEntitiesProcessor.h"
#include "AddTwoEntitiesProcessor.h"
#include "GridTraverserBenchmarkHelper.h"
#include "BenchmarkTraverserUserData.h"
#include "cuda-kernels.h"
+4 −2
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
      using Traverser = Meshes::Traverser< GridType, CellType >;
      using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
      using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
      using AddTwoEntitiesProcessorType = AddTwoEntitiesProcessor< UserDataType >;
      
      GridTraversersBenchmark( Index size )
      :size( size ), v( size ), grid( size ), u( grid ),
@@ -199,8 +200,9 @@ class GridTraversersBenchmark< 1, Device, Real, Index >

      void traverseUsingTraverser()
      {
         // TODO !!!!!!!!!!!!!!!!!!!!!!
         traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
         traverser.template processBoundaryEntities< UserDataType, AddTwoEntitiesProcessorType >
            ( grid, userData );
         traverser.template processInteriorEntities< UserDataType, AddOneEntitiesProcessorType >
            ( grid, userData );
      }

+6 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <TNL/Functions/MeshFunction.h>
#include <TNL/Pointers/SharedPointer.h>
#include "cuda-kernels.h"
#include "GridTraversersBenchmark.h"
#include "SimpleCell.h"

namespace TNL {
@@ -46,6 +47,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
      using Traverser = Meshes::Traverser< GridType, CellType >;
      using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
      using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
      using AddTwoEntitiesProcessorType = AddTwoEntitiesProcessor< UserDataType >;

      GridTraversersBenchmark( Index size )
      :size( size ), v( size * size ), grid( size, size ), u( grid ),
@@ -246,10 +248,11 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
         }
      }

      void traversingUsingTraverser()
      void traverseUsingTraverser()
      {
         // TODO !!!!!!!!!!!!!!!!!!!!!!
         traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
         traverser.template processBoundaryEntities< UserDataType, AddTwoEntitiesProcessorType >
            ( grid, userData );
         traverser.template processInteriorEntities< UserDataType, AddOneEntitiesProcessorType >
            ( grid, userData );
      }

+5 −5
Original line number Diff line number Diff line
@@ -21,10 +21,8 @@
#include <TNL/Meshes/Traverser.h>
#include <TNL/Functions/MeshFunction.h>
#include <TNL/Pointers/SharedPointer.h>

#include "cuda-kernels.h"
#include "AddOneEntitiesProcessor.h"
#include "BenchmarkTraverserUserData.h"
#include "GridTraversersBenchmark.h"
#include "SimpleCell.h"

namespace TNL {
@@ -49,6 +47,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
      using Traverser = Meshes::Traverser< GridType, CellType >;
      using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
      using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
      using AddTwoEntitiesProcessorType = AddTwoEntitiesProcessor< UserDataType >;

      GridTraversersBenchmark( Index size )
      : size( size ),
@@ -258,8 +257,9 @@ class GridTraversersBenchmark< 3, Device, Real, Index >

      void traverseUsingTraverser()
      {
         // TODO !!!!!!!!!!!!!!!!!!!!!!
         traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
         traverser.template processBoundaryEntities< UserDataType, AddTwoEntitiesProcessorType >
            ( grid, userData );
         traverser.template processInteriorEntities< UserDataType, AddOneEntitiesProcessorType >
            ( grid, userData );
      }

Loading