Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arccore::AlignedMemoryAllocator

Allocateur mémoire avec alignement mémoire spécifique. Plus de détails...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/collections/arccore/collections/IMemoryAllocator.h>

+ Graphe d'héritage de Arccore::AlignedMemoryAllocator:
+ Graphe de collaboration de Arccore::AlignedMemoryAllocator:

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 AlignedMemoryAllocatorSimd ()
 Allocateur garantissant l'alignement pour utiliser la vectorisation sur la plateforme cible.
 
static AlignedMemoryAllocatorCacheLine ()
 Allocateur garantissant l'alignement sur une ligne de cache.
 

Fonctions membres protégées

 AlignedMemoryAllocator (Integer alignment)
 

Attributs privés

size_t m_alignment
 

Attributs privés statiques

static AlignedMemoryAllocator SimdAllocator
 
static AlignedMemoryAllocator CacheLineAllocator
 

Description détaillée

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.

Documentation des constructeurs et destructeur

◆ AlignedMemoryAllocator()

Arccore::AlignedMemoryAllocator::AlignedMemoryAllocator ( Integer  alignment)
inlineexplicitprotected

Documentation des fonctions membres

◆ adjustCapacity() [1/2]

size_t Arccore::AlignedMemoryAllocator::adjustCapacity ( size_t  wanted_capacity,
size_t  element_size 
)
overridevirtual

Implémente Arccore::IMemoryAllocator.

Définition à la ligne 348 du fichier MemoryAllocator.cc.

◆ adjustCapacity() [2/2]

virtual size_t Arccore::IMemoryAllocator::adjustCapacity ( size_t  wanted_capacity,
size_t  element_size 
)
virtual

◆ allocate() [1/3]

AllocatedMemoryInfo Arccore::IMemoryAllocator::allocate ( MemoryAllocationArgs  args,
Int64  new_size 
)
virtual

Alloue de la mémoire pour new_size octets et retourne le pointeur.

La sémantique est équivalent à malloc():

  • new_size peut valoir zéro et dans ce cas le pointeur retourné est soit nul, soit une valeur non spécifiée.
  • le pointeur retourné peut être nul si la mémoire n'a pas pu être allouée.

Réimplémentée à partir de Arccore::IMemoryAllocator.

Définition à la ligne 75 du fichier MemoryAllocator.cc.

◆ allocate() [2/3]

void * Arccore::AlignedMemoryAllocator::allocate ( size_t  new_size)
overridevirtual

Implémente Arccore::IMemoryAllocator.

Définition à la ligne 198 du fichier MemoryAllocator.cc.

◆ allocate() [3/3]

virtual void * Arccore::IMemoryAllocator::allocate ( size_t  new_size)
virtual

◆ CacheLine()

static AlignedMemoryAllocator * Arccore::AlignedMemoryAllocator::CacheLine ( )
inlinestatic

Allocateur garantissant l'alignement sur une ligne de cache.

Définition à la ligne 388 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.

◆ cacheLineAlignment()

static constexpr Integer Arccore::AlignedMemoryAllocator::cacheLineAlignment ( )
inlinestaticconstexpr

Alignement pour une ligne de cache.

Définition à la ligne 371 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.

◆ deallocate() [1/3]

void Arccore::IMemoryAllocator::deallocate ( MemoryAllocationArgs  args,
AllocatedMemoryInfo  ptr 
)
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.

◆ deallocate() [2/3]

void Arccore::AlignedMemoryAllocator::deallocate ( void *  ptr)
overridevirtual

Implémente Arccore::IMemoryAllocator.

Définition à la ligne 274 du fichier MemoryAllocator.cc.

◆ deallocate() [3/3]

virtual void Arccore::IMemoryAllocator::deallocate ( void *  ptr)
virtual

◆ guarantedAlignment() [1/3]

size_t Arccore::AlignedMemoryAllocator::guarantedAlignment ( )
inlineoverridevirtual

◆ guarantedAlignment() [2/3]

virtual size_t Arccore::IMemoryAllocator::guarantedAlignment ( )
virtual

◆ guarantedAlignment() [3/3]

size_t Arccore::IMemoryAllocator::guarantedAlignment ( MemoryAllocationArgs  args) const
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.

◆ hasRealloc() [1/3]

bool Arccore::AlignedMemoryAllocator::hasRealloc ( ) const
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.

◆ hasRealloc() [2/3]

virtual bool Arccore::IMemoryAllocator::hasRealloc ( ) const
virtual

◆ hasRealloc() [3/3]

bool Arccore::IMemoryAllocator::hasRealloc ( MemoryAllocationArgs  args) const
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.

◆ reallocate() [1/3]

AllocatedMemoryInfo Arccore::IMemoryAllocator::reallocate ( MemoryAllocationArgs  args,
AllocatedMemoryInfo  current_ptr,
Int64  new_size 
)
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():

  • current_ptr peut-être nul auquel cas cet appel est équivalent à allocate().
  • le pointeur retourné peut être nul si la mémoire n'a pas pu être allouée.

Réimplémentée à partir de Arccore::IMemoryAllocator.

Définition à la ligne 88 du fichier MemoryAllocator.cc.

◆ reallocate() [2/3]

void * Arccore::AlignedMemoryAllocator::reallocate ( void *  current_ptr,
size_t  new_size 
)
overridevirtual

Implémente Arccore::IMemoryAllocator.

Définition à la ligne 240 du fichier MemoryAllocator.cc.

◆ reallocate() [3/3]

virtual void * Arccore::IMemoryAllocator::reallocate ( void *  current_ptr,
size_t  new_size 
)
virtual

◆ Simd()

static AlignedMemoryAllocator * Arccore::AlignedMemoryAllocator::Simd ( )
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.

◆ simdAlignment()

static constexpr Integer Arccore::AlignedMemoryAllocator::simdAlignment ( )
inlinestaticconstexpr

Alignement pour les structures utilisant la vectorisation.

Définition à la ligne 369 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.

Documentation des données membres

◆ CacheLineAllocator

AlignedMemoryAllocator Arccore::AlignedMemoryAllocator::CacheLineAllocator
staticprivate

◆ m_alignment

size_t Arccore::AlignedMemoryAllocator::m_alignment
private

◆ SimdAllocator

AlignedMemoryAllocator Arccore::AlignedMemoryAllocator::SimdAllocator
staticprivate

La documentation de cette classe a été générée à partir des fichiers suivants :