Arcane  4.2.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
CommonGlobal.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/* CommonGlobal.h (C) 2000-2026 */
9/* */
10/* Définitions globales de la composante 'Common' de 'Arccore'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_COMMON_COMMONGLOBAL_H
13#define ARCCORE_COMMON_COMMONGLOBAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include <iosfwd>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24#if defined(ARCCORE_COMPONENT_arccore_common)
25#define ARCCORE_COMMON_EXPORT ARCCORE_EXPORT
26#define ARCCORE_COMMON_EXTERN_TPL
27#else
28#define ARCCORE_COMMON_EXPORT ARCCORE_IMPORT
29#define ARCCORE_COMMON_EXTERN_TPL extern
30#endif
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35namespace Arcane::Accelerator
36{
37class RunQueue;
38};
39
40/*---------------------------------------------------------------------------*/
41/*---------------------------------------------------------------------------*/
42
43// Pour l'instant on doit laisser ArrayTraits dans le namespace Arccore
44// pour des raisons de compatibilité avec la macro ARCCORE_DEFINE_ARRAY_PODTYPE
45namespace Arccore
46{
47template <typename DataType> class ArrayTraits;
48}
49
50/*---------------------------------------------------------------------------*/
51/*---------------------------------------------------------------------------*/
52
53namespace Arcane
54{
55using Arcane::Accelerator::RunQueue;
56
57/*---------------------------------------------------------------------------*/
58/*---------------------------------------------------------------------------*/
59
60class IMemoryResourceMngInternal;
62class IMemoryCopier;
63class IMemoryPool;
64
67class ArrayDebugInfo;
73
74class ArrayImplBase;
75class ArrayMetaData;
76template <typename DataType> class ArrayImplT;
77template <typename DataType> class Array;
78template <typename DataType> class AbstractArray;
79template <typename DataType> class UniqueArray;
80template <typename DataType> class SharedArray;
81using Arccore::ArrayTraits;
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
85
86template<typename T> class EnumeratorT;
87template<typename T> class ListEnumeratorT;
88
89template<typename T> class Collection;
90template<typename T> class List;
91
94template<typename... Args> class EventObservable;
95template<typename... Args> class EventObserver;
96template <typename... Args> class EventObservableView;
97
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
102
103class JSONWriter;
104class JSONValue;
105class JSONDocument;
106class JSONValueList;
107class JSONWrapperUtils;
108class JSONKeyValue;
109class JSONKeyValueList;
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114template <typename DataType>
115class DataViewSetter;
116template <typename DataType>
117class DataViewGetter;
118template <typename DataType>
120template <typename DataType_, int Size>
122template <typename DataType_, int Size>
124template <typename DataType_, int Row, int Column>
126template <typename DataType_, int Row, int Column>
128
129/*---------------------------------------------------------------------------*/
130/*---------------------------------------------------------------------------*/
131
133class ArcaNetReader;
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
137
138//! Indices sur la localisation mémoire attendue
139enum class eMemoryLocationHint : int8_t
140{
141 //! Aucune indice
142 None = 0,
143 //! Indique que la donnée sera plutôt utilisée sur accélérateur
145 //! Indique que la donnée sera plutôt utilisée sur CPU
147 /*!
148 * \brief Indique que la donnée sera utilisée à la fois sur accélérateur et
149 * sur CPU et qu'elle ne sera pas souvent modifiée.
150 */
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
156/*!
157 * \brief Localisation physique d'une adresse mémoire.
158 *
159 * Pour les valeurs ManagedMemoryDevice et ManagedMemoryHost il s'agit d'une
160 * indication car il n'y a pas de moyen simple de savoir où se trouve
161 * réellement la mémoire.
162 */
163enum class eHostDeviceMemoryLocation : int8_t
164{
165 //! Localisation inconnue
167 //! La mémoire est sur accélérateur
169 //! La mémoire est sur l'hôte.
170 Host = 2,
171 //! La mémoire est de la mémoire managée sur accélérateur
173 //! La mémoire est de la mémoire managée sur l'hôte.
175};
176
177extern "C++" ARCCORE_COMMON_EXPORT std::ostream&
178operator<<(std::ostream& o, eHostDeviceMemoryLocation r);
179
180/*---------------------------------------------------------------------------*/
181/*---------------------------------------------------------------------------*/
182/*!
183 * \brief Liste des ressources mémoire disponibles.
184 */
186{
187 //! Valeur inconnue ou non initialisée
189 //! Alloue sur l'hôte.
191 //! Alloue sur l'hôte.
193 //! Alloue sur le device
195 //! Alloue en utilisant la mémoire unifiée.
197};
198
199//! Nombre de valeurs valides pour eMemoryResource
200static constexpr int ARCCORE_NB_MEMORY_RESOURCE = 5;
201
202/*---------------------------------------------------------------------------*/
203/*---------------------------------------------------------------------------*/
204
205extern "C++" ARCCORE_COMMON_EXPORT std::ostream&
206operator<<(std::ostream& o, eMemoryResource r);
207
208/*---------------------------------------------------------------------------*/
209/*---------------------------------------------------------------------------*/
210/*!
211 * \brief Taille du padding pour les index dans les opérations SIMD.
212 *
213 * Afin d'avoir le même code quel que soit le mécanisme de vectorisation
214 * utilisé, cette valeur est fixe et correspond au plus grand vecteur SIMD.
215 *
216 * \sa arcanedoc_simd
217 */
218static const Integer SIMD_PADDING_SIZE = 8;
219
220/*---------------------------------------------------------------------------*/
221/*---------------------------------------------------------------------------*/
222
223namespace Impl
224{
225class StridedLoopRangesBase;
226template <typename LoopRangesType>
228};
229
230/*---------------------------------------------------------------------------*/
231/*---------------------------------------------------------------------------*/
232
233} // namespace Arcane
234
235/*---------------------------------------------------------------------------*/
236/*---------------------------------------------------------------------------*/
237
238#endif
239
Définitions et globaux de Arccore.
Classe abstraite de base d'un vecteur.
Allocateur mémoire avec alignement mémoire spécifique.
Informations sur une zone mémoire allouée.
Classe permettant de lire les fichiers ArcaNet.
Informations de debug pour les classes tableaux.
Classe de base des vecteurs 1D de données.
Classe de base d'une collection fortement typée.
Classe pour accéder à un élément d'une vue en lecture/écriture.
Classe pour accéder à un élément d'une vue en lecture.
Classe pour accéder à un élément d'une vue en écriture.
Allocateur mémoire via malloc/realloc/free.
Classe gérant les observateurs associés à un évènement.
Classe de base d'un handler d'évènement.
Interface d'un allocateur pour la mémoire.
Interface d'un pool mémoire.
Definition IMemoryPool.h:31
Liste de (clé,valeur) d'un document JSON.
Enumérateur typé pour un tableau.
Implémentation d'une collection d'éléments sous forme de vecteur.
Classe contenant des informations pour spécialiser les allocations.
Vue mutable pour un NumMatrix<DataType_,Row,Column>.
Vue en lecture seule pour un NumMatrix<DataType_,Row,Column>.
Vue mutable pour un NumVector<DataType_,Size>.
Vue en lecture seule pour un NumVector<DataType_, Size_>.
Allocateur mémoire via malloc/realloc/free avec impression listing.
Vecteur 1D de données avec sémantique par référence.
Vecteur 1D de données avec sémantique par valeur (style STL).
Caractéristiques pour un tableau.
Espace de nom pour l'utilisation des accélérateurs.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type représentant un entier.
@ Unknown
Structure inconnu ou pas initialisée.
Definition MeshKind.h:31
List< String > StringList
Tableau de chaînes de caractères unicode.
Definition UtilsTypes.h:507
eMemoryLocationHint
Indices sur la localisation mémoire attendue.
@ MainlyHost
Indique que la donnée sera plutôt utilisée sur CPU.
@ HostAndDeviceMostlyRead
Indique que la donnée sera utilisée à la fois sur accélérateur et sur CPU et qu'elle ne sera pas souv...
@ MainlyDevice
Indique que la donnée sera plutôt utilisée sur accélérateur.
eHostDeviceMemoryLocation
Localisation physique d'une adresse mémoire.
@ ManagedMemoryDevice
La mémoire est de la mémoire managée sur accélérateur.
@ Host
La mémoire est sur l'hôte.
@ ManagedMemoryHost
La mémoire est de la mémoire managée sur l'hôte.
@ Device
La mémoire est sur accélérateur.
eMemoryResource
Liste des ressources mémoire disponibles.
@ HostPinned
Alloue sur l'hôte.
@ UnifiedMemory
Alloue en utilisant la mémoire unifiée.
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.
@ None
Le maillage n'est pas AMR.
Definition MeshKind.h:50
Espace de nom de Arccore.