Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IParallelTopology.h
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/* IParallelTopology.h (C) 2000-20255 */
9/* */
10/* Informations sur la topologie d'allocation des coeurs de calcul. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IPARALLELTOPOLOGY_H
13#define ARCANE_CORE_IPARALLELTOPOLOGY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \ingroup Parallel
29 * \brief Informations sur la topologie d'allocation des coeurs de calcul.
30 *
31 * Une instance de cette classe est liée à un IParallelMng.
32 *
33 * Elle permet de savoir comment les rangs de ce IParallelMng sont alloués
34 * sur le cluster et dans les processus.
35 *
36 */
37class ARCANE_CORE_EXPORT IParallelTopology
38{
39 public:
40
41 virtual ~IParallelTopology() = default; //!< Libère les ressources.
42
43 public:
44
45 //! Gestionnaire de parallélisme associé
46 virtual IParallelMng* parallelMng() const = 0;
47
48 //! Indique si ce rang est le rang maître pour une machine (noeud)
49 virtual bool isMasterMachine() const = 0;
50
51 //! Liste des rangs qui sont sur la même machine
52 virtual Int32ConstArrayView machineRanks() const = 0;
53
54 /*!
55 * \brief Rang de cette instance dans la liste des machines (noeuds).
56 *
57 * Ce rang est compris entre 0 et masterMachineRanks().size().
58 */
59 virtual Int32 machineRank() const = 0;
60
61 /*!
62 * \brief Liste des rangs maîtres pour chaque machine (noeud).
63 *
64 * Cette liste est la même pour tous les rangs.
65 */
67
68 //! Indique si ce rang est le maitre dans les rangs de ce processus.
69 virtual bool isMasterProcess() const = 0;
70
71 //! Liste des rangs qui sont dans le même processus (en multi-threading)
72 virtual Int32ConstArrayView processRanks() const = 0;
73
74 /*!
75 * \brief Rang de cette instance dans la liste des processus.
76 *
77 * Ce rang est compris entre 0 et masterProcessRanks().size().
78 */
79 virtual Int32 processRank() const = 0;
80
81 /*!
82 * \brief Liste des rangs maitres pour chaque processus.
83 *
84 * Cette liste est la même pour tous les rangs.
85 */
87};
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92} // namespace Arcane
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97#endif
Déclarations des types généraux de Arcane.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Informations sur la topologie d'allocation des coeurs de calcul.
virtual IParallelMng * parallelMng() const =0
Gestionnaire de parallélisme associé
virtual Int32ConstArrayView masterMachineRanks() const =0
Liste des rangs maîtres pour chaque machine (noeud).
virtual Int32ConstArrayView masterProcessRanks() const =0
Liste des rangs maitres pour chaque processus.
virtual bool isMasterMachine() const =0
Indique si ce rang est le rang maître pour une machine (noeud)
virtual Int32ConstArrayView processRanks() const =0
Liste des rangs qui sont dans le même processus (en multi-threading)
virtual ~IParallelTopology()=default
Libère les ressources.
virtual bool isMasterProcess() const =0
Indique si ce rang est le maitre dans les rangs de ce processus.
virtual Int32 processRank() const =0
Rang de cette instance dans la liste des processus.
virtual Int32ConstArrayView machineRanks() const =0
Liste des rangs qui sont sur la même machine.
virtual Int32 machineRank() const =0
Rang de cette instance dans la liste des machines (noeuds).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
std::int32_t Int32
Type entier signé sur 32 bits.