Loading src/Benchmarks/Traversers/GridTraversersBenchmark.h +52 −11 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ #include <TNL/Devices/Host.h> #include <TNL/Devices/Cuda.h> #include <TNL/Containers/Vector.h> #include <TNL/Meshes/Grid.h> #include <TNL/Meshes/GridEntityConfig.h> #include <TNL/Meshes/Traverser.h> #include <TNL/Functions/MeshFunction.h> namespace TNL { namespace Benchmarks { Loading @@ -35,26 +39,52 @@ class GridTraversersBenchmark< 1, Device, Real, Index > public: using Vector = Containers::Vector< Real, Device, Index >; using Grid = Meshes::Grid< 1, Real, Device, Index >; using Coordinates = typename Grid::CoordinatesType; using MeshFunction = Functions::MeshFunction< Grid >; using Cell = typename Grid::EntityType< 1, Meshes::GridEntityNoStencilStorage >; using Traverser = Meshes::Traverser< Grid, Cell >; GridTraversersBenchmark( Index size ) :v( size ), size( size ) {} :v( size ), size( size ), grid( size ) { } void writeOne() void writeOneUsingParallelFor() { auto f = [] __cuda_callable__ ( Index i, Real* data ) { data[ i ] = i; data[ i ] = 1.0; }; ParallelFor< Device >::exec( ( Index ) 0, size, f, v.getData() ); } void writeOneUsingTraverser() { class EntitiesProcessor { }; class UserData { }; Traverser traverser; /*traverser.template processAllEntities< UserData, EntitiesProcessor > ( meshPointer, userData );*/ } protected: Index size; Vector v; Grid grid; }; Loading @@ -66,16 +96,20 @@ class GridTraversersBenchmark< 2, Device, Real, Index > public: using Vector = Containers::Vector< Real, Device, Index >; using Grid = Meshes::Grid< 2, Real, Device, Index >; using Coordinates = typename Grid::CoordinatesType; GridTraversersBenchmark( Index size ) :size( size ), v( size * size ) { } :size( size ), v( size * size ), grid( size, size ) { } void writeOne() void writeOneUsingParallelFor() { Index _size = this->size; auto f = [=] __cuda_callable__ ( Index i, Index j, Real* data ) { data[ i * _size + j ] = i + j; data[ i * _size + j ] = 1.0; }; ParallelFor2D< Device >::exec( ( Index ) 0, Loading @@ -88,8 +122,8 @@ class GridTraversersBenchmark< 2, Device, Real, Index > protected: Index size; Vector v; Grid grid; }; Loading @@ -101,16 +135,22 @@ class GridTraversersBenchmark< 3, Device, Real, Index > public: using Vector = Containers::Vector< Real, Device, Index >; using Grid = Meshes::Grid< 3, Real, Device, Index >; using Coordinates = typename Grid::CoordinatesType; GridTraversersBenchmark( Index size ) : size( size ), v( size * size * size ) {} : size( size ), v( size * size * size ), grid( size, size, size ) { } void writeOne() void writeOneUsingParallelFor() { Index _size = this->size; auto f = [=] __cuda_callable__ ( Index i, Index j, Index k, Real* data ) { data[ ( i * _size + j ) * _size + k ] = i + j + k; data[ ( i * _size + j ) * _size + k ] = 1.0; }; ParallelFor3D< Device >::exec( ( Index ) 0, Loading @@ -126,6 +166,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index > Index size; Vector v; Grid grid; }; Loading src/Benchmarks/Traversers/tnl-benchmark-traversers.h +7 −7 Original line number Diff line number Diff line Loading @@ -54,20 +54,20 @@ bool runBenchmark( const Config::ParameterContainer& parameters, Benchmark::MetadataColumns( { {"size", convertToString( size ) }, } ) ); auto hostWriteOne = [&] () auto hostWriteOneUsingParallelFor = [&] () { hostTraverserBenchmark.writeOne(); hostTraverserBenchmark.writeOneUsingParallelFor(); }; auto cudaWriteOne = [&] () auto cudaWriteOneUsingParallelFor = [&] () { cudaTraverserBenchmark.writeOne(); cudaTraverserBenchmark.writeOneUsingParallelFor(); }; benchmark.setOperation( "writeOne", size * sizeof( Real ) ); benchmark.time( reset, "CPU", hostWriteOne ); benchmark.setOperation( "write 1 using parallel for", size * sizeof( Real ) / oneGB ); benchmark.time( reset, "CPU", hostWriteOneUsingParallelFor ); #ifdef HAVE_CUDA benchmark.time( reset, "GPU", cudaWriteOne ); benchmark.time( reset, "GPU", cudaWriteOneUsingParallelFor ); #endif } Loading src/TNL/Meshes/GridDetails/Grid2D.h +2 −2 Original line number Diff line number Diff line Loading @@ -82,8 +82,8 @@ class Grid< 2, Real, Device, Index > : public Object /** * \brief Sets the size of dimensions. * \param xSize Size of dimesion x. * \param ySize Size of dimesion y. * \param xSize Size of dimension x. * \param ySize Size of dimension y. */ void setDimensions( const Index xSize, const Index ySize ); Loading src/TNL/Meshes/GridDetails/Grid2D_impl.h +1 −1 File changed.Contains only whitespace changes. Show changes src/TNL/Meshes/GridDetails/Grid3D.h +2 −2 File changed.Contains only whitespace changes. Show changes Loading
src/Benchmarks/Traversers/GridTraversersBenchmark.h +52 −11 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ #include <TNL/Devices/Host.h> #include <TNL/Devices/Cuda.h> #include <TNL/Containers/Vector.h> #include <TNL/Meshes/Grid.h> #include <TNL/Meshes/GridEntityConfig.h> #include <TNL/Meshes/Traverser.h> #include <TNL/Functions/MeshFunction.h> namespace TNL { namespace Benchmarks { Loading @@ -35,26 +39,52 @@ class GridTraversersBenchmark< 1, Device, Real, Index > public: using Vector = Containers::Vector< Real, Device, Index >; using Grid = Meshes::Grid< 1, Real, Device, Index >; using Coordinates = typename Grid::CoordinatesType; using MeshFunction = Functions::MeshFunction< Grid >; using Cell = typename Grid::EntityType< 1, Meshes::GridEntityNoStencilStorage >; using Traverser = Meshes::Traverser< Grid, Cell >; GridTraversersBenchmark( Index size ) :v( size ), size( size ) {} :v( size ), size( size ), grid( size ) { } void writeOne() void writeOneUsingParallelFor() { auto f = [] __cuda_callable__ ( Index i, Real* data ) { data[ i ] = i; data[ i ] = 1.0; }; ParallelFor< Device >::exec( ( Index ) 0, size, f, v.getData() ); } void writeOneUsingTraverser() { class EntitiesProcessor { }; class UserData { }; Traverser traverser; /*traverser.template processAllEntities< UserData, EntitiesProcessor > ( meshPointer, userData );*/ } protected: Index size; Vector v; Grid grid; }; Loading @@ -66,16 +96,20 @@ class GridTraversersBenchmark< 2, Device, Real, Index > public: using Vector = Containers::Vector< Real, Device, Index >; using Grid = Meshes::Grid< 2, Real, Device, Index >; using Coordinates = typename Grid::CoordinatesType; GridTraversersBenchmark( Index size ) :size( size ), v( size * size ) { } :size( size ), v( size * size ), grid( size, size ) { } void writeOne() void writeOneUsingParallelFor() { Index _size = this->size; auto f = [=] __cuda_callable__ ( Index i, Index j, Real* data ) { data[ i * _size + j ] = i + j; data[ i * _size + j ] = 1.0; }; ParallelFor2D< Device >::exec( ( Index ) 0, Loading @@ -88,8 +122,8 @@ class GridTraversersBenchmark< 2, Device, Real, Index > protected: Index size; Vector v; Grid grid; }; Loading @@ -101,16 +135,22 @@ class GridTraversersBenchmark< 3, Device, Real, Index > public: using Vector = Containers::Vector< Real, Device, Index >; using Grid = Meshes::Grid< 3, Real, Device, Index >; using Coordinates = typename Grid::CoordinatesType; GridTraversersBenchmark( Index size ) : size( size ), v( size * size * size ) {} : size( size ), v( size * size * size ), grid( size, size, size ) { } void writeOne() void writeOneUsingParallelFor() { Index _size = this->size; auto f = [=] __cuda_callable__ ( Index i, Index j, Index k, Real* data ) { data[ ( i * _size + j ) * _size + k ] = i + j + k; data[ ( i * _size + j ) * _size + k ] = 1.0; }; ParallelFor3D< Device >::exec( ( Index ) 0, Loading @@ -126,6 +166,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index > Index size; Vector v; Grid grid; }; Loading
src/Benchmarks/Traversers/tnl-benchmark-traversers.h +7 −7 Original line number Diff line number Diff line Loading @@ -54,20 +54,20 @@ bool runBenchmark( const Config::ParameterContainer& parameters, Benchmark::MetadataColumns( { {"size", convertToString( size ) }, } ) ); auto hostWriteOne = [&] () auto hostWriteOneUsingParallelFor = [&] () { hostTraverserBenchmark.writeOne(); hostTraverserBenchmark.writeOneUsingParallelFor(); }; auto cudaWriteOne = [&] () auto cudaWriteOneUsingParallelFor = [&] () { cudaTraverserBenchmark.writeOne(); cudaTraverserBenchmark.writeOneUsingParallelFor(); }; benchmark.setOperation( "writeOne", size * sizeof( Real ) ); benchmark.time( reset, "CPU", hostWriteOne ); benchmark.setOperation( "write 1 using parallel for", size * sizeof( Real ) / oneGB ); benchmark.time( reset, "CPU", hostWriteOneUsingParallelFor ); #ifdef HAVE_CUDA benchmark.time( reset, "GPU", cudaWriteOne ); benchmark.time( reset, "GPU", cudaWriteOneUsingParallelFor ); #endif } Loading
src/TNL/Meshes/GridDetails/Grid2D.h +2 −2 Original line number Diff line number Diff line Loading @@ -82,8 +82,8 @@ class Grid< 2, Real, Device, Index > : public Object /** * \brief Sets the size of dimensions. * \param xSize Size of dimesion x. * \param ySize Size of dimesion y. * \param xSize Size of dimension x. * \param ySize Size of dimension y. */ void setDimensions( const Index xSize, const Index ySize ); Loading
src/TNL/Meshes/GridDetails/Grid2D_impl.h +1 −1 File changed.Contains only whitespace changes. Show changes
src/TNL/Meshes/GridDetails/Grid3D.h +2 −2 File changed.Contains only whitespace changes. Show changes