Allocateur mémoire avec alignement mémoire spécifique. Plus de détails...
Fonctions membres publiques | |
bool | hasRealloc (MemoryAllocationArgs) const override |
Indique si l'allocateur supporte la sémantique de realloc. | |
AllocatedMemoryInfo | allocate (MemoryAllocationArgs args, Int64 new_size) override |
Alloue de la mémoire pour new_size octets et retourne le pointeur. | |
AllocatedMemoryInfo | reallocate (MemoryAllocationArgs args, AllocatedMemoryInfo current_ptr, Int64 new_size) override |
Réalloue de la mémoire pour new_size octets et retourne le pointeur. | |
void | deallocate (MemoryAllocationArgs args, AllocatedMemoryInfo ptr) override |
Libère la mémoire dont l'adresse de base est ptr. | |
Int64 | adjustedCapacity (MemoryAllocationArgs args, Int64 wanted_capacity, Int64 element_size) const override |
Ajuste la capacité suivant la taille d'élément. | |
size_t | guarantedAlignment (MemoryAllocationArgs) const override |
Valeur de l'alignement garanti par l'allocateur. | |
virtual size_t | adjustCapacity (size_t wanted_capacity, size_t element_size)=0 |
virtual AllocatedMemoryInfo | allocate (MemoryAllocationArgs args, Int64 new_size) |
Alloue de la mémoire pour new_size octets et retourne le pointeur. | |
virtual void * | allocate (size_t new_size)=0 |
virtual void | deallocate (MemoryAllocationArgs args, AllocatedMemoryInfo ptr) |
Libère la mémoire dont l'adresse de base est ptr. | |
virtual void | deallocate (void *ptr)=0 |
virtual size_t | guarantedAlignment (MemoryAllocationArgs args) const |
Valeur de l'alignement garanti par l'allocateur. | |
virtual size_t | guarantedAlignment ()=0 |
virtual bool | hasRealloc (MemoryAllocationArgs args) const |
Indique si l'allocateur supporte la sémantique de realloc. | |
virtual bool | hasRealloc () const=0 |
virtual AllocatedMemoryInfo | reallocate (MemoryAllocationArgs args, AllocatedMemoryInfo current_ptr, Int64 new_size) |
Réalloue de la mémoire pour new_size octets et retourne le pointeur. | |
virtual void * | reallocate (void *current_ptr, size_t new_size)=0 |
Fonctions membres publiques hérités de Arccore::IMemoryAllocator | |
virtual | ~IMemoryAllocator ()=default |
Détruit 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. | |
Fonctions membres publiques statiques | |
static constexpr Integer | simdAlignment () |
Alignement pour les structures utilisant la vectorisation. | |
static constexpr Integer | cacheLineAlignment () |
Alignement pour une ligne de cache. | |
static AlignedMemoryAllocator3 * | Simd () |
Allocateur garantissant l'alignement pour utiliser la vectorisation sur la plateforme cible. | |
static AlignedMemoryAllocator3 * | CacheLine () |
Allocateur garantissant l'alignement sur une ligne de cache. | |
Fonctions membres protégées | |
AlignedMemoryAllocator3 (Integer alignment) | |
Attributs privés | |
size_t | m_alignment |
Attributs privés statiques | |
static AlignedMemoryAllocator3 | SimdAllocator |
static AlignedMemoryAllocator3 | CacheLineAllocator |
Allocateur mémoire avec alignement mémoire spécifique.
Cette classe s'utilise via les deux méthodes publiques Simd() et CacheLine() qui retournent respectivement un allocateur avec un alignement adéquat pour autoriser la vectorisation et un allocateur aligné sur une ligne de cache.
Définition à la ligne 423 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlineexplicitprotected |
Définition à la ligne 482 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
overridevirtual |
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émente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase.
Définition à la ligne 357 du fichier MemoryAllocator.cc.
Référencé par Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase::adjustedCapacity().
|
virtual |
Alloue de la mémoire pour new_size octets et retourne le pointeur.
La sémantique est équivalent à malloc():
Implémente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 75 du fichier MemoryAllocator.cc.
|
overridevirtual |
Alloue de la mémoire pour new_size octets et retourne le pointeur.
La sémantique est équivalent à malloc():
Implémente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 219 du fichier MemoryAllocator.cc.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
inlinestatic |
Allocateur garantissant l'alignement sur une ligne de cache.
Définition à la ligne 475 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlinestaticconstexpr |
Alignement pour une ligne de cache.
Définition à la ligne 458 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
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émente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 99 du fichier MemoryAllocator.cc.
|
overridevirtual |
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émente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 289 du fichier MemoryAllocator.cc.
Références Arccore::AllocatedMemoryInfo::baseAddress().
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
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émente Arccore::IMemoryAllocator3.
Définition à la ligne 120 du fichier MemoryAllocator.cc.
|
inlineoverridevirtual |
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émente Arccore::IMemoryAllocator3.
Définition à la ligne 493 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
virtual |
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 à partir de Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 65 du fichier MemoryAllocator.cc.
|
inlineoverridevirtual |
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 à partir de Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 488 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
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émente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 88 du fichier MemoryAllocator.cc.
|
overridevirtual |
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émente Arccore::IMemoryAllocator3.
Réimplémentée dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, et Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase.
Définition à la ligne 257 du fichier MemoryAllocator.cc.
Références Arccore::AllocatedMemoryInfo::baseAddress().
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
inlinestatic |
Allocateur garantissant l'alignement pour utiliser la vectorisation sur la plateforme cible.
Il s'agit de l'alignement pour le type plus restrictif et donc il est possible d'utiliser cet allocateur pour toutes les structures vectorielles.
Définition à la ligne 467 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlinestaticconstexpr |
Alignement pour les structures utilisant la vectorisation.
Définition à la ligne 456 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
staticprivate |
Définition à la ligne 438 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
private |
Définition à la ligne 497 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
staticprivate |
Définition à la ligne 437 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.