Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CollectionsGlobal.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* CollectionsGlobal.h (C) 2000-2024 */
9/* */
10/* Définitions globales de la composante 'Collections' de 'Arccore'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_COLLECTIONS_COLLECTIONSGLOBAL_H
13#define ARCCORE_COLLECTIONS_COLLECTIONSGLOBAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/base/ArccoreGlobal.h"
18
19#include <iosfwd>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24#if defined(ARCCORE_COMPONENT_arccore_collections)
25#define ARCCORE_COLLECTIONS_EXPORT ARCCORE_EXPORT
26#define ARCCORE_COLLECTIONS_EXTERN_TPL
27#else
28#define ARCCORE_COLLECTIONS_EXPORT ARCCORE_IMPORT
29#define ARCCORE_COLLECTIONS_EXTERN_TPL extern
30#endif
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35namespace Arccore
36{
37class IMemoryAllocator;
38class PrintableMemoryAllocator;
39class AlignedMemoryAllocator;
40class AlignedMemoryAllocator3;
41class DefaultMemoryAllocator;
42class DefaultMemoryAllocator3;
43class ArrayImplBase;
44class ArrayMetaData;
45class MemoryAllocationArgs;
46class MemoryAllocationOptions;
47class ArrayDebugInfo;
48template<typename DataType> class ArrayTraits;
49template<typename DataType> class ArrayImplT;
50template<typename DataType> class Array;
51template<typename DataType> class AbstractArray;
52template<typename DataType> class UniqueArray;
53template<typename DataType> class SharedArray;
54template<typename DataType> class Array2;
55template<typename DataType> class UniqueArray2;
56template<typename DataType> class SharedArray2;
57}
58
59namespace Arcane::Accelerator
60{
61class RunQueue;
62};
63
64/*---------------------------------------------------------------------------*/
65/*---------------------------------------------------------------------------*/
66
67namespace Arccore
68{
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
73
75enum class eMemoryLocationHint : int8_t
76{
78 None = 0,
80 MainlyDevice = 1,
82 MainlyHost = 2,
88};
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
99enum class eHostDeviceMemoryLocation : int8_t
100{
102 Unknown = 0,
104 Device = 1,
106 Host = 2,
111};
112extern "C++" ARCCORE_COLLECTIONS_EXPORT std::ostream&
113operator<<(std::ostream& o, eHostDeviceMemoryLocation r);
114
115/*---------------------------------------------------------------------------*/
116/*---------------------------------------------------------------------------*/
117
122{
124 Unknown = 0,
126 Host,
130 Device,
133};
134
136static constexpr int ARCCORE_NB_MEMORY_RESOURCE = 5;
137
138/*---------------------------------------------------------------------------*/
139/*---------------------------------------------------------------------------*/
140
141extern "C++" ARCCORE_COLLECTIONS_EXPORT std::ostream&
142operator<<(std::ostream& o, eMemoryResource r);
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
150{
151 public:
152
153 AllocatedMemoryInfo() = default;
154 explicit AllocatedMemoryInfo(void* base_address)
155 : m_base_address(base_address)
156 {}
157 AllocatedMemoryInfo(void* base_address, Int64 size)
158 : m_base_address(base_address)
159 , m_size(size)
160 , m_capacity(size)
161 {}
162 AllocatedMemoryInfo(void* base_address, Int64 size, Int64 capacity)
163 : m_base_address(base_address)
164 , m_size(size)
165 , m_capacity(capacity)
166 {}
167
169 void* baseAddress() const { return m_base_address; }
171 Int64 size() const { return m_size; }
173 Int64 capacity() const { return m_capacity; }
174
175 public:
176
177 void* m_base_address = nullptr;
178 Int64 m_size = -1;
179 Int64 m_capacity = -1;
180};
181
182/*---------------------------------------------------------------------------*/
183/*---------------------------------------------------------------------------*/
184
185} // namespace Arccore
186
187/*---------------------------------------------------------------------------*/
188/*---------------------------------------------------------------------------*/
189
190#endif
191
File d'exécution pour un accélérateur.
Informations sur une zone mémoire allouée.
Int64 capacity() const
Taille en octets de la zone mémoire allouée. (-1) si inconnue.
Int64 size() const
Taille en octets de la zone mémoire utilisée. (-1) si inconnue.
void * baseAddress() const
Adresse du début de la zone allouée.
Espace de nom pour l'utilisation des accélérateurs.
Espace de nom de Arccore.
Definition ArcaneTypes.h:24
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.
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.
@ Unknown
Donnée de type inconnu ou non initialisé
std::int64_t Int64
Type entier signé sur 64 bits.
eMemoryResource
Liste des ressources mémoire disponibles.
@ HostPinned
Alloue sur l'hôte.
@ UnifiedMemory
Alloue en utilisant la mémoire unifiée.