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.
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__ 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.
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.
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.