Interface d'un allocateur pour la mémoire. Plus de détails...
Fonctions membres publiques | |
virtual | ~IMemoryAllocator ()=default |
Détruit l'allocateur. | |
virtual bool | hasRealloc (MemoryAllocationArgs) const |
Indique si l'allocateur supporte la sémantique de realloc. | |
virtual AllocatedMemoryInfo | allocate (MemoryAllocationArgs args, Int64 new_size)=0 |
Alloue de la mémoire pour new_size octets et retourne le pointeur. | |
virtual AllocatedMemoryInfo | reallocate (MemoryAllocationArgs args, AllocatedMemoryInfo current_ptr, Int64 new_size)=0 |
Réalloue de la mémoire pour new_size octets et retourne le pointeur. | |
virtual void | deallocate (MemoryAllocationArgs args, AllocatedMemoryInfo ptr)=0 |
Libère la mémoire dont l'adresse de base est ptr. | |
virtual Int64 | adjustedCapacity (MemoryAllocationArgs args, Int64 wanted_capacity, Int64 element_size) const =0 |
Ajuste la capacité suivant la taille d'élément. | |
virtual size_t | guaranteedAlignment (MemoryAllocationArgs args) const =0 |
Valeur de l'alignement garanti par l'allocateur. | |
virtual size_t | guarantedAlignment (MemoryAllocationArgs args) const |
Valeur de l'alignement garanti par l'allocateur. | |
virtual void | notifyMemoryArgsChanged (MemoryAllocationArgs old_args, MemoryAllocationArgs new_args, AllocatedMemoryInfo ptr) |
Notifie du changement des arguments spécifiques à l'instance. | |
virtual void | copyMemory (MemoryAllocationArgs args, AllocatedMemoryInfo destination, AllocatedMemoryInfo source) |
Copie la mémoire entre deux zones. | |
virtual eMemoryResource | memoryResource () const |
Ressource mémoire fournie par l'allocateur. | |
Interface d'un allocateur pour la mémoire.
Cette classe définit une interface pour l'allocation mémoire utilisée par les classes tableaux de Arccore (Array, UniqueArray).
Une instance de cette classe doit rester valide tant qu'il existe des tableaux l'utilisant. Comme l'allocateur est transféré lors des copies, il est préférable que les allocateurs soient des objets statiques qui dont la durée de vie est celle du programme.
Les allocateurs n'ont pas d'état modifiables spécifiques et doivent fonctionner en multi-threading.
Depuis la version 2.3 de Arccore, les méthodes sans MemoryAllocationArgs sont obsolètes.
Définition à la ligne 44 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
virtualdefault |
Détruit l'allocateur.
Les objets alloués par l'allocateur doivent tous avoir été désalloués.
|
pure virtual |
Ajuste la capacité suivant la taille d'élément.
Cette méthode est utilisée pour éventuellement modifié le nombre d'éléments alloués suivant leur taille. Cela permet par exemple pour les allocateurs alignés de garantir que le nombre d'éléments alloués est un multiple de cet alignement.
Implémenté dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arccore::AlignedMemoryAllocator, TesterMemoryAllocatorV3, et Arccore::DefaultMemoryAllocator.
|
pure virtual |
Alloue de la mémoire pour new_size octets et retourne le pointeur.
La sémantique est équivalent à malloc():
Implémenté dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::AlignedMemoryAllocator, Arccore::PrintableMemoryAllocator, TesterMemoryAllocatorV3, Arccore::PrintableMemoryAllocator, et Arccore::DefaultMemoryAllocator.
|
virtual |
Copie la mémoire entre deux zones.
L'implémentation par défaut utilise std::memcpy().
args | arguments de la zone mémoire |
destination | destination de la copie |
destination | source de la copie |
Définition à la ligne 66 du fichier MemoryAllocator.cc.
Références Arccore::AllocatedMemoryInfo::baseAddress().
|
pure virtual |
Libère la mémoire dont l'adresse de base est ptr.
Le pointeur ptr doit avoir été alloué via l'appel à allocate() ou reallocate() de cette instance.
La sémantique de cette méthode équivalente à free() et donc ptr peut être nul auquel cas aucune opération n'est effectuée.
Implémenté dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::AlignedMemoryAllocator, Arccore::PrintableMemoryAllocator, TesterMemoryAllocatorV3, Arccore::PrintableMemoryAllocator, et Arccore::DefaultMemoryAllocator.
|
virtual |
Valeur de l'alignement garanti par l'allocateur.
Définition à la ligne 49 du fichier MemoryAllocator.cc.
Références guaranteedAlignment().
|
pure virtual |
Valeur de l'alignement garanti par l'allocateur.
Cette méthode permet de s'assurer qu'un allocateur a un alignement suffisant pour certaines opérations comme la vectorisation par exemple.
S'il n'y a aucune garantie, retourne 0.
Implémenté dans TesterMemoryAllocatorV3, Arccore::DefaultMemoryAllocator, et Arccore::AlignedMemoryAllocator.
Référencé par guarantedAlignment().
|
inlinevirtual |
Indique si l'allocateur supporte la sémantique de realloc.
Les allocateurs par défaut du C (malloc/realloc/free) supportent évidemment le realloc mais ce n'est pas forcément le cas des allocateurs spécifiques avec alignement mémoire (comme par exemple posix_memalign).
Réimplémentée dans TesterMemoryAllocatorV3, Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::DefaultMemoryAllocator, et Arccore::AlignedMemoryAllocator.
Définition à la ligne 65 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlinevirtual |
Ressource mémoire fournie par l'allocateur.
Réimplémentée dans Arcane::Accelerator::Cuda::UnifiedMemoryCudaMemoryAllocator, Arcane::Accelerator::Cuda::HostPinnedCudaMemoryAllocator, Arcane::Accelerator::Cuda::DeviceCudaMemoryAllocator, Arcane::Accelerator::Hip::UnifiedMemoryHipMemoryAllocator, Arcane::Accelerator::Hip::HostPinnedHipMemoryAllocator, Arcane::Accelerator::Hip::DeviceHipMemoryAllocator, Arcane::Accelerator::Sycl::UnifiedMemorySyclMemoryAllocator, Arcane::Accelerator::Sycl::HostPinnedSyclMemoryAllocator, Arcane::Accelerator::Sycl::DeviceSyclMemoryAllocator, Arccore::DefaultMemoryAllocator, et Arccore::AlignedMemoryAllocator.
Définition à la ligne 151 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
virtual |
Notifie du changement des arguments spécifiques à l'instance.
ptr | zone mémoire allouée |
old_args | ancienne valeur des arguments |
new_args | nouvelle valeur des arguments |
Réimplémentée dans Arcane::Accelerator::Cuda::UnifiedMemoryCudaMemoryAllocator, et TesterMemoryAllocatorV3.
Définition à la ligne 58 du fichier MemoryAllocator.cc.
Référencé par TesterMemoryAllocatorV3::notifyMemoryArgsChanged().
|
pure virtual |
Réalloue de la mémoire pour new_size octets et retourne le pointeur.
Le pointeur current_ptr doit avoir été alloué via l'appel à allocate() ou reallocate() de cette instance.
La sémantique de cette méthode est équivalente à realloc():
Implémenté dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::AlignedMemoryAllocator, Arccore::PrintableMemoryAllocator, TesterMemoryAllocatorV3, Arccore::PrintableMemoryAllocator, et Arccore::DefaultMemoryAllocator.