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

Interface d'un allocateur pour la mémoire. 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::IMemoryAllocator:
+ Graphe de collaboration de Arccore::IMemoryAllocator:

Fonctions membres publiques

virtual ~IMemoryAllocator ()=default
 Détruit l'allocateur.
 
virtual bool hasRealloc (MemoryAllocationArgs args) const
 Indique si l'allocateur supporte la sémantique de realloc.
 
virtual AllocatedMemoryInfo allocate (MemoryAllocationArgs args, Int64 new_size)
 Alloue de la mémoire pour new_size octets et retourne le pointeur.
 
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 deallocate (MemoryAllocationArgs args, AllocatedMemoryInfo ptr)
 Libère la mémoire dont l'adresse de base est ptr.
 
virtual Int64 adjustedCapacity (MemoryAllocationArgs args, Int64 wanted_capacity, Int64 element_size) const
 Ajuste la capacité suivant la taille d'élément.
 
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 bool hasRealloc () const =0
 
virtual void * allocate (size_t new_size)=0
 
virtual void * reallocate (void *current_ptr, size_t new_size)=0
 
virtual void deallocate (void *ptr)=0
 
virtual size_t adjustCapacity (size_t wanted_capacity, size_t element_size)=0
 
virtual size_t guarantedAlignment ()=0
 

Description détaillée

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.

Documentation des constructeurs et destructeur

◆ ~IMemoryAllocator()

virtual Arccore::IMemoryAllocator::~IMemoryAllocator ( )
virtualdefault

Détruit l'allocateur.

Les objets alloués par l'allocateur doivent tous avoir été désalloués.

Documentation des fonctions membres

◆ adjustedCapacity()

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

Réimplémentée dans Arccore::IMemoryAllocator3, Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arccore::AlignedMemoryAllocator3, TesterMemoryAllocatorV3, et Arccore::DefaultMemoryAllocator3.

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

◆ allocate()

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 dans Arccore::DefaultMemoryAllocator, Arccore::DefaultMemoryAllocator3, Arccore::AlignedMemoryAllocator, Arccore::AlignedMemoryAllocator3, Arccore::PrintableMemoryAllocator, Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::AlignedMemoryAllocator3, TesterMemoryAllocatorV3, Arccore::IMemoryAllocator3, et Arccore::DefaultMemoryAllocator3.

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

Références allocate().

Référencé par allocate().

◆ copyMemory()

void Arccore::IMemoryAllocator::copyMemory ( MemoryAllocationArgs  args,
AllocatedMemoryInfo  destination,
AllocatedMemoryInfo  source 
)
virtual

Copie la mémoire entre deux zones.

L'implémentation par défaut utilise std::memcpy().

Paramètres
argsarguments de la zone mémoire
destinationdestination de la copie
destinationsource de la copie

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

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

◆ deallocate()

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 dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arccore::DefaultMemoryAllocator, Arccore::DefaultMemoryAllocator3, Arccore::AlignedMemoryAllocator, Arccore::AlignedMemoryAllocator3, Arccore::PrintableMemoryAllocator, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::AlignedMemoryAllocator3, TesterMemoryAllocatorV3, Arccore::IMemoryAllocator3, et Arccore::DefaultMemoryAllocator3.

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

Références Arccore::AllocatedMemoryInfo::baseAddress(), et deallocate().

Référencé par deallocate().

◆ guarantedAlignment()

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 dans Arccore::DefaultMemoryAllocator, Arccore::DefaultMemoryAllocator3, Arccore::AlignedMemoryAllocator, Arccore::AlignedMemoryAllocator3, Arccore::IMemoryAllocator3, TesterMemoryAllocatorV3, Arccore::DefaultMemoryAllocator3, et Arccore::AlignedMemoryAllocator3.

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

Références guarantedAlignment().

Référencé par guarantedAlignment().

◆ hasRealloc() [1/2]

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

Implémenté dans Arccore::AlignedMemoryAllocator.

◆ hasRealloc() [2/2]

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 dans Arccore::DefaultMemoryAllocator, Arccore::DefaultMemoryAllocator3, Arccore::AlignedMemoryAllocator, Arccore::AlignedMemoryAllocator3, TesterMemoryAllocatorV3, Arccore::IMemoryAllocator3, Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::DefaultMemoryAllocator3, et Arccore::AlignedMemoryAllocator3.

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

Références hasRealloc().

Référencé par hasRealloc().

◆ notifyMemoryArgsChanged()

void Arccore::IMemoryAllocator::notifyMemoryArgsChanged ( MemoryAllocationArgs  old_args,
MemoryAllocationArgs  new_args,
AllocatedMemoryInfo  ptr 
)
virtual

Notifie du changement des arguments spécifiques à l'instance.

Paramètres
ptrzone mémoire allouée
old_argsancienne valeur des arguments
new_argsnouvelle valeur des arguments

Réimplémentée dans Arcane::Accelerator::Cuda::UnifiedMemoryCudaMemoryAllocator, et TesterMemoryAllocatorV3.

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

Référencé par TesterMemoryAllocatorV3::notifyMemoryArgsChanged().

◆ reallocate()

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 dans Arcane::Accelerator::Cuda::CudaMemoryAllocatorBase, Arccore::DefaultMemoryAllocator, Arccore::DefaultMemoryAllocator3, Arccore::AlignedMemoryAllocator, Arccore::AlignedMemoryAllocator3, Arccore::PrintableMemoryAllocator, Arcane::Accelerator::Hip::HipMemoryAllocatorBase, Arcane::Accelerator::Sycl::SyclMemoryAllocatorBase, Arccore::AlignedMemoryAllocator3, TesterMemoryAllocatorV3, Arccore::IMemoryAllocator3, et Arccore::DefaultMemoryAllocator3.

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

Références Arccore::AllocatedMemoryInfo::baseAddress(), et reallocate().

Référencé par reallocate().


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