Skip to content
Snippets Groups Projects
Commit 2c26ffc9 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

TRaversers benchmark refactoring,

parent a31a7e6d
No related branches found
No related tags found
1 merge request!20Traversers optimizations
/***************************************************************************
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 AddOneEntitiesProcessor
{
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 ) 1.0;
}
};
} // namespace Traversers
} // namespace Benchmarks
} // namespace TNL
/***************************************************************************
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
namespace TNL {
namespace Benchmarks {
namespace Traversers {
template< typename MeshFunction >
class BenchmarkTraverserUserData
{
public:
using MeshType = typename MeshFunction::MeshType;
MeshFunction* u;
};
} // namespace Traversers
} // namespace Benchmarks
} // namespace TNL
/***************************************************************************
GridTraversersBenchmarkHelper.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 "AddOneEntitiesProcessor.h"
#include "BenchmarkTraverserUserData.h"
namespace TNL {
namespace Benchmarks {
namespace Traversers {
#ifdef HAVE_CUDA
template< typename Real,
typename Index,
typename GridEntity,
typename UserData,
typename EntitiesProcessor >
__global__ void
_GridTraverser1D(
const Meshes::Grid< 1, Real, Devices::Cuda, Index >* grid,
UserData userData,
const typename GridEntity::CoordinatesType begin,
const typename GridEntity::CoordinatesType end,
const Index gridIdx )
{
typedef Real RealType;
typedef Index IndexType;
typedef Meshes::Grid< 1, Real, Devices::Cuda, Index > GridType;
typename GridType::CoordinatesType coordinates;
coordinates.x() = begin.x() + ( gridIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
if( coordinates <= end )
{
GridEntity entity( *grid, coordinates );
entity.refresh();
( userData.u->getData() )[ coordinates.x() ] += ( RealType ) 1.0;
//( *userData.u )( entity) += 1.0;
//EntitiesProcessor::processEntity( entity.getMesh(), userData, entity );
}
}
#endif
template< typename Grid,
typename Device = typename Grid::DeviceType >
class GridTraverserBenchmarkHelper{};
template< typename Grid >
class GridTraverserBenchmarkHelper< Grid, Devices::Host >
{
public:
using GridType = Grid;
using GridPointer = Pointers::SharedPointer< Grid >;
using RealType = typename GridType::RealType;
using IndexType = typename GridType::IndexType;
using CoordinatesType = typename Grid::CoordinatesType;
using MeshFunction = Functions::MeshFunction< Grid >;
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 1, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
static void noBCTraverserTest( const GridPointer& grid,
UserDataType& userData,
std::size_t size )
{
/*Meshes::GridTraverser< Grid >::template processEntities< Cell, WriteOneEntitiesProcessorType, WriteOneTraverserUserDataType, false >(
grid,
CoordinatesType( 0 ),
grid->getDimensions() - CoordinatesType( 1 ),
userData );*/
const CoordinatesType begin( 0 );
const CoordinatesType end = CoordinatesType( size ) - CoordinatesType( 1 );
//MeshFunction* _u = &u.template modifyData< Device >();
Cell entity( *grid );
for( IndexType x = begin.x(); x <= end.x(); x ++ )
{
entity.getCoordinates().x() = x;
entity.refresh();
AddOneEntitiesProcessorType::processEntity( entity.getMesh(), userData, entity );
}
}
};
template< typename Grid >
class GridTraverserBenchmarkHelper< Grid, Devices::Cuda >
{
public:
using GridType = Grid;
using GridPointer = Pointers::SharedPointer< Grid >;
using RealType = typename GridType::RealType;
using IndexType = typename GridType::IndexType;
using CoordinatesType = typename Grid::CoordinatesType;
using MeshFunction = Functions::MeshFunction< Grid >;
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 1, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
static void noBCTraverserTest( const GridPointer& grid,
UserDataType& userData,
std::size_t size )
{
#ifdef HAVE_CUDA
dim3 blockSize( 256 ), blocksCount, gridsCount;
Devices::Cuda::setupThreads(
blockSize,
blocksCount,
gridsCount,
size );
dim3 gridIdx;
for( gridIdx.x = 0; gridIdx.x < gridsCount.x; gridIdx.x++ )
{
dim3 gridSize;
Devices::Cuda::setupGrid(
blocksCount,
gridsCount,
gridIdx,
gridSize );
_GridTraverser1D< RealType, IndexType, Cell, UserDataType, AddOneEntitiesProcessorType >
<<< blocksCount, blockSize >>>
( &grid.template getData< Devices::Cuda >(),
userData,
CoordinatesType( 0 ),
CoordinatesType( size ) - CoordinatesType( 1 ),
gridIdx.x );
}
#endif
}
};
} // namespace Traversers
} // namespace Benchmarks
} // namespace TNL
......@@ -21,40 +21,16 @@
#include <TNL/Meshes/Traverser.h>
#include <TNL/Functions/MeshFunction.h>
#include <TNL/Pointers/SharedPointer.h>
#include "GridTraverserBenchmarkHelper.h"
#include "BenchmarkTraverserUserData.h"
#include "cuda-kernels.h"
namespace TNL {
namespace Benchmarks {
namespace Traversers {
template< typename TraverserUserData >
class WriteOneEntitiesProcessor
{
public:
using MeshType = typename TraverserUserData::MeshType;
using DeviceType = typename MeshType::DeviceType;
template< typename GridEntity >
__cuda_callable__
static inline void processEntity( const MeshType& mesh,
TraverserUserData& userData,
const GridEntity& entity )
{
auto& u = userData.u.template modifyData< DeviceType >();
u( entity ) += (typename MeshType::RealType) 1.0;
}
};
template< typename MeshFunctionPointer >
class WriteOneUserData
{
public:
using MeshType = typename MeshFunctionPointer::ObjectType::MeshType;
MeshFunctionPointer u;
};
template< int Dimension,
typename Device,
......
......@@ -28,102 +28,6 @@ namespace TNL {
namespace Benchmarks {
namespace Traversers {
template< typename Grid,
typename Device = typename Grid::DeviceType >
class GridTraverserBenchmarkHelper{};
template< typename Grid >
class GridTraverserBenchmarkHelper< Grid, Devices::Host >
{
public:
using GridType = Grid;
using GridPointer = Pointers::SharedPointer< Grid >;
using RealType = typename GridType::RealType;
using IndexType = typename GridType::IndexType;
using CoordinatesType = typename Grid::CoordinatesType;
using MeshFunction = Functions::MeshFunction< Grid >;
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 1, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using WriteOneTraverserUserDataType = WriteOneUserData< MeshFunctionPointer >;
using WriteOneEntitiesProcessorType = WriteOneEntitiesProcessor< WriteOneTraverserUserDataType >;
static void noBCTraverserTest( const GridPointer& grid,
WriteOneTraverserUserDataType& userData,
std::size_t size )
{
/*Meshes::GridTraverser< Grid >::template processEntities< Cell, WriteOneEntitiesProcessorType, WriteOneTraverserUserDataType, false >(
grid,
CoordinatesType( 0 ),
grid->getDimensions() - CoordinatesType( 1 ),
userData );*/
const CoordinatesType begin( 0 );
const CoordinatesType end = CoordinatesType( size ) - CoordinatesType( 1 );
//MeshFunction* _u = &u.template modifyData< Device >();
Cell entity( *grid );
for( IndexType x = begin.x(); x <= end.x(); x ++ )
{
entity.getCoordinates().x() = x;
entity.refresh();
WriteOneEntitiesProcessorType::processEntity( entity.getMesh(), userData, entity );
}
}
};
template< typename Grid >
class GridTraverserBenchmarkHelper< Grid, Devices::Cuda >
{
public:
using GridType = Grid;
using GridPointer = Pointers::SharedPointer< Grid >;
using RealType = typename GridType::RealType;
using IndexType = typename GridType::IndexType;
using CoordinatesType = typename Grid::CoordinatesType;
using MeshFunction = Functions::MeshFunction< Grid >;
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 1, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using WriteOneTraverserUserDataType = WriteOneUserData< MeshFunctionPointer >;
using WriteOneEntitiesProcessorType = WriteOneEntitiesProcessor< WriteOneTraverserUserDataType >;
static void noBCTraverserTest( const GridPointer& grid,
WriteOneTraverserUserDataType& userData,
std::size_t size )
{
#ifdef HAVE_CUDA
dim3 blockSize( 256 ), blocksCount, gridsCount;
Devices::Cuda::setupThreads(
blockSize,
blocksCount,
gridsCount,
size );
dim3 gridIdx;
for( gridIdx.x = 0; gridIdx.x < gridsCount.x; gridIdx.x++ )
{
dim3 gridSize;
Devices::Cuda::setupGrid(
blocksCount,
gridsCount,
gridIdx,
gridSize );
Meshes::GridTraverser1D< RealType, IndexType, Cell, WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
<<< blocksCount, blockSize >>>
( &grid.template getData< Devices::Cuda >(),
userData,
CoordinatesType( 0 ),
CoordinatesType( size ) - CoordinatesType( 1 ),
gridIdx.x );
}
#endif
}
};
template< typename Device,
typename Real,
......@@ -140,13 +44,13 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 1, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using WriteOneTraverserUserDataType = WriteOneUserData< MeshFunctionPointer >;
using WriteOneEntitiesProcessorType = WriteOneEntitiesProcessor< WriteOneTraverserUserDataType >;
using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
GridTraversersBenchmark( Index size )
:size( size ), v( size ), grid( size ), u( grid )
{
userData.u = this->u;
userData.u = &this->u.template modifyData< Device >();
v_data = v.getData();
}
......@@ -156,7 +60,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
u->getData().setValue( 0.0 );
};
void writeOneUsingPureC()
void addOneUsingPureC()
{
if( std::is_same< Device, Devices::Host >::value )
{
......@@ -187,7 +91,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
}
}
void writeOneUsingParallelFor()
void addOneUsingParallelFor()
{
auto f = [] __cuda_callable__ ( Index i, Real* data )
{
......@@ -196,7 +100,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
ParallelFor< Device >::exec( ( Index ) 0, size, f, v.getData() );
}
void writeOneUsingParallelForAndGridEntity()
void addOneUsingParallelForAndGridEntity()
{
const Grid* currentGrid = &grid.template getData< Device >();
auto f = [=] __cuda_callable__ ( Index i, Real* data )
......@@ -209,7 +113,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
ParallelFor< Device >::exec( ( Index ) 0, size, f, v.getData() );
}
void writeOneUsingParallelForAndMeshFunction()
void addOneUsingParallelForAndMeshFunction()
{
const Grid* currentGrid = &grid.template getData< Device >();
MeshFunction* _u = &u.template modifyData< Device >();
......@@ -224,7 +128,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
ParallelFor< Device >::exec( ( Index ) 0, size, f );
}
void writeOneUsingTraverser()
void addOneUsingTraverser()
{
using CoordinatesType = typename Grid::CoordinatesType;
//traverser.template processAllEntities< WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
......@@ -282,7 +186,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
void traverseUsingTraverser()
{
// TODO !!!!!!!!!!!!!!!!!!!!!!
traverser.template processAllEntities< WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
( grid, userData );
}
......@@ -294,7 +198,7 @@ class GridTraversersBenchmark< 1, Device, Real, Index >
GridPointer grid;
MeshFunctionPointer u;
Traverser traverser;
WriteOneTraverserUserDataType userData;
UserDataType userData;
};
} // namespace Traversers
......
......@@ -42,14 +42,13 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 2, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using TraverserUserData = WriteOneUserData< MeshFunctionPointer >;
using WriteOneTraverserUserDataType = WriteOneUserData< MeshFunctionPointer >;
using WriteOneEntitiesProcessorType = WriteOneEntitiesProcessor< WriteOneTraverserUserDataType >;
using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
GridTraversersBenchmark( Index size )
:size( size ), v( size * size ), grid( size, size ), u( grid )
{
userData.u = this->u;
userData.u = &this->u.template modifyData< Device >();
v_data = v.getData();
}
......@@ -59,7 +58,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
u->getData().setValue( 0.0 );
};
void writeOneUsingPureC()
void addOneUsingPureC()
{
if( std::is_same< Device, Devices::Host >::value )
{
......@@ -93,7 +92,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
}
}
void writeOneUsingParallelFor()
void addOneUsingParallelFor()
{
Index _size = this->size;
auto f = [=] __cuda_callable__ ( Index i, Index j, Real* data )
......@@ -108,7 +107,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
f, v.getData() );
}
void writeOneUsingParallelForAndGridEntity()
void addOneUsingParallelForAndGridEntity()
{
const Grid* currentGrid = &grid.template getData< Device >();
auto f = [=] __cuda_callable__ ( Index i, Index j, Real* data )
......@@ -127,7 +126,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
f, v.getData() );
}
void writeOneUsingParallelForAndMeshFunction()
void addOneUsingParallelForAndMeshFunction()
{
const Grid* currentGrid = &grid.template getData< Device >();
MeshFunction* _u = &u.template modifyData< Device >();
......@@ -148,10 +147,10 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
}
void writeOneUsingTraverser()
void addOneUsingTraverser()
{
using CoordinatesType = typename Grid::CoordinatesType;
traverser.template processAllEntities< WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
( grid, userData );
/*Meshes::GridTraverser< Grid >::template processEntities< Cell, WriteOneEntitiesProcessorType, WriteOneTraverserUserDataType, false >(
......@@ -232,7 +231,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
void traversingUsingTraverser()
{
// TODO !!!!!!!!!!!!!!!!!!!!!!
traverser.template processAllEntities< WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
( grid, userData );
}
......@@ -244,7 +243,7 @@ class GridTraversersBenchmark< 2, Device, Real, Index >
GridPointer grid;
MeshFunctionPointer u;
Traverser traverser;
WriteOneTraverserUserDataType userData;
UserDataType userData;
};
} // namespace Traversers
......
......@@ -21,7 +21,10 @@
#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"
namespace TNL {
namespace Benchmarks {
......@@ -42,17 +45,16 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
using MeshFunctionPointer = Pointers::SharedPointer< MeshFunction >;
using Cell = typename Grid::template EntityType< 3, Meshes::GridEntityNoStencilStorage >;
using Traverser = Meshes::Traverser< Grid, Cell >;
using TraverserUserData = WriteOneUserData< MeshFunctionPointer >;
using WriteOneTraverserUserDataType = WriteOneUserData< MeshFunctionPointer >;
using WriteOneEntitiesProcessorType = WriteOneEntitiesProcessor< WriteOneTraverserUserDataType >;
using UserDataType = BenchmarkTraverserUserData< MeshFunction >;
using AddOneEntitiesProcessorType = AddOneEntitiesProcessor< UserDataType >;
GridTraversersBenchmark( Index size )
: size( size ),
v( size * size * size ),
grid( size, size, size ),
u( grid )
{
userData.u = this->u;
userData.u = &this->u.template modifyData< Device >();
v_data = v.getData();
}
......@@ -62,7 +64,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
u->getData().setValue( 0.0 );
};
void writeOneUsingPureC()
void addOneUsingPureC()
{
if( std::is_same< Device, Devices::Host >::value )
{
......@@ -99,7 +101,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
}
}
void writeOneUsingParallelFor()
void addOneUsingParallelFor()
{
Index _size = this->size;
auto f = [=] __cuda_callable__ ( Index i, Index j, Index k, Real* data )
......@@ -116,7 +118,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
f, v.getData() );
}
void writeOneUsingParallelForAndGridEntity()
void addOneUsingParallelForAndGridEntity()
{
const Grid* currentGrid = &grid.template getData< Device >();
auto f = [=] __cuda_callable__ ( Index i, Index j, Index k, Real* data )
......@@ -138,7 +140,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
f, v.getData() );
}
void writeOneUsingParallelForAndMeshFunction()
void addOneUsingParallelForAndMeshFunction()
{
const Grid* currentGrid = &grid.template getData< Device >();
MeshFunction* _u = &u.template modifyData< Device >();
......@@ -162,9 +164,9 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
}
void writeOneUsingTraverser()
void addOneUsingTraverser()
{
traverser.template processAllEntities< WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
( grid, userData );
}
......@@ -240,7 +242,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
void traverseUsingTraverser()
{
// TODO !!!!!!!!!!!!!!!!!!!!!!
traverser.template processAllEntities< WriteOneTraverserUserDataType, WriteOneEntitiesProcessorType >
traverser.template processAllEntities< UserDataType, AddOneEntitiesProcessorType >
( grid, userData );
}
......@@ -252,7 +254,7 @@ class GridTraversersBenchmark< 3, Device, Real, Index >
GridPointer grid;
MeshFunctionPointer u;
Traverser traverser;
WriteOneTraverserUserDataType userData;
UserDataType userData;
};
} // namespace Traversers
......
......@@ -84,14 +84,14 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
auto hostWriteOneUsingPureC = [&] ()
{
hostTraverserBenchmark.writeOneUsingPureC();
hostTraverserBenchmark.addOneUsingPureC();
};
benchmark.time< Devices::Host >( hostReset, "CPU", hostWriteOneUsingPureC );
#ifdef HAVE_CUDA
auto cudaWriteOneUsingPureC = [&] ()
{
cudaTraverserBenchmark.writeOneUsingPureC();
cudaTraverserBenchmark.addOneUsingPureC();
};
if( withCuda )
benchmark.time< Devices::Cuda >( cudaReset, "GPU", cudaWriteOneUsingPureC );
......@@ -107,14 +107,14 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
auto hostWriteOneUsingParallelFor = [&] ()
{
hostTraverserBenchmark.writeOneUsingParallelFor();
hostTraverserBenchmark.addOneUsingParallelFor();
};
benchmark.time< Devices::Host >( hostReset, "CPU", hostWriteOneUsingParallelFor );
#ifdef HAVE_CUDA
auto cudaWriteOneUsingParallelFor = [&] ()
{
cudaTraverserBenchmark.writeOneUsingParallelFor();
cudaTraverserBenchmark.addOneUsingParallelFor();
};
if( withCuda )
benchmark.time< Devices::Cuda >( cudaReset, "GPU", cudaWriteOneUsingParallelFor );
......@@ -128,7 +128,7 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
{
auto hostWriteOneUsingParallelForAndGridEntity = [&] ()
{
hostTraverserBenchmark.writeOneUsingParallelForAndGridEntity();
hostTraverserBenchmark.addOneUsingParallelForAndGridEntity();
};
benchmark.setOperation( "par.for+grid ent.", 2 * pow( ( double ) size, ( double ) Dimension ) * sizeof( Real ) / oneGB );
benchmark.time< Devices::Host >( hostReset, "CPU", hostWriteOneUsingParallelForAndGridEntity );
......@@ -136,7 +136,7 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
#ifdef HAVE_CUDA
auto cudaWriteOneUsingParallelForAndGridEntity = [&] ()
{
cudaTraverserBenchmark.writeOneUsingParallelForAndGridEntity();
cudaTraverserBenchmark.addOneUsingParallelForAndGridEntity();
};
if( withCuda )
benchmark.time< Devices::Cuda >( cudaReset, "GPU", cudaWriteOneUsingParallelForAndGridEntity );
......@@ -150,7 +150,7 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
{
auto hostWriteOneUsingParallelForAndMeshFunction = [&] ()
{
hostTraverserBenchmark.writeOneUsingParallelForAndMeshFunction();
hostTraverserBenchmark.addOneUsingParallelForAndMeshFunction();
};
benchmark.setOperation( "par.for+mesh fc.", 2 * pow( ( double ) size, ( double ) Dimension ) * sizeof( Real ) / oneGB );
benchmark.time< Devices::Host >( hostReset, "CPU", hostWriteOneUsingParallelForAndMeshFunction );
......@@ -158,7 +158,7 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
#ifdef HAVE_CUDA
auto cudaWriteOneUsingParallelForAndMeshFunction = [&] ()
{
cudaTraverserBenchmark.writeOneUsingParallelForAndMeshFunction();
cudaTraverserBenchmark.addOneUsingParallelForAndMeshFunction();
};
if( withCuda )
benchmark.time< Devices::Cuda >( cudaReset, "GPU", cudaWriteOneUsingParallelForAndMeshFunction );
......@@ -174,14 +174,14 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
benchmark.setOperation( "traverser", 2 * pow( ( double ) size, ( double ) Dimension ) * sizeof( Real ) / oneGB );
auto hostWriteOneUsingTraverser = [&] ()
{
hostTraverserBenchmark.writeOneUsingTraverser();
hostTraverserBenchmark.addOneUsingTraverser();
};
benchmark.time< Devices::Host >( hostReset, "CPU", hostWriteOneUsingTraverser );
#ifdef HAVE_CUDA
auto cudaWriteOneUsingTraverser = [&] ()
{
cudaTraverserBenchmark.writeOneUsingTraverser();
cudaTraverserBenchmark.addOneUsingTraverser();
};
if( withCuda )
benchmark.time< Devices::Cuda >( cudaReset, "GPU", cudaWriteOneUsingTraverser );
......@@ -254,13 +254,13 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
*/
auto hostTraverseUsingParallelFor = [&] ()
{
hostTraverserBenchmark.writeOneUsingParallelFor();
hostTraverserBenchmark.addOneUsingParallelFor();
};
#ifdef HAVE_CUDA
auto cudaTraverseUsingParallelFor = [&] ()
{
cudaTraverserBenchmark.writeOneUsingParallelFor();
cudaTraverserBenchmark.addOneUsingParallelFor();
};
#endif
......@@ -286,13 +286,13 @@ bool runBenchmark( const Config::ParameterContainer& parameters,
*/
auto hostTraverseUsingTraverser = [&] ()
{
hostTraverserBenchmark.writeOneUsingTraverser();
hostTraverserBenchmark.addOneUsingTraverser();
};
#ifdef HAVE_CUDA
auto cudaTraverseUsingTraverser = [&] ()
{
cudaTraverserBenchmark.writeOneUsingTraverser();
cudaTraverserBenchmark.addOneUsingTraverser();
};
#endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment