Loading src/core/tnlCuda_impl.h +1 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ __host__ __device__ inline int tnlCuda::getMaxGridSize() { // TODO: make it preprocessor macro constant defined in tnlConfig return 65536; return 65535; }; #ifdef HAVE_CUDA Loading src/mesh/grids/tnlGrid2D.h +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <mesh/grids/tnlNeighbourGridEntityGetter.h> #include <../tests/benchmarks/heat-equation-benchmark/TestGridEntity.h> #include <../tests/benchmarks/heat-equation-benchmark/TestNeighbourGridEntityGetter2D_impl.h> template< typename Real, typename Device, Loading tests/benchmarks/heat-equation-benchmark/TestBoundaryGridEntityChecker.h 0 → 100644 +215 −0 Original line number Diff line number Diff line /*************************************************************************** tnlBoundaryGridEntityChecker.h - description ------------------- begin : Dec 2, 2015 copyright : (C) 2015 by Tomas Oberhuber email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #pragma once template< typename GridEntity > class TestBoundaryGridEntityChecker { }; /*** * 1D grids */ template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 1, Real, Device, Index >, 1, Config > > { public: typedef tnlGrid< 1, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 1, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - 1 ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 1, Real, Device, Index >, 0, Config > > { public: typedef tnlGrid< 1, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 1, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() ); } }; /**** * 2D grids */ template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 2, Real, Device, Index >, 2, Config > > { public: typedef tnlGrid< 2, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 2, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().x() == entity.getMesh().getDimensions().x() - 1 || entity.getCoordinates().y() == entity.getMesh().getDimensions().y() - 1 ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 2, Real, Device, Index >, 1, Config > > { public: typedef tnlGrid< 2, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 2, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - entity.getBasis().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() - entity.getBasis().y() ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 2, Real, Device, Index >, 0, Config > > { public: typedef tnlGrid< 2, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 2, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() ); } }; /*** * 3D grid */ template< typename Real, typename Device, typename Index, typename Config , int EntityDimensions > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 3, Real, Device, Index >, EntityDimensions, Config > > { public: typedef tnlGrid< 3, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 3, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().z() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - entity.getBasis().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() - entity.getBasis().y() || entity.getCoordinates().z() == entity.grid.getDimensions().z() - entity.getBasis().z() ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 3, Real, Device, Index >, 3, Config > > { public: typedef tnlGrid< 3, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 3, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().z() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - 1 || entity.getCoordinates().y() == entity.grid.getDimensions().y() - 1 || entity.getCoordinates().z() == entity.grid.getDimensions().z() - 1 ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 3, Real, Device, Index >, 0, Config > > { public: typedef tnlGrid< 3, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 3, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().z() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() || entity.getCoordinates().z() == entity.grid.getDimensions().z() ); } }; tests/benchmarks/heat-equation-benchmark/TestGridEntity.h +6 −6 Original line number Diff line number Diff line Loading @@ -69,12 +69,12 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensio typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef typename GridType::VertexType VertexType; typedef tnlNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; typedef TestNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = tnlNeighbourGridEntityGetter< tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, TestNeighbourGridEntityGetter< TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >, NeighbourEntityDimensions >; Loading Loading @@ -195,12 +195,12 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Co typedef tnlStaticVector< meshDimensions, IndexType > EntityOrientationType; typedef tnlStaticVector< meshDimensions, IndexType > EntityBasisType; typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef tnlNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; typedef TestNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = tnlNeighbourGridEntityGetter< tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, TestNeighbourGridEntityGetter< TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, entityDimensions, Config >, NeighbourEntityDimensions >; Loading tests/benchmarks/heat-equation-benchmark/TestGridEntity_impl.h +2 −2 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ #pragma once #include <mesh/grids/tnlBoundaryGridEntityChecker.h> #include "TestBoundaryGridEntityChecker.h" #include "TestGridEntityCenterGetter.h" #include <mesh/grids/tnlGridEntityMeasureGetter.h> #include "TestGridEntity.h" Loading Loading @@ -456,7 +456,7 @@ bool TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >:: isBoundaryEntity() const { return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); return TestBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); } template< int Dimensions, Loading Loading
src/core/tnlCuda_impl.h +1 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ __host__ __device__ inline int tnlCuda::getMaxGridSize() { // TODO: make it preprocessor macro constant defined in tnlConfig return 65536; return 65535; }; #ifdef HAVE_CUDA Loading
src/mesh/grids/tnlGrid2D.h +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <mesh/grids/tnlNeighbourGridEntityGetter.h> #include <../tests/benchmarks/heat-equation-benchmark/TestGridEntity.h> #include <../tests/benchmarks/heat-equation-benchmark/TestNeighbourGridEntityGetter2D_impl.h> template< typename Real, typename Device, Loading
tests/benchmarks/heat-equation-benchmark/TestBoundaryGridEntityChecker.h 0 → 100644 +215 −0 Original line number Diff line number Diff line /*************************************************************************** tnlBoundaryGridEntityChecker.h - description ------------------- begin : Dec 2, 2015 copyright : (C) 2015 by Tomas Oberhuber email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #pragma once template< typename GridEntity > class TestBoundaryGridEntityChecker { }; /*** * 1D grids */ template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 1, Real, Device, Index >, 1, Config > > { public: typedef tnlGrid< 1, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 1, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - 1 ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 1, Real, Device, Index >, 0, Config > > { public: typedef tnlGrid< 1, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 1, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() ); } }; /**** * 2D grids */ template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 2, Real, Device, Index >, 2, Config > > { public: typedef tnlGrid< 2, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 2, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().x() == entity.getMesh().getDimensions().x() - 1 || entity.getCoordinates().y() == entity.getMesh().getDimensions().y() - 1 ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 2, Real, Device, Index >, 1, Config > > { public: typedef tnlGrid< 2, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 2, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - entity.getBasis().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() - entity.getBasis().y() ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 2, Real, Device, Index >, 0, Config > > { public: typedef tnlGrid< 2, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 2, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() ); } }; /*** * 3D grid */ template< typename Real, typename Device, typename Index, typename Config , int EntityDimensions > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 3, Real, Device, Index >, EntityDimensions, Config > > { public: typedef tnlGrid< 3, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 3, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().z() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - entity.getBasis().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() - entity.getBasis().y() || entity.getCoordinates().z() == entity.grid.getDimensions().z() - entity.getBasis().z() ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 3, Real, Device, Index >, 3, Config > > { public: typedef tnlGrid< 3, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 3, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().z() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() - 1 || entity.getCoordinates().y() == entity.grid.getDimensions().y() - 1 || entity.getCoordinates().z() == entity.grid.getDimensions().z() - 1 ); } }; template< typename Real, typename Device, typename Index, typename Config > class TestBoundaryGridEntityChecker< TestGridEntity< tnlGrid< 3, Real, Device, Index >, 0, Config > > { public: typedef tnlGrid< 3, Real, Device, Index > GridType; typedef TestGridEntity< GridType, 3, Config > GridEntityType; __cuda_callable__ inline static bool isBoundaryEntity( const GridEntityType& entity ) { return( entity.getCoordinates().x() == 0 || entity.getCoordinates().y() == 0 || entity.getCoordinates().z() == 0 || entity.getCoordinates().x() == entity.grid.getDimensions().x() || entity.getCoordinates().y() == entity.grid.getDimensions().y() || entity.getCoordinates().z() == entity.grid.getDimensions().z() ); } };
tests/benchmarks/heat-equation-benchmark/TestGridEntity.h +6 −6 Original line number Diff line number Diff line Loading @@ -69,12 +69,12 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensio typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef typename GridType::VertexType VertexType; typedef tnlNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; typedef TestNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = tnlNeighbourGridEntityGetter< tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, TestNeighbourGridEntityGetter< TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >, NeighbourEntityDimensions >; Loading Loading @@ -195,12 +195,12 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Co typedef tnlStaticVector< meshDimensions, IndexType > EntityOrientationType; typedef tnlStaticVector< meshDimensions, IndexType > EntityBasisType; typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef tnlNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; typedef TestNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = tnlNeighbourGridEntityGetter< tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, TestNeighbourGridEntityGetter< TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, entityDimensions, Config >, NeighbourEntityDimensions >; Loading
tests/benchmarks/heat-equation-benchmark/TestGridEntity_impl.h +2 −2 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ #pragma once #include <mesh/grids/tnlBoundaryGridEntityChecker.h> #include "TestBoundaryGridEntityChecker.h" #include "TestGridEntityCenterGetter.h" #include <mesh/grids/tnlGridEntityMeasureGetter.h> #include "TestGridEntity.h" Loading Loading @@ -456,7 +456,7 @@ bool TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >:: isBoundaryEntity() const { return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); return TestBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); } template< int Dimensions, Loading