28#include <alien/core/backend/BackEnd.h>
35#include <alien/utils/ObjectWithLock.h>
36#include <alien/utils/Precomp.h>
37#include <alien/utils/UserFeatureMng.h>
38#include <alien/utils/time_stamp/TimestampMng.h>
66,
public UserFeatureMng
67,
public ObjectWithTrace
68,
public ObjectWithLock
80 MultiMatrixImpl(std::shared_ptr<ISpace> row_space, std::shared_ptr<ISpace> col_space,
81 std::shared_ptr<MatrixDistribution> dist);
152 const Block* block()
const;
159 const VBlock* vblock()
const;
166 const VBlock* rowBlock()
const;
173 const VBlock* colBlock()
const;
184 template <
typename tag>
196 template <
typename tag>
200 template <
typename tag>
201 void release()
const;
221 template <
typename matrix_type>
236 template <
typename matrix_type>
241 std::shared_ptr<ISpace> m_row_space;
243 std::shared_ptr<ISpace> m_col_space;
245 std::shared_ptr<MatrixDistribution> m_distribution;
247 typedef std::map<BackEndId, IMatrixImpl*> MultiMatrixImplMap;
249 mutable MultiMatrixImplMap m_impls2;
251 std::shared_ptr<Block> m_block;
253 std::shared_ptr<VBlock> m_rows_block;
255 std::shared_ptr<VBlock> m_cols_block;
261template <
typename tag>
262const typename AlgebraTraits<tag>::matrix_type&
279template <
typename tag>
299template <
typename tag>
303 if (finder == m_impls2.end())
305 delete finder->second, finder->second = NULL;
311template <
typename matrix_type>
313MultiMatrixImpl::getImpl(BackEndId backend)
const
315 auto inserter = m_impls2.insert(MultiMatrixImplMap::value_type(backend, NULL));
330template <
typename matrix_type>
333 if (m_impls2.find(backend) != m_impls2.end()) {
334 alien_fatal([&] { cout() <<
"try to insert already inserted value"; });
336 m_impls2[backend] = m;
MatrixConverterRegisterer.h.
Block elements for block matrices.
Interface to handle abstract matrices implementation.
virtual BackEndId backend() const
Interface for algebraic space objects.
Computes a matrix distribution.
Multi matrices representation container.
void setColBlockInfos(const VBlock *blocks)
Set variable col block information.
void insert(BackEndId backend, matrix_type *m)
Insert a matrix implementation in the multi matrix container.
void setRowBlockInfos(const VBlock *blocks)
Set variable row block information.
void release() const
Release a matrix implementation.
MultiMatrixImpl()
Default constructor.
void clear()
Clear resources.
const MatrixDistribution & distribution() const
Get the matrix distribution.
void free()
Free resources.
const ISpace & rowSpace() const
Get the row space associated to the matrix.
const AlgebraTraits< tag >::matrix_type & get() const
Get a specific matrix implementation.
const ISpace & colSpace() const
Get the col space associated to the matrix.
void setBlockInfos(Arccore::Integer block_size)
Set uniform block information.
void updateTimestamp()
Met à jour le timestamp.
Variable size block elements for block matrices.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --