Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
ParallelMngInternal.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ParallelMngInternal.h (C) 2000-2026 */
9/* */
10/* Implementation of the internal part of IParallelMng in Arcane. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_INTERNAL_PARALLELMNGINTERNAL_H
13#define ARCANE_CORE_INTERNAL_PARALLELMNGINTERNAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/core/internal/IParallelMngInternal.h"
19
20#include "arcane/accelerator/core/Runner.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
40class ARCANE_CORE_EXPORT ParallelMngInternal
42{
43 public:
44
45 explicit ParallelMngInternal(ParallelMngDispatcher* pm);
46
47 ~ParallelMngInternal() override = default;
48
49 public:
50
51 Runner runner() const override;
52 RunQueue queue() const override;
53 bool isAcceleratorAware() const override;
55 void setDefaultRunner(const Runner& runner) override;
56 Int32 masterParallelIORank() const override;
57 Int32 nbSendersToMasterParallelIO() const override;
58 void initializeWindowCreator() override;
59 bool isMachineShMemWinAvailable() override;
64 void machineBarrier() override;
65
66 private:
67
68 ParallelMngDispatcher* m_parallel_mng = nullptr;
69 Runner m_runner;
70 RunQueue m_queue;
71 bool m_is_accelerator_aware_disabled = false;
72};
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
76
77} // namespace Arcane
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
82#endif
Declarations of Arcane's general types.
Constant view of an array of type T.
Internal part of IParallelMng.
Redirects the message management of sub-domains according to the argument type.
Int32 masterParallelIORank() const override
MemoryAllocationOptions machineShMemWinMemoryAllocator() override
Method allowing retrieval of a shared memory allocator.
void initializeWindowCreator() override
Method allowing the initialization of the windowCreator specific to the implementation.
void machineBarrier() override
Method allowing a barrier for the sub-domains of the computing node.
Int32 nbSendersToMasterParallelIO() const override
Ref< MessagePassing::IContigMachineShMemWinBaseInternal > createContigMachineShMemWinBase(Int64 sizeof_segment, Int32 sizeof_type) override
Method allowing the creation of a memory window on the node.
ConstArrayView< Int32 > machineRanks() override
Method allowing retrieval of the ranks of the sub-domains of the computing node.
RunQueue queue() const override
Default queue for messages. Can be null.
Ref< MessagePassing::IMachineShMemWinBaseInternal > createMachineShMemWinBase(Int64 sizeof_segment, Int32 sizeof_type) override
Method allowing the creation of a dynamic memory window on the node.
Ref< IParallelMng > createSubParallelMngRef(Int32 color, Int32 key) override
Creates a sub IParallelMng similar to MPI_Comm_split.
bool isAcceleratorAware() const override
Indicates if the implementation handles accelerators.
Runner runner() const override
Default runner. Can be null.
bool isMachineShMemWinAvailable() override
Method allowing to know if shared memory mode is supported.
Reference to an instance.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
std::int64_t Int64
Signed integer type of 64 bits.
std::int32_t Int32
Signed integer type of 32 bits.