Loading src/Benchmarks/Traversers/AddTwoEntitiesProcessor.h 0 → 100644 +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 src/Benchmarks/Traversers/GridTraversersBenchmark.h +2 −0 Original line number Diff line number Diff line Loading @@ -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" Loading src/Benchmarks/Traversers/GridTraversersBenchmark_1D.h +4 −2 Original line number Diff line number Diff line Loading @@ -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 ), Loading Loading @@ -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 ); } Loading src/Benchmarks/Traversers/GridTraversersBenchmark_2D.h +6 −3 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 ), Loading Loading @@ -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 ); } Loading src/Benchmarks/Traversers/GridTraversersBenchmark_3D.h +5 −5 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 ), Loading Loading @@ -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 Loading
src/Benchmarks/Traversers/AddTwoEntitiesProcessor.h 0 → 100644 +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
src/Benchmarks/Traversers/GridTraversersBenchmark.h +2 −0 Original line number Diff line number Diff line Loading @@ -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" Loading
src/Benchmarks/Traversers/GridTraversersBenchmark_1D.h +4 −2 Original line number Diff line number Diff line Loading @@ -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 ), Loading Loading @@ -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 ); } Loading
src/Benchmarks/Traversers/GridTraversersBenchmark_2D.h +6 −3 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 ), Loading Loading @@ -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 ); } Loading
src/Benchmarks/Traversers/GridTraversersBenchmark_3D.h +5 −5 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 ), Loading Loading @@ -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