Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Accelerator::AcceleratorMemoryAllocatorBase

Classe de base d'un allocateur spécifique pour accélérateur. Plus de détails...

#include <arcane/accelerator/core/internal/AcceleratorMemoryAllocatorBase.h>

+ Graphe d'héritage de Arcane::Accelerator::AcceleratorMemoryAllocatorBase:
+ Graphe de collaboration de Arcane::Accelerator::AcceleratorMemoryAllocatorBase:

Classes

class  IUnderlyingAllocator
 

Types publics

enum class  MemoryPoolFlags { UVM = 1 , Device = 2 , HostPinned = 4 }
 Liste des flags pour le pool mémoire à activer. Plus de détails...
 
using IMemoryPoolAllocator = Arcane::impl::IMemoryPoolAllocator
 
using BaseClass = AlignedMemoryAllocator
 

Fonctions membres publiques

 AcceleratorMemoryAllocatorBase (const String &allocator_name, IUnderlyingAllocator *underlying_allocator)
 
void finalize (ITraceMng *tm)
 
bool hasRealloc (MemoryAllocationArgs) const final
 Indique si l'allocateur supporte la sémantique de realloc.
 
AllocatedMemoryInfo allocate (MemoryAllocationArgs args, Int64 new_size) final
 Alloue de la mémoire pour new_size octets et retourne le pointeur.
 
AllocatedMemoryInfo reallocate (MemoryAllocationArgs args, AllocatedMemoryInfo current_info, Int64 new_size) final
 Réalloue de la mémoire pour new_size octets et retourne le pointeur.
 
void deallocate (MemoryAllocationArgs args, AllocatedMemoryInfo mem_info) final
 Libère la mémoire dont l'adresse de base est ptr.
 
Int64 adjustedCapacity (MemoryAllocationArgs args, Int64 wanted_capacity, Int64 element_size) const final
 Ajuste la capacité suivant la taille d'élément.
 
eMemoryResource memoryResource () const final
 Ressource mémoire fournie par l'allocateur.
 
- Fonctions membres publiques hérités de Arcane::AlignedMemoryAllocator
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 protégées

virtual void _applyHint (void *ptr, size_t new_size, MemoryAllocationArgs args)
 
virtual void _removeHint (void *ptr, size_t new_size, MemoryAllocationArgs args)
 
void _doInitializeUVM ()
 Initialisation pour la mémoire UVM.
 
void _doInitializeHostPinned ()
 Initialisation pour la mémoire HostPinned.
 
void _doInitializeDevice ()
 Initialisation pour la mémoire Device.
 
void _setTraceLevel (Int32 v)
 
- Fonctions membres protégées hérités de Arcane::AlignedMemoryAllocator
 AlignedMemoryAllocator (Int32 alignment)
 

Fonctions membres privées

void _setUseMemoryPool (bool is_used)
 

Attributs privés

impl::MemoryTracerWrapper m_tracer
 
std::unique_ptr< IUnderlyingAllocatorm_direct_sub_allocator
 
Arcane::impl::MemoryPool m_memory_pool
 
IMemoryPoolAllocatorm_sub_allocator = nullptr
 
bool m_use_memory_pool = false
 
String m_allocator_name
 
std::atomic< Int32m_nb_reallocate = 0
 
std::atomic< Int64m_reallocate_size = 0
 
Int32 m_print_level = 0
 
BlockAllocatorWrapper m_block_wrapper
 

Membres hérités additionnels

- Fonctions membres publiques statiques hérités de Arcane::AlignedMemoryAllocator
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.
 

Description détaillée

Classe de base d'un allocateur spécifique pour accélérateur.

Définition à la ligne 133 du fichier AcceleratorMemoryAllocatorBase.h.

Documentation des définitions de type membres

◆ BaseClass

◆ IMemoryPoolAllocator

Documentation des énumérations membres

◆ MemoryPoolFlags

Liste des flags pour le pool mémoire à activer.

Définition à la ligne 144 du fichier AcceleratorMemoryAllocatorBase.h.

Documentation des constructeurs et destructeur

◆ AcceleratorMemoryAllocatorBase()

Arcane::Accelerator::AcceleratorMemoryAllocatorBase::AcceleratorMemoryAllocatorBase ( const String & allocator_name,
IUnderlyingAllocator * underlying_allocator )

Définition à la ligne 47 du fichier AcceleratorMemoryAllocatorBase.cc.

Documentation des fonctions membres

◆ _applyHint()

virtual void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_applyHint ( void * ptr,
size_t new_size,
MemoryAllocationArgs args )
inlineprotectedvirtual

Définition à la ligne 207 du fichier AcceleratorMemoryAllocatorBase.h.

◆ _doInitializeDevice()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_doInitializeDevice ( )
protected

Initialisation pour la mémoire Device.

Définition à la ligne 147 du fichier AcceleratorMemoryAllocatorBase.cc.

◆ _doInitializeHostPinned()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_doInitializeHostPinned ( )
protected

Initialisation pour la mémoire HostPinned.

Définition à la ligne 136 du fichier AcceleratorMemoryAllocatorBase.cc.

◆ _doInitializeUVM()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_doInitializeUVM ( )
protected

Initialisation pour la mémoire UVM.

Définition à la ligne 120 du fichier AcceleratorMemoryAllocatorBase.cc.

Références Arcane::platform::getPageSize().

+ Voici le graphe d'appel pour cette fonction :

◆ _removeHint()

virtual void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_removeHint ( void * ptr,
size_t new_size,
MemoryAllocationArgs args )
inlineprotectedvirtual

Définition à la ligne 209 du fichier AcceleratorMemoryAllocatorBase.h.

◆ _setTraceLevel()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_setTraceLevel ( Int32 v)
inlineprotected

Définition à la ligne 236 du fichier AcceleratorMemoryAllocatorBase.h.

◆ _setUseMemoryPool()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::_setUseMemoryPool ( bool is_used)
private

Définition à la ligne 158 du fichier AcceleratorMemoryAllocatorBase.cc.

◆ adjustedCapacity()

Int64 Arcane::Accelerator::AcceleratorMemoryAllocatorBase::adjustedCapacity ( MemoryAllocationArgs args,
Int64 wanted_capacity,
Int64 element_size ) const
inlinefinalvirtual

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 198 du fichier AcceleratorMemoryAllocatorBase.h.

Références Arcane::AlignedMemoryAllocator::adjustedCapacity().

+ Voici le graphe d'appel pour cette fonction :

◆ allocate()

AllocatedMemoryInfo Arcane::Accelerator::AcceleratorMemoryAllocatorBase::allocate ( MemoryAllocationArgs args,
Int64 new_size )
inlinefinalvirtual

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 spécifique
  • 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 173 du fichier AcceleratorMemoryAllocatorBase.h.

Références ARCANE_FATAL.

Référencé par reallocate().

+ Voici le graphe des appelants de cette fonction :

◆ deallocate()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::deallocate ( MemoryAllocationArgs args,
AllocatedMemoryInfo ptr )
inlinefinalvirtual

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 185 du fichier AcceleratorMemoryAllocatorBase.h.

Référencé par reallocate().

+ Voici le graphe des appelants de cette fonction :

◆ finalize()

void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::finalize ( ITraceMng * tm)

Définition à la ligne 62 du fichier AcceleratorMemoryAllocatorBase.cc.

◆ hasRealloc()

bool Arcane::Accelerator::AcceleratorMemoryAllocatorBase::hasRealloc ( MemoryAllocationArgs ) const
inlinefinalvirtual

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 172 du fichier AcceleratorMemoryAllocatorBase.h.

◆ memoryResource()

eMemoryResource Arcane::Accelerator::AcceleratorMemoryAllocatorBase::memoryResource ( ) const
inlinefinalvirtual

Ressource mémoire fournie par l'allocateur.

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

Définition à la ligne 203 du fichier AcceleratorMemoryAllocatorBase.h.

◆ reallocate()

AllocatedMemoryInfo Arcane::Accelerator::AcceleratorMemoryAllocatorBase::reallocate ( MemoryAllocationArgs args,
AllocatedMemoryInfo current_ptr,
Int64 new_size )
finalvirtual

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 86 du fichier AcceleratorMemoryAllocatorBase.cc.

Références allocate(), Arcane::AllocatedMemoryInfo::baseAddress(), Arcane::AllocatedMemoryInfo::capacity(), deallocate(), Arcane::platform::getStackTrace(), Arcane::String::null(), et Arcane::AllocatedMemoryInfo::size().

+ Voici le graphe d'appel pour cette fonction :

Documentation des données membres

◆ m_allocator_name

String Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_allocator_name
private

Définition à la ligne 219 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_block_wrapper

BlockAllocatorWrapper Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_block_wrapper
private

Définition à la ligne 223 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_direct_sub_allocator

std::unique_ptr<IUnderlyingAllocator> Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_direct_sub_allocator
private

Définition à la ligne 215 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_memory_pool

Arcane::impl::MemoryPool Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_memory_pool
private

Définition à la ligne 216 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_nb_reallocate

std::atomic<Int32> Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_nb_reallocate = 0
private

Définition à la ligne 220 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_print_level

Int32 Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_print_level = 0
private

Définition à la ligne 222 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_reallocate_size

std::atomic<Int64> Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_reallocate_size = 0
private

Définition à la ligne 221 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_sub_allocator

IMemoryPoolAllocator* Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_sub_allocator = nullptr
private

Définition à la ligne 217 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_tracer

impl::MemoryTracerWrapper Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_tracer
private

Définition à la ligne 214 du fichier AcceleratorMemoryAllocatorBase.h.

◆ m_use_memory_pool

bool Arcane::Accelerator::AcceleratorMemoryAllocatorBase::m_use_memory_pool = false
private

Définition à la ligne 218 du fichier AcceleratorMemoryAllocatorBase.h.


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