12#ifndef ARCANE_UTILS_NUMARRAYCONTAINER_H
13#define ARCANE_UTILS_NUMARRAYCONTAINER_H
17#include "arcane/utils/Array.h"
54template <
typename DataType>
55class NumArrayContainer
62 using ThatClass = NumArrayContainer<DataType>;
63 static constexpr Int32 _typeSize() {
return static_cast<Int32>(
sizeof(DataType)); }
82 explicit NumArrayContainer()
83 : NumArrayContainer(_getDefaultAllocator())
88 : NumArrayContainer(_getDefaultAllocator(r))
90 m_memory_ressource = r;
93 NumArrayContainer(
const ThatClass& rhs)
94 : NumArrayContainer(rhs.allocationOptions())
96 m_memory_ressource = rhs.m_memory_ressource;
100 NumArrayContainer(ThatClass&& rhs)
101 : BaseClass(std::move(rhs))
102 , m_memory_ressource(rhs.m_memory_ressource)
108 ThatClass& operator=(
const ThatClass& rhs) =
delete;
110 ThatClass& operator=(ThatClass&& rhs)
113 m_memory_ressource = rhs.m_memory_ressource;
124 void swap(NumArrayContainer<DataType>& rhs)
127 std::swap(m_memory_ressource, rhs.m_memory_ressource);
132 void copyInitializerList(std::initializer_list<DataType> alist)
137 for (
auto x : alist) {
153 _memoryAwareCopy(v, input_ressource, queue);
161 NumArrayBaseCommon::_memoryAwareFill(
asWritableBytes(destination), destination.
size(), &v, _typeSize(), indexes, queue);
169 NumArrayBaseCommon::_memoryAwareFill(
asWritableBytes(destination), destination.
size(), &v, _typeSize(), queue);
176 NumArrayBaseCommon::_memoryAwareCopy(
asBytes(v), input_ressource,
179 void _resizeAndCopy(
const ThatClass& v)
182 _memoryAwareCopy(v, v.memoryRessource(),
nullptr);
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(MemoryAllocationOptions o, Int64 acapacity, void *pre_allocated_buffer=nullptr)
Construit un vecteur vide 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.
Tableau d'items de types quelconques.
void fill(const DataType &data)
Remplissage du tableau.
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__ pointer data() const noexcept
Pointeur sur le début de la vue.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
Implémentation commune à pour NumArray.
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.
std::int64_t Int64
Type entier signé sur 64 bits.
Arcane::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
Impl::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets non modifiables.
Impl::SpanTypeFromSize< std::byte, SizeType >::SpanType asWritableBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets modifiables.
std::int32_t Int32
Type entier signé sur 32 bits.