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"
42 static void _memoryAwareFill(
Span<std::byte> to, Int64 nb_element,
const void* fill_address,
44 static void _memoryAwareFill(
Span<std::byte> to, Int64 nb_element,
const void* fill_address,
45 Int32 datatype_size,
RunQueue* queue);
56template <
typename DataType>
65 static constexpr Int32 _typeSize() {
return static_cast<Int32
>(
sizeof(DataType)); }
92 m_memory_ressource = r;
98 m_memory_ressource = rhs.m_memory_ressource;
104 , m_memory_ressource(rhs.m_memory_ressource)
115 m_memory_ressource = rhs.m_memory_ressource;
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,
179 asWritableBytes(to1DSpan()), m_memory_ressource, queue);
181 void _resizeAndCopy(
const ThatClass& v)
184 _memoryAwareCopy(v, v.memoryRessource(),
nullptr);
File d'exécution pour un accélérateur.
void fill(const DataType &v, RunQueue *queue)
Remplit les éléments de l'instance la valeur v.
void fill(const DataType &v, SmallSpan< const Int32 > indexes, RunQueue *queue)
Remplit les indices données par indexes avec la valeur v.
void copyOnly(const Span< const DataType > &v, eMemoryRessource input_ressource, RunQueue *queue=nullptr)
Copie les valeurs de v dans l'instance.
void setDebugName(const String &name)
Positionne le nom du tableau pour les informations de debug.
String debugName() const
Nom de debug (nul si aucun nom spécifié)
void _move(ThatClassType &rhs) ARCCORE_NOEXCEPT
Implémente l'opérateur d'assignement par déplacement.
void _resizeNoInit(Int64 s, RunQueue *queue=nullptr)
Redimensionne sans initialiser les nouvelles valeurs.
void _initFromAllocator(IMemoryAllocator *a, Int64 acapacity)
Construit un tableau avec un allocateur spécifique a.
Integer capacity() const
Capacité (nombre d'éléments alloués) du vecteur.
void _swap(ThatClassType &rhs) ARCCORE_NOEXCEPT
Échange les valeurs de l'instance avec celles de rhs.
Classe de base des vecteurs 1D de données.
Span< const DataType > span() const
Vue immutable sur ce tableau.
void fill(ConstReferenceType value)
Remplit le tableau avec la valeur value.
Span< const DataType > 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.
eMemoryRessource
Liste des ressources mémoire disponibles.
@ UnifiedMemory
Alloue en utilisant la mémoire unifiée.