Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
Alien::MultiVectorImpl Class Reference
Inheritance diagram for Alien::MultiVectorImpl:
Collaboration diagram for Alien::MultiVectorImpl:

Public Member Functions

 MultiVectorImpl ()
 Multi vectors representation container.
 MultiVectorImpl (std::shared_ptr< ISpace > space, std::shared_ptr< VectorDistribution > dist)
 Constructor.
 ~MultiVectorImpl () override
 Free resources.
 MultiVectorImpl (MultiVectorImpl &&impl)=delete
void operator= (const MultiVectorImpl &)=delete
void operator= (MultiVectorImpl &&)=delete
void setBlockInfos (const Block *blocks)
 Set uniform block information.
void setBlockInfos (const VBlock *blocks)
 Set variable block information.
void setBlockInfos (Arccore::Integer block_size)
 Set uniform block information.
void free ()
 Free resources.
void clear ()
 Clear resources.
const ISpacespace () const
 Get the space associated with the vector.
const VectorDistributiondistribution () const
 Get the vector distribution.
const Blockblock () const
 Get uniform block datas.
const VBlockvblock () const
 Get variable block datas.
MultiVectorImplclone () const
 Clone this object.
template<typename tag>
const AlgebraTraits< tag >::vector_typeget () const
 Get a specific vector implementation.
template<typename tag>
AlgebraTraits< tag >::vector_typeget (bool update_stamp)
 Get a specific vector implementation.
template<typename tag>
void release () const
 Release a vector implementation.
Public Member Functions inherited from Alien::TimestampMng
 TimestampMng (const TimestampMng &tm)
Int64 timestamp () const
 Valeur du timestamp de référence.
void updateTimestamp (Timestamp *ts) const
 Requête de mise à jour d'un Timestamp.
void addObserver (std::shared_ptr< ITimestampObserver > observer)
void clearObservers ()
Public Member Functions inherited from Alien::UserFeatureMng
bool hasFeature (const String &feature) const
void setFeature (const String &feature)
Public Member Functions inherited from Alien::ObjectWithTrace
template<typename T>
void alien_info (T &&t) const
template<typename T>
void alien_debug (T &&t) const
template<typename T>
void alien_warning (T &&t) const
template<typename T>
void alien_fatal (T &&t) const
ITraceMng * traceMng () const

Protected Member Functions

 MultiVectorImpl (const MultiVectorImpl &impl)
 Copy constructor.
template<typename vector_type>
void insert (const BackEndId &backend, vector_type *v)
 Insert a vector implementation in the multi vector container.
Protected Member Functions inherited from Alien::ObjectWithTrace
TraceMessage cout () const

Private Types

typedef std::map< BackEndId, IVectorImpl * > MultiVectorImplMap
 The type of the vector container.

Private Member Functions

template<typename vector_type>
IVectorImpl *& getImpl (BackEndId backend) const
 Get a specific vector implementation.
void updateImpl (IVectorImpl *target) const
 Update a vector implementation.

Private Attributes

std::shared_ptr< ISpacem_space
 The vector space.
std::shared_ptr< VectorDistributionm_distribution
 The vector distribution.
MultiVectorImplMap m_impls2
 The vectors container.
std::shared_ptr< Blockm_block
 The uniform block datas.
std::shared_ptr< VBlockm_variable_block
 The variable block datas.

Detailed Description

Definition at line 49 of file MultiVectorImpl.h.

Member Typedef Documentation

◆ MultiVectorImplMap

typedef std::map<BackEndId, IVectorImpl*> Alien::MultiVectorImpl::MultiVectorImplMap
private

The type of the vector container.

Definition at line 210 of file MultiVectorImpl.h.

Constructor & Destructor Documentation

◆ MultiVectorImpl() [1/2]

Alien::MultiVectorImpl::MultiVectorImpl ( std::shared_ptr< ISpace > space,
std::shared_ptr< VectorDistribution > dist )

Constructor.

Parameters
[in]spaceThe space of the vector
[in]distThe distribution of the vector

Definition at line 47 of file MultiVectorImpl.cc.

References distribution(), m_block, m_distribution, m_space, m_variable_block, and space().

Here is the call graph for this function:

◆ ~MultiVectorImpl()

Alien::MultiVectorImpl::~MultiVectorImpl ( )
override

Free resources.

Definition at line 74 of file MultiVectorImpl.cc.

References free().

Here is the call graph for this function:

◆ MultiVectorImpl() [2/2]

Alien::MultiVectorImpl::MultiVectorImpl ( const MultiVectorImpl & impl)
protected

Copy constructor.

Parameters
[in]Internal data structure access.The MultiVectorImpl to copy

Definition at line 58 of file MultiVectorImpl.cc.

References m_block, m_distribution, m_space, m_variable_block, and MultiVectorImpl().

Here is the call graph for this function:

Member Function Documentation

◆ block()

const Block * Alien::MultiVectorImpl::block ( ) const

Get uniform block datas.

Returns
The vector block data, or a nullptr if the vector is scalar or has variable blocks

Definition at line 129 of file MultiVectorImpl.cc.

References m_block.

◆ clear()

void Alien::MultiVectorImpl::clear ( )

Clear resources.

Definition at line 118 of file MultiVectorImpl.cc.

References m_impls2.

Referenced by Alien::Move::VectorData::clear(), and setBlockInfos().

Here is the caller graph for this function:

◆ clone()

MultiVectorImpl * Alien::MultiVectorImpl::clone ( ) const

Clone this object.

Returns
A clone of this object

Definition at line 147 of file MultiVectorImpl.cc.

References get(), MultiVectorImpl(), Alien::Timestamp::timestamp(), and Alien::Timestamp::updateTimestamp().

Here is the call graph for this function:

◆ distribution()

const VectorDistribution & Alien::MultiVectorImpl::distribution ( ) const
inline

Get the vector distribution.

Returns
The vector distribution

Definition at line 130 of file MultiVectorImpl.h.

References m_distribution.

Referenced by MultiVectorImpl().

Here is the caller graph for this function:

◆ free()

void Alien::MultiVectorImpl::free ( )

Free resources.

Definition at line 106 of file MultiVectorImpl.cc.

References m_impls2.

Referenced by Alien::Move::VectorData::free(), setBlockInfos(), and ~MultiVectorImpl().

Here is the caller graph for this function:

◆ get() [1/2]

template<typename tag>
const AlgebraTraits< tag >::vector_type & Alien::MultiVectorImpl::get ( ) const

Get a specific vector implementation.

Might induce a conversion, depending on the up to date and requested vector implementation

Returns
The up to date vector in the requested implementation

Definition at line 224 of file MultiVectorImpl.h.

References Alien::IVectorImpl::backend(), getImpl(), and updateImpl().

Referenced by Alien::LinearAlgebra< Tag, TagV >::axpy(), Alien::LinearAlgebraExpr< Tag, TagV >::axpy(), Alien::LinearAlgebra< Tag, TagV >::aypx(), Alien::LinearAlgebraExpr< Tag, TagV >::aypx(), clone(), Alien::SchurOp::computePrimarySystem(), Alien::LinearAlgebra< Tag, TagV >::copy(), Alien::LinearAlgebraExpr< Tag, TagV >::copy(), Alien::LinearAlgebra< Tag, TagV >::diagonal(), Alien::LinearAlgebraExpr< Tag, TagV >::diagonal(), Alien::LinearAlgebra< Tag, TagV >::dot(), Alien::LinearAlgebraExpr< Tag, TagV >::dot(), Alien::LinearAlgebra< Tag, TagV >::dump(), Alien::LinearAlgebraExpr< Tag, TagV >::dump(), Alien::Move::VectorData::impl(), Alien::Move::VectorData::impl(), Alien::LinearAlgebra< Tag, TagV >::mult(), Alien::LinearAlgebraExpr< Tag, TagV >::mult(), Alien::LinearAlgebra< Tag, TagV >::norm0(), Alien::LinearAlgebraExpr< Tag, TagV >::norm0(), Alien::LinearAlgebra< Tag, TagV >::norm1(), Alien::LinearAlgebraExpr< Tag, TagV >::norm1(), Alien::LinearAlgebra< Tag, TagV >::norm2(), Alien::LinearAlgebraExpr< Tag, TagV >::norm2(), Alien::NormalizeOpt::normalize(), Alien::NormalizeOpt::normalize(), Alien::LinearAlgebra< Tag, TagV >::normInf(), Alien::LinearAlgebraExpr< Tag, TagV >::normInf(), Alien::LinearAlgebra< Tag, TagV >::pointwiseMult(), Alien::LinearAlgebraExpr< Tag, TagV >::pointwiseMult(), Alien::LinearAlgebra< Tag, TagV >::reciprocal(), Alien::LinearAlgebraExpr< Tag, TagV >::reciprocal(), Alien::Redistributor::redistribute(), Alien::LinearAlgebra< Tag, TagV >::scal(), Alien::LinearAlgebraExpr< Tag, TagV >::scal(), and Alien::LinearSolver< Tag >::solve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get() [2/2]

template<typename tag>
AlgebraTraits< tag >::vector_type & Alien::MultiVectorImpl::get ( bool update_stamp)

Get a specific vector implementation.

Might induce a conversion, depending on the up to date and requested vector implementation

Parameters
[in]update_stampWhether or not the timestamp should be increased or not
Returns
The up to date vector in the requested implementation

Definition at line 239 of file MultiVectorImpl.h.

References Alien::IVectorImpl::backend(), getImpl(), updateImpl(), and Alien::Timestamp::updateTimestamp().

Here is the call graph for this function:

◆ getImpl()

template<typename vector_type>
IVectorImpl *& Alien::MultiVectorImpl::getImpl ( BackEndId backend) const
private

Get a specific vector implementation.

Parameters
[in]backendThe id of the specific implementation
Returns
The vector in the requested format

Definition at line 269 of file MultiVectorImpl.h.

References m_distribution, and m_impls2.

Referenced by get(), get(), and updateImpl().

Here is the caller graph for this function:

◆ insert()

template<typename vector_type>
void Alien::MultiVectorImpl::insert ( const BackEndId & backend,
vector_type * v )
protected

Insert a vector implementation in the multi vector container.

Parameters
[in]backendThe implementation backend id
[in]vThe vector to insert

Definition at line 285 of file MultiVectorImpl.h.

References m_impls2.

◆ release()

template<typename tag>
void Alien::MultiVectorImpl::release ( ) const

Release a vector implementation.

Definition at line 256 of file MultiVectorImpl.h.

References m_impls2.

◆ setBlockInfos() [1/3]

void Alien::MultiVectorImpl::setBlockInfos ( Arccore::Integer block_size)

Set uniform block information.

Parameters
[in]block_sizeThe size of the blocks

References clear(), and free().

Here is the call graph for this function:

◆ setBlockInfos() [2/3]

void Alien::MultiVectorImpl::setBlockInfos ( const Block * blocks)

Set uniform block information.

Parameters
[in]blocksThe block data

Definition at line 82 of file MultiVectorImpl.cc.

References Alien::Block::clone(), and m_block.

Here is the call graph for this function:

◆ setBlockInfos() [3/3]

void Alien::MultiVectorImpl::setBlockInfos ( const VBlock * blocks)

Set variable block information.

Parameters
[in]blocksThe block data

Definition at line 90 of file MultiVectorImpl.cc.

References Alien::VBlock::clone(), and m_variable_block.

Here is the call graph for this function:

◆ space()

const ISpace & Alien::MultiVectorImpl::space ( ) const
inline

Get the space associated with the vector.

Returns
The space

Definition at line 124 of file MultiVectorImpl.h.

References m_space.

Referenced by MultiVectorImpl(), and Alien::Move::VectorData::space().

Here is the caller graph for this function:

◆ updateImpl()

void Alien::MultiVectorImpl::updateImpl ( IVectorImpl * target) const
private

Update a vector implementation.

Parameters
[in]targetThe targeted implementation

Definition at line 179 of file MultiVectorImpl.cc.

References Alien::IVectorImpl::backend(), Alien::Timestamp::copyTimestamp(), Alien::VectorConverterRegisterer::getConverter(), getImpl(), m_impls2, Alien::Timestamp::timestamp(), and Alien::TimestampMng::timestamp().

Referenced by get(), and get().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vblock()

const VBlock * Alien::MultiVectorImpl::vblock ( ) const

Get variable block datas.

Returns
The vector block data or a nullptr if the vector is scalar or has uniform blocks

Definition at line 138 of file MultiVectorImpl.cc.

References m_variable_block.

Member Data Documentation

◆ m_block

std::shared_ptr<Block> Alien::MultiVectorImpl::m_block
private

The uniform block datas.

Definition at line 214 of file MultiVectorImpl.h.

Referenced by block(), MultiVectorImpl(), MultiVectorImpl(), MultiVectorImpl(), and setBlockInfos().

◆ m_distribution

std::shared_ptr<VectorDistribution> Alien::MultiVectorImpl::m_distribution
private

The vector distribution.

Definition at line 208 of file MultiVectorImpl.h.

Referenced by distribution(), getImpl(), MultiVectorImpl(), and MultiVectorImpl().

◆ m_impls2

MultiVectorImplMap Alien::MultiVectorImpl::m_impls2
mutableprivate

The vectors container.

Definition at line 212 of file MultiVectorImpl.h.

Referenced by clear(), free(), getImpl(), insert(), release(), and updateImpl().

◆ m_space

std::shared_ptr<ISpace> Alien::MultiVectorImpl::m_space
private

The vector space.

Definition at line 206 of file MultiVectorImpl.h.

Referenced by MultiVectorImpl(), MultiVectorImpl(), and space().

◆ m_variable_block

std::shared_ptr<VBlock> Alien::MultiVectorImpl::m_variable_block
private

The variable block datas.

Definition at line 216 of file MultiVectorImpl.h.

Referenced by MultiVectorImpl(), MultiVectorImpl(), MultiVectorImpl(), setBlockInfos(), and vblock().


The documentation for this class was generated from the following files: