Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::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 Arcane::AlignedMemoryAllocator:
+ Graphe de collaboration de Arcane::AlignedMemoryAllocator:

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
 
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 guaranteedAlignment (MemoryAllocationArgs) const override
 Valeur de l'alignement garanti par l'allocateur.
 
eMemoryResource memoryResource () const override
 Ressource mémoire fournie par l'allocateur.
 
- Fonctions membres publiques hérités de Arcane::IMemoryAllocator
virtual ~IMemoryAllocator ()=default
 Détruit 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.
 

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 (Int32 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.

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

Documentation des constructeurs et destructeur

◆ AlignedMemoryAllocator()

Arcane::AlignedMemoryAllocator::AlignedMemoryAllocator ( Int32 alignment)
inlineexplicitprotected

Documentation des fonctions membres

◆ adjustedCapacity()

Int64 Arcane::AlignedMemoryAllocator3::adjustedCapacity ( MemoryAllocationArgs args,
Int64 wanted_capacity,
Int64 element_size ) const
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 Arcane::IMemoryAllocator.

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

◆ allocate()

AllocatedMemoryInfo Arcane::AlignedMemoryAllocator3::allocate ( MemoryAllocationArgs args,
Int64 new_size )
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 Arcane::IMemoryAllocator.

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

◆ CacheLine()

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

Allocateur garantissant l'alignement sur une ligne de cache.

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

◆ cacheLineAlignment()

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

Alignement pour une ligne de cache.

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

◆ deallocate()

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

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

Références Arcane::AllocatedMemoryInfo::baseAddress().

+ Voici le graphe d'appel pour cette fonction :

◆ guaranteedAlignment()

size_t Arcane::AlignedMemoryAllocator::guaranteedAlignment ( MemoryAllocationArgs args) const
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 Arcane::IMemoryAllocator.

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

◆ hasRealloc()

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

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

◆ memoryResource()

◆ reallocate()

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

  • 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.

Implémente Arcane::IMemoryAllocator.

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

Références Arcane::AllocatedMemoryInfo::baseAddress().

+ Voici le graphe d'appel pour cette fonction :

◆ Simd()

static AlignedMemoryAllocator * Arcane::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 243 du fichier arccore/src/collections/arccore/collections/IMemoryAllocator.h.

◆ simdAlignment()

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

Alignement pour les structures utilisant la vectorisation.

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

Documentation des données membres

◆ CacheLineAllocator

AlignedMemoryAllocator Arcane::AlignedMemoryAllocator::CacheLineAllocator
staticprivate

◆ m_alignment

size_t Arcane::AlignedMemoryAllocator::m_alignment
private

◆ SimdAllocator

AlignedMemoryAllocator Arcane::AlignedMemoryAllocator::SimdAllocator
staticprivate

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