Allocateur mémoire avec alignement mémoire spécifique. Plus de détails...
#include <arccore/collections/IMemoryAllocator.h>
Fonctions membres publiques | |
bool | hasRealloc () const override |
void * | allocate (size_t new_size) override |
void * | reallocate (void *current_ptr, size_t new_size) override |
void | deallocate (void *ptr) override |
size_t | adjustCapacity (size_t wanted_capacity, size_t element_size) override |
size_t | guarantedAlignment () override |
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 Int64 | adjustedCapacity (MemoryAllocationArgs args, Int64 wanted_capacity, Int64 element_size) const |
Ajuste la capacité suivant la taille d'élément. | |
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 AlignedMemoryAllocator * | Simd () |
Allocateur garantissant l'alignement pour utiliser la vectorisation sur la plateforme cible. | |
static AlignedMemoryAllocator * | CacheLine () |
Allocateur garantissant l'alignement sur une ligne de cache. | |
Fonctions membres protégées | |
AlignedMemoryAllocator (Integer alignment) | |
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.
Cette classe est obsolète. Utiliser 'AlignedMemoryAllocator2' à la place
Définition à la ligne 336 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlineexplicitprotected |
Définition à la ligne 395 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
overridevirtual |
Implémente Arccore::IMemoryAllocator.
Définition à la ligne 348 du fichier MemoryAllocator.cc.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
virtual |
Alloue de la mémoire pour new_size octets et retourne le pointeur.
La sémantique est équivalent à malloc():
Réimplémentée à partir de Arccore::IMemoryAllocator.
Définition à la ligne 75 du fichier MemoryAllocator.cc.
|
overridevirtual |
Implémente Arccore::IMemoryAllocator.
Définition à la ligne 198 du fichier MemoryAllocator.cc.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
inlinestatic |
Allocateur garantissant l'alignement sur une ligne de cache.
Définition à la ligne 388 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlinestaticconstexpr |
Alignement pour une ligne de cache.
Définition à la ligne 371 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.
Réimplémentée à partir de Arccore::IMemoryAllocator.
Définition à la ligne 99 du fichier MemoryAllocator.cc.
|
overridevirtual |
Implémente Arccore::IMemoryAllocator.
Définition à la ligne 274 du fichier MemoryAllocator.cc.
|
virtual |
Implémente Arccore::IMemoryAllocator.
|
inlineoverridevirtual |
Implémente Arccore::IMemoryAllocator.
Définition à la ligne 406 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
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.
Réimplémentée à partir de Arccore::IMemoryAllocator.
Définition à la ligne 120 du fichier MemoryAllocator.cc.
|
overridevirtual |
NOTE: Normalement les fonctions _mm_alloc() et _mm_free() permettent d'allouer de la mémoire alignée. Il faudrait vérifier si elles sont disponibles partout.
Implémente Arccore::IMemoryAllocator.
Définition à la ligne 189 du fichier MemoryAllocator.cc.
|
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::IMemoryAllocator.
Définition à la ligne 65 du fichier MemoryAllocator.cc.
|
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():
Réimplémentée à partir de Arccore::IMemoryAllocator.
Définition à la ligne 88 du fichier MemoryAllocator.cc.
|
overridevirtual |
Implémente Arccore::IMemoryAllocator.
Définition à la ligne 240 du fichier MemoryAllocator.cc.
|
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 380 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.
|
inlinestaticconstexpr |
Alignement pour les structures utilisant la vectorisation.
Définition à la ligne 369 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.