Nektar++
|
#include <CollectionOptimisation.h>
Public Member Functions | |
COLLECTIONS_EXPORT | CollectionOptimisation (LibUtilities::SessionReaderSharedPtr pSession, const int shapedim, ImplementationType defaultType=eStdMat) |
~CollectionOptimisation ()=default | |
ImplementationType | GetDefaultImplementationType () |
size_t | GetMaxCollectionSize () |
bool | IsUsingAutotuning () |
COLLECTIONS_EXPORT OperatorImpMap | GetOperatorImpMap (StdRegions::StdExpansionSharedPtr pExp) |
Get Operator Implementation Map from XMl or using default;. More... | |
COLLECTIONS_EXPORT OperatorImpMap | SetWithTimings (std::vector< StdRegions::StdExpansionSharedPtr > pGeom, OperatorImpMap &impTypes, bool verbose=true) |
COLLECTIONS_EXPORT void | UpdateOptFile (std::string sessName, LibUtilities::CommSharedPtr &comm) |
Private Types | |
typedef std::pair< LibUtilities::ShapeType, int > | ElmtOrder |
typedef std::map< OperatorType, std::map< ElmtOrder, ImplementationType > > | GlobalOpMap |
Private Member Functions | |
void | ReadCollOps (TiXmlElement *xmlCol, GlobalOpMap &global, bool verbose) |
Private Attributes | |
GlobalOpMap | m_global |
bool | m_autotune |
ImplementationType | m_defaultType |
size_t | m_maxCollSize |
size_t | m_shapeDim |
size_t | m_timeLevel |
Static Private Attributes | |
static std::map< size_t, std::map< OpImpTimingKey, OperatorImpMap > > | m_opImpMap |
Definition at line 119 of file CollectionOptimisation.h.
|
private |
Definition at line 158 of file CollectionOptimisation.h.
|
private |
Definition at line 160 of file CollectionOptimisation.h.
Nektar::Collections::CollectionOptimisation::CollectionOptimisation | ( | LibUtilities::SessionReaderSharedPtr | pSession, |
const int | shapedim, | ||
ImplementationType | defaultType = eStdMat |
||
) |
Definition at line 55 of file CollectionOptimisation.cpp.
References ASSERTL0, Nektar::Collections::eHelmholtz, Nektar::LibUtilities::eHexahedron, Nektar::Collections::eIterPerExp, Nektar::Collections::eMatrixFree, Nektar::Collections::eNoCollection, Nektar::Collections::eNoImpType, Nektar::Collections::ePhysDeriv, Nektar::Collections::ePhysInterp1DScaled, Nektar::LibUtilities::ePrism, Nektar::LibUtilities::ePyramid, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, Nektar::LibUtilities::eTriangle, Nektar::LibUtilities::SessionReader::GetXMLElementTimeLevel(), Nektar::Collections::ImplementationTypeMap, m_autotune, m_defaultType, m_global, m_maxCollSize, m_timeLevel, Nektar::Collections::OperatorTypeMap, ReadCollOps(), Nektar::LibUtilities::ShapeTypeMap, Nektar::Collections::SIZE_ImplementationType, and Nektar::Collections::SIZE_OperatorType.
|
default |
|
inline |
Definition at line 129 of file CollectionOptimisation.h.
References m_defaultType.
|
inline |
Definition at line 134 of file CollectionOptimisation.h.
References m_maxCollSize.
Referenced by Nektar::MultiRegions::ExpList::CreateCollections().
OperatorImpMap Nektar::Collections::CollectionOptimisation::GetOperatorImpMap | ( | StdRegions::StdExpansionSharedPtr | pExp | ) |
Get Operator Implementation Map from XMl or using default;.
Definition at line 356 of file CollectionOptimisation.cpp.
References Nektar::Collections::eNoCollection, and m_global.
Referenced by Nektar::HexCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::PrismCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::PyrCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::QuadCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::SegCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::TetCollectionTests::BOOST_AUTO_TEST_CASE(), Nektar::TriCollectionTests::BOOST_AUTO_TEST_CASE(), and Nektar::MultiRegions::ExpList::CreateCollections().
|
inline |
Definition at line 139 of file CollectionOptimisation.h.
References m_autotune.
Referenced by Nektar::MultiRegions::ExpList::CreateCollections().
|
private |
Definition at line 227 of file CollectionOptimisation.cpp.
References ASSERTL0, Nektar::LibUtilities::eHexahedron, Nektar::LibUtilities::ePrism, Nektar::LibUtilities::ePyramid, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, Nektar::LibUtilities::eTriangle, Nektar::ParseUtils::GenerateSeqVector(), Nektar::Collections::ImplementationTypeMap, m_shapeDim, Nektar::Collections::OperatorTypeMap, Nektar::LibUtilities::ShapeTypeDimMap, Nektar::LibUtilities::ShapeTypeMap, Nektar::Collections::SIZE_ImplementationType, and Nektar::Collections::SIZE_OperatorType.
Referenced by CollectionOptimisation(), and UpdateOptFile().
OperatorImpMap Nektar::Collections::CollectionOptimisation::SetWithTimings | ( | std::vector< StdRegions::StdExpansionSharedPtr > | pGeom, |
OperatorImpMap & | impTypes, | ||
bool | verbose = true |
||
) |
Definition at line 393 of file CollectionOptimisation.cpp.
References Nektar::StdRegions::eFactorConst, Nektar::StdRegions::eFactorLambda, Nektar::Collections::eLinearAdvectionDiffusionReaction, Nektar::StdRegions::eVarCoeffVelX, Nektar::StdRegions::eVarCoeffVelY, Nektar::StdRegions::eVarCoeffVelZ, Nektar::VarcoeffHashingTest::factors, Nektar::Collections::GetOperatorFactory(), Vmath::Imin(), Nektar::Collections::ImplementationTypeMap1, Nektar::Collections::Collection::Initialise(), m_opImpMap, m_timeLevel, Nektar::Collections::OperatorTypeMap1, Nektar::LibUtilities::ShapeTypeMap, Nektar::Collections::SIZE_ImplementationType, Nektar::Collections::SIZE_OperatorType, Nektar::LibUtilities::Timer::Start(), Nektar::LibUtilities::Timer::Stop(), Nektar::LibUtilities::Timer::TimePerTest(), and Nektar::Collections::Collection::UpdateVarcoeffs().
Referenced by Nektar::MultiRegions::ExpList::CreateCollections().
void Nektar::Collections::CollectionOptimisation::UpdateOptFile | ( | std::string | sessName, |
LibUtilities::CommSharedPtr & | comm | ||
) |
Definition at line 584 of file CollectionOptimisation.cpp.
References Nektar::LibUtilities::eHexahedron, Nektar::LibUtilities::ePrism, Nektar::LibUtilities::ePyramid, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, Nektar::LibUtilities::eTriangle, Nektar::LibUtilities::SessionReader::GetXMLElementTimeLevel(), Nektar::Collections::ImplementationTypeMap, m_opImpMap, m_timeLevel, Nektar::Collections::OperatorTypeMap, ReadCollOps(), Nektar::LibUtilities::ReduceMax, and Nektar::LibUtilities::SIZE_ShapeType.
Referenced by Nektar::MultiRegions::ExpList::CreateCollections().
|
private |
Definition at line 164 of file CollectionOptimisation.h.
Referenced by CollectionOptimisation(), and IsUsingAutotuning().
|
private |
Definition at line 165 of file CollectionOptimisation.h.
Referenced by CollectionOptimisation(), and GetDefaultImplementationType().
|
private |
Definition at line 163 of file CollectionOptimisation.h.
Referenced by CollectionOptimisation(), and GetOperatorImpMap().
|
private |
Definition at line 166 of file CollectionOptimisation.h.
Referenced by CollectionOptimisation(), and GetMaxCollectionSize().
|
staticprivate |
Definition at line 162 of file CollectionOptimisation.h.
Referenced by SetWithTimings(), and UpdateOptFile().
|
private |
Definition at line 167 of file CollectionOptimisation.h.
Referenced by ReadCollOps().
|
private |
Definition at line 168 of file CollectionOptimisation.h.
Referenced by CollectionOptimisation(), SetWithTimings(), and UpdateOptFile().