Arcane  v3.16.7.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ParallelMngInternal.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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.cc (C) 2000-2025 */
9/* */
10/* Implémentation de la partie interne à Arcane de IParallelMng. */
11/*---------------------------------------------------------------------------*/
12
13#include "arcane/core/internal/ParallelMngInternal.h"
14
16#include "arcane/accelerator/core/RunQueueBuildInfo.h"
17
18#include "arcane/core/ParallelMngDispatcher.h"
19
20#include "arcane/utils/Convert.h"
21#include "arcane/utils/FatalErrorException.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32ParallelMngInternal::
33ParallelMngInternal(ParallelMngDispatcher* pm)
34: m_parallel_mng(pm)
36, m_queue(makeQueue(m_runner))
37{
38 if (auto v = Convert::Type<Int32>::tryParseFromEnvironment("ARCANE_DISABLE_ACCELERATOR_AWARE_MESSAGE_PASSING", true))
39 m_is_accelerator_aware_disabled = (v.value() != 0);
40}
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
45Runner ParallelMngInternal::
46runner() const
47{
48 return m_runner;
49}
50
51/*---------------------------------------------------------------------------*/
52/*---------------------------------------------------------------------------*/
53
54RunQueue ParallelMngInternal::
55queue() const
56{
57 return m_queue;
58}
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
62
63bool ParallelMngInternal::
64isAcceleratorAware() const
65{
66 if (m_is_accelerator_aware_disabled)
67 return false;
68 if (m_queue.isNull())
69 return false;
70 if (!m_queue.isAcceleratorPolicy())
71 return false;
72 return m_parallel_mng->_isAcceleratorAware();
73}
74
75/*---------------------------------------------------------------------------*/
76/*---------------------------------------------------------------------------*/
77
78void ParallelMngInternal::
79setDefaultRunner(const Runner& runner)
80{
81 if (!m_runner.isInitialized())
82 ARCANE_FATAL("Can not set an unitialized Runner");
83
84 // Attention à bien supprimer la référence sur la RunQueue
85 // avant de détruire le Runner car s'il n'y a pas d'autres
86 // références sur \a m_runner il sera détruit avec \a m_queue
87 // et ce dernier aura un \a m_runner détruit.
88 m_queue = RunQueue{};
89 m_runner = runner;
90 Accelerator::RunQueueBuildInfo build_info(-5);
91 m_queue = makeQueue(m_runner, build_info);
92 m_queue.setAsync(true);
93}
94
95/*---------------------------------------------------------------------------*/
96/*---------------------------------------------------------------------------*/
97
98Ref<IParallelMng> ParallelMngInternal::
99createSubParallelMngRef(Int32 color, Int32 key)
100{
101 return m_parallel_mng->_createSubParallelMngRef(color, key);
102}
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
108createMachineMemoryWindowBase(Int64 sizeof_segment, Int32 sizeof_type)
109{
110 ARCANE_UNUSED(sizeof_segment);
111 ARCANE_UNUSED(sizeof_type);
112 ARCANE_NOT_YET_IMPLEMENTED("MachineWindow is not available in your ParallelMng");
113 ARCANE_FATAL("MachineWindow is not available in your ParallelMng");
114}
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
118
119} // namespace Arcane
120
121/*---------------------------------------------------------------------------*/
122/*---------------------------------------------------------------------------*/
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
File d'exécution pour un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Definition core/Runner.h:68
Redirige la gestion des messages des sous-domaines suivant le type de l'argument.
Référence à une instance.
Espace de nom pour l'utilisation des accélérateurs.
RunQueue makeQueue(const Runner &runner)
Créé une file associée à runner.
eExecutionPolicy
Politique d'exécution pour un Runner.
@ Sequential
Politique d'exécution séquentielle.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.