12#ifndef ARCANE_UTILS_MEMORYUTILS_H
13#define ARCANE_UTILS_MEMORYUTILS_H
17#include "arcane/utils/MemoryRessource.h"
18#include "arcane/utils/MemoryView.h"
20#include "arccore/collections/MemoryAllocationArgs.h"
72extern "C++" ARCANE_UTILS_EXPORT IMemoryAllocator*
84extern "C++" ARCANE_UTILS_EXPORT MemoryAllocationOptions
97extern "C++" ARCANE_UTILS_EXPORT IMemoryAllocator*
108extern "C++" ARCANE_UTILS_EXPORT MemoryAllocationOptions
118extern "C++" ARCANE_DEPRECATED_REASON(
"Y2024: Use getDefaultDataAllocator() instead.")
119ARCANE_UTILS_EXPORT IMemoryAllocator*
135extern
"C++" ARCANE_UTILS_EXPORT MemoryAllocationOptions
145extern
"C++" ARCANE_UTILS_EXPORT IMemoryAllocator*
154 extern "C++" ARCANE_UTILS_EXPORT
Int64
155 computeCapacity(
Int64 size);
173template <
typename DataType>
inline Int32
178 if (new_size > s || force_resize) {
196template <
typename DataType>
inline Int32
211extern "C++" ARCANE_UTILS_EXPORT
void
224 copy(destination, mem_type, source, mem_type, queue);
231template <
typename DataType>
inline void
237 copy(output, input, queue);
244template <
typename DataType>
inline void
270extern "C++" ARCANE_UTILS_EXPORT
void
293extern "C++" ARCANE_UTILS_EXPORT
void
307extern "C++" ARCANE_UTILS_EXPORT
void
326extern "C++" ARCANE_UTILS_EXPORT
void
351extern "C++" ARCANE_UTILS_EXPORT
void
377extern "C++" ARCANE_UTILS_EXPORT
void
402extern "C++" ARCANE_UTILS_EXPORT
void
404 const RunQueue* run_queue =
nullptr);
430extern "C++" ARCANE_UTILS_EXPORT
void
458extern "C++" ARCANE_UTILS_EXPORT
void
487extern "C++" ARCANE_UTILS_EXPORT
void
513extern "C++" ARCANE_UTILS_EXPORT
void
Int64 computeCapacity(Int64 size)
Calcule une capacité adaptée pour une taille de size.
Integer capacity() const
Capacité (nombre d'éléments alloués) du vecteur.
Int64 largeSize() const
Nombre d'éléments du vecteur (en 64 bits)
File d'exécution pour un accélérateur.
Tableau d'items de types quelconques.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
void reserve(Int64 new_capacity)
Réserve le mémoire pour new_capacity éléments.
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Liste de vues constantes sur des zones mémoires contigues.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
Liste de vues modifiables sur des zones mémoires contigues.
Vue d'un tableau d'éléments de type T.
Vue d'un tableau d'éléments de type T.
Espace de noms pour les fonctions de gestion mémoire et des allocateurs.
void fill(MutableMemoryView destination, ConstMemoryView source, const RunQueue *run_queue=nullptr)
Remplit une zone mémoire avec une valeur.
IMemoryAllocator * getDeviceOrHostAllocator()
Retourne l'allocateur sur l'hôte ou sur le device.
void copyWithIndexedDestination(MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr)
Copie mémoire avec indirection.
MemoryAllocationOptions getAllocatorForMostlyReadOnlyData()
Allocateur par défaut pour les données essentiellement en lecture.
MemoryAllocationOptions getAllocationOptions(eMemoryResource mem_resource)
Allocation par défaut pour la ressource mem_resource.
IMemoryAllocator * getDefaultDataAllocator()
Allocateur par défaut pour les données.
void copyHostWithIndexedSource(MutableMemoryView destination, ConstMemoryView source, Span< const Int32 > indexes)
Copie sur l'hôte des données avec indirection.
eMemoryResource getMemoryResourceFromName(const String &name)
Retourne la ressource mémoire par son nom.
void fillIndexed(MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, const RunQueue *run_queue=nullptr)
Remplit une zone mémoire indexée avec une valeur.
Int32 checkResizeArrayWithCapacity(Array< DataType > &array, Int64 new_size, bool force_resize)
Redimensionne un tableau en ajoutant une réserve de mémoire.
void copyHostWithIndexedDestination(MutableMemoryView destination, ConstMemoryView source, Span< const Int32 > indexes)
Copie dans l'instance les données indexées de v.
void copyHost(MutableMemoryView destination, ConstMemoryView source)
Copie dans destination les données de source.
IMemoryAllocator * getAcceleratorHostMemoryAllocator()
Allocateur spécifique pour les accélérateurs.
IMemoryAllocator * getAllocator(eMemoryResource mem_resource)
Allocateur par défaut pour la ressource mem_resource.
eMemoryResource getDefaultDataMemoryResource()
Ressource mémoire utilisée par l'allocateur par défaut pour les données.
void copy(MutableMemoryView destination, eMemoryResource destination_mem, ConstMemoryView source, eMemoryResource source_mem, const RunQueue *queue=nullptr)
Copie de source vers destination en utilisant la file queue.
void copyWithIndexedSource(MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr)
Copie sur l'hôte des données avec indirection.
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.
eMemoryLocationHint
Indices sur la localisation mémoire attendue.
impl::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets non modifiables.
eMemoryResource
Liste des ressources mémoire disponibles.
@ Unknown
Valeur inconnue ou non initialisée.
std::int32_t Int32
Type entier signé sur 32 bits.