Arcane  v3.14.10.0
Documentation utilisateur
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/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22#if defined(ARCCORE_COMPONENT_arccore_collections)
23#define ARCCORE_COLLECTIONS_EXPORT ARCCORE_EXPORT
24#define ARCCORE_COLLECTIONS_EXTERN_TPL
25#else
26#define ARCCORE_COLLECTIONS_EXPORT ARCCORE_IMPORT
27#define ARCCORE_COLLECTIONS_EXTERN_TPL extern
28#endif
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33namespace Arccore
34{
35class IMemoryAllocator;
36class PrintableMemoryAllocator;
37class AlignedMemoryAllocator;
38class AlignedMemoryAllocator3;
39class DefaultMemoryAllocator;
40class DefaultMemoryAllocator3;
41class ArrayImplBase;
42class ArrayMetaData;
43class MemoryAllocationArgs;
44class MemoryAllocationOptions;
45class ArrayDebugInfo;
46template<typename DataType> class ArrayTraits;
47template<typename DataType> class ArrayImplT;
48template<typename DataType> class Array;
49template<typename DataType> class AbstractArray;
50template<typename DataType> class UniqueArray;
51template<typename DataType> class SharedArray;
52template<typename DataType> class Array2;
53template<typename DataType> class UniqueArray2;
54template<typename DataType> class SharedArray2;
55}
56
57namespace Arcane::Accelerator
58{
59class RunQueue;
60};
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64
65namespace Arccore
66{
68
69/*---------------------------------------------------------------------------*/
70/*---------------------------------------------------------------------------*/
71
72//! Indices sur la localisation mémoire attendue
73enum class eMemoryLocationHint : int8_t
74{
75 //! Aucune indice
76 None = 0,
77 //! Indique que la donnée sera plutôt utilisée sur accélérateur
78 MainlyDevice = 1,
79 //! Indique que la donnée sera plutôt utilisée sur CPU
80 MainlyHost = 2,
81 /*!
82 * \brief Indique que la donnée sera utilisée à la fois sur accélérateur et
83 * sur CPU et qu'elle ne sera pas souvent modifiée.
84 */
86};
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
90/*!
91 * \brief Informations sur une zone mémoire allouée.
92 */
94{
95 public:
96
97 AllocatedMemoryInfo() = default;
98 explicit AllocatedMemoryInfo(void* base_address)
99 : m_base_address(base_address)
100 {}
101 AllocatedMemoryInfo(void* base_address, Int64 size)
102 : m_base_address(base_address)
103 , m_size(size)
104 , m_capacity(size)
105 {}
106 AllocatedMemoryInfo(void* base_address, Int64 size, Int64 capacity)
107 : m_base_address(base_address)
108 , m_size(size)
109 , m_capacity(capacity)
110 {}
111
112 //! Adresse du début de la zone allouée.
113 void* baseAddress() const { return m_base_address; }
114 //! Taille en octets de la zone mémoire utilisée. (-1) si inconnue
115 Int64 size() const { return m_size; }
116 //! Taille en octets de la zone mémoire allouée. (-1) si inconnue
117 Int64 capacity() const { return m_capacity; }
118
119 public:
120
121 void* m_base_address = nullptr;
122 Int64 m_size = -1;
123 Int64 m_capacity = -1;
124};
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
128
129} // namespace Arccore
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
133
134#endif
135
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
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.
std::int64_t Int64
Type entier signé sur 64 bits.