12#ifndef ARCANE_UTILS_NUMARRAYCONTAINER_H
13#define ARCANE_UTILS_NUMARRAYCONTAINER_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/MemoryRessource.h"
19#include "arcane/utils/ArcaneCxx20.h"
56template <
typename DataType>
57class NumArrayContainer
64 using ThatClass = NumArrayContainer<DataType>;
65 static constexpr Int32 _typeSize() {
return static_cast<Int32>(
sizeof(DataType)); }
84 explicit NumArrayContainer()
85 : NumArrayContainer(_getDefaultAllocator())
90 : NumArrayContainer(_getDefaultAllocator(r))
92 m_memory_ressource = r;
95 NumArrayContainer(
const ThatClass& rhs)
96 : NumArrayContainer(rhs.allocationOptions())
98 m_memory_ressource = rhs.m_memory_ressource;
102 NumArrayContainer(ThatClass&& rhs)
103 : BaseClass(std::move(rhs))
104 , m_memory_ressource(rhs.m_memory_ressource)
110 ThatClass& operator=(
const ThatClass& rhs) =
delete;
112 ThatClass& operator=(ThatClass&& rhs)
115 m_memory_ressource = rhs.m_memory_ressource;
126 void swap(NumArrayContainer<DataType>& rhs)
129 std::swap(m_memory_ressource, rhs.m_memory_ressource);
134 void copyInitializerList(std::initializer_list<DataType> alist)
139 for (
auto x : alist) {
155 _memoryAwareCopy(v, input_ressource, queue);
163 NumArrayBaseCommon::_memoryAwareFill(
asWritableBytes(destination), destination.
size(), &v, _typeSize(), indexes, queue);
171 NumArrayBaseCommon::_memoryAwareFill(
asWritableBytes(destination), destination.
size(), &v, _typeSize(), queue);
178 NumArrayBaseCommon::_memoryAwareCopy(
asBytes(v), input_ressource,
181 void _resizeAndCopy(
const ThatClass& v)
184 _memoryAwareCopy(v, v.memoryRessource(),
nullptr);
57class NumArrayContainer {
…};
String debugName() const
Nom de debug (nul si aucun nom spécifié)
void setDebugName(const String &name)
Positionne le nom du tableau pour les informations de debug.
Integer capacity() const
Capacité (nombre d'éléments alloués) du vecteur.
void _move(ThatClassType &rhs) ARCCORE_NOEXCEPT
Implémente l'opérateur d'assignement par déplacement.
void _initFromAllocator(IMemoryAllocator *a, Int64 acapacity)
Construit un tableau avec un allocateur spécifique a.
void _resizeNoInit(Int64 s, RunQueue *queue=nullptr)
Redimensionne sans initialiser les nouvelles valeurs.
void _swap(ThatClassType &rhs) ARCCORE_NOEXCEPT
Échange les valeurs de l'instance avec celles de rhs.
File d'exécution pour un accélérateur.
Classe de base des vecteurs 1D de données.
void fill(ConstReferenceType value)
Remplit le tableau avec la valeur value.
Span< const T > span() const
Vue immutable sur ce tableau.
Span< const T > constSpan() const
Vue constante sur ce tableau.
Interface d'un allocateur pour la mémoire.
Options pour configurer les allocations.
Vue d'un tableau d'éléments de type T.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
Vue d'un tableau d'éléments de type T.
void fill(const DataType &v, const RunQueue *queue)
Remplit les éléments de l'instance la valeur v.
void copyOnly(const Span< const DataType > &v, eMemoryRessource input_ressource, const RunQueue *queue=nullptr)
Copie les valeurs de v dans l'instance.
void fill(const DataType &v, SmallSpan< const Int32 > indexes, const RunQueue *queue)
Remplit les indices données par indexes avec la valeur v.
impl::SpanTypeFromSize< std::byte, SizeType >::SpanType asWritableBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets modifiables.
std::int64_t Int64
Type entier signé sur 64 bits.
impl::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets non modifiables.
Arcane::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
std::int32_t Int32
Type entier signé sur 32 bits.