Classe de base d'un allocateur spécifique pour accélérateur. Plus de détails...
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 (bool default_use_memory_pool=false) |
| Initialisation pour la mémoire UVM. | |
| void | _doInitializeHostPinned (bool default_use_memory_pool=false) |
| Initialisation pour la mémoire HostPinned. | |
| void | _doInitializeDevice (bool default_use_memory_pool=false) |
| 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< IUnderlyingAllocator > | m_direct_sub_allocator |
| Arcane::impl::MemoryPool | m_memory_pool |
| IMemoryPoolAllocator * | m_sub_allocator = nullptr |
| bool | m_use_memory_pool = false |
| String | m_allocator_name |
| std::atomic< Int32 > | m_nb_reallocate = 0 |
| std::atomic< Int64 > | m_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 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. | |
Classe de base d'un allocateur spécifique pour accélérateur.
Définition à la ligne 132 du fichier AcceleratorMemoryAllocatorBase.h.
Définition à la ligne 138 du fichier AcceleratorMemoryAllocatorBase.h.
| using Arcane::Accelerator::AcceleratorMemoryAllocatorBase::IMemoryPoolAllocator = Arcane::impl::IMemoryPoolAllocator |
Définition à la ligne 137 du fichier AcceleratorMemoryAllocatorBase.h.
|
strong |
Liste des flags pour le pool mémoire à activer.
Définition à la ligne 143 du fichier AcceleratorMemoryAllocatorBase.h.
| Arcane::Accelerator::AcceleratorMemoryAllocatorBase::AcceleratorMemoryAllocatorBase | ( | const String & | allocator_name, |
| IUnderlyingAllocator * | underlying_allocator ) |
Définition à la ligne 46 du fichier AcceleratorMemoryAllocatorBase.cc.
|
inlineprotectedvirtual |
Définition à la ligne 206 du fichier AcceleratorMemoryAllocatorBase.h.
|
protected |
Initialisation pour la mémoire Device.
Définition à la ligne 146 du fichier AcceleratorMemoryAllocatorBase.cc.
|
protected |
Initialisation pour la mémoire HostPinned.
Définition à la ligne 135 du fichier AcceleratorMemoryAllocatorBase.cc.
|
protected |
Initialisation pour la mémoire UVM.
Définition à la ligne 119 du fichier AcceleratorMemoryAllocatorBase.cc.
Références Arcane::platform::getPageSize().
Voici le graphe d'appel pour cette fonction :
|
inlineprotectedvirtual |
Définition à la ligne 208 du fichier AcceleratorMemoryAllocatorBase.h.
|
inlineprotected |
Définition à la ligne 235 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 157 du fichier AcceleratorMemoryAllocatorBase.cc.
|
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 197 du fichier AcceleratorMemoryAllocatorBase.h.
Références Arcane::AlignedMemoryAllocator::adjustedCapacity().
Voici le graphe d'appel pour cette fonction :
|
inlinefinalvirtual |
Alloue de la mémoire pour new_size octets et retourne le pointeur.
La sémantique est équivalent à malloc():
Implémente Arcane::IMemoryAllocator.
Définition à la ligne 172 du fichier AcceleratorMemoryAllocatorBase.h.
Référencé par reallocate().
Voici le graphe des appelants de cette fonction :
|
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 184 du fichier AcceleratorMemoryAllocatorBase.h.
Référencé par reallocate().
Voici le graphe des appelants de cette fonction :| void Arcane::Accelerator::AcceleratorMemoryAllocatorBase::finalize | ( | ITraceMng * | tm | ) |
Définition à la ligne 61 du fichier AcceleratorMemoryAllocatorBase.cc.
|
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 171 du fichier AcceleratorMemoryAllocatorBase.h.
|
inlinefinalvirtual |
Ressource mémoire fournie par l'allocateur.
Réimplémentée à partir de Arcane::IMemoryAllocator.
Définition à la ligne 202 du fichier AcceleratorMemoryAllocatorBase.h.
|
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():
Implémente Arcane::IMemoryAllocator.
Définition à la ligne 85 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 :
|
private |
Définition à la ligne 218 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 222 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 214 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 215 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 219 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 221 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 220 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 216 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 213 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 217 du fichier AcceleratorMemoryAllocatorBase.h.