26#include <arccore/message_passing/Messages.h>
35using namespace Arccore;
36using namespace Arccore::MessagePassing;
44 const Integer localOffset = dist.
offset();
54 const Integer localOffset = dist.
rowOffset();
62 Integer localOffset, IMessagePassingMng* parallel_mng)
64 m_local_scalarized_size = 0;
66 const Integer block_size = all_blocks_sizes.find(i + localOffset).value();
67 m_local_scalarized_size += block_size;
70 m_global_scalarized_size = 0;
71 m_scalarized_offset = 0;
72 const bool is_parallel = (parallel_mng != NULL) && (parallel_mng->commSize() > 1);
74 m_global_scalarized_size = Arccore::MessagePassing::mpAllReduce(
75 parallel_mng, Arccore::MessagePassing::ReduceSum, m_local_scalarized_size);
76 Arccore::UniqueArray<Arccore::Integer> local_sizes(parallel_mng->commSize());
77 Arccore::MessagePassing::mpAllGather(parallel_mng,
78 Alien::ArrayView<Integer>(1, &m_local_scalarized_size), local_sizes);
79 for (Integer i = 0; i < parallel_mng->commRank(); ++i)
80 m_scalarized_offset += local_sizes[i];
83 m_global_scalarized_size = m_local_scalarized_size;
93 return m_local_scalarized_size;
102 return m_global_scalarized_size;
111 return m_scalarized_offset;
Computes a matrix distribution.
Arccore::Integer localRowSize() const
Get the local row size.
Arccore::Integer rowOffset() const
Get the row offset.
Arccore::MessagePassing::IMessagePassingMng * parallelMng() const
Get the parallel manager.
Arccore::Integer offset() const
Get the "scalarized" offset.
VBlockSizes(const VBlock &block, const VectorDistribution &dist)
Constructor for vectors variable blocks.
Arccore::Integer globalSize() const
Get the "scalarized" global size.
Arccore::Integer localSize() const
Get the "scalarized" local size.
Variable size block elements for block matrices.
const ValuePerBlock & blockSizes() const
Get the size of all blocks.
VMap< Arccore::Integer, Arccore::Integer > ValuePerBlock
Type of the size of each block.
Computes a vector distribution.
Arccore::Integer offset() const
Get the offset.
Arccore::Integer localSize() const
Get the local size.
Arccore::MessagePassing::IMessagePassingMng * parallelMng() const
Get the parallel manager.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --