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< 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 133 du fichier AcceleratorMemoryAllocatorBase.h.
Définition à la ligne 139 du fichier AcceleratorMemoryAllocatorBase.h.
| using Arcane::Accelerator::AcceleratorMemoryAllocatorBase::IMemoryPoolAllocator = Arcane::impl::IMemoryPoolAllocator |
Définition à la ligne 138 du fichier AcceleratorMemoryAllocatorBase.h.
|
strong |
Liste des flags pour le pool mémoire à activer.
Définition à la ligne 144 du fichier AcceleratorMemoryAllocatorBase.h.
| Arcane::Accelerator::AcceleratorMemoryAllocatorBase::AcceleratorMemoryAllocatorBase | ( | const String & | allocator_name, |
| IUnderlyingAllocator * | underlying_allocator ) |
Définition à la ligne 47 du fichier AcceleratorMemoryAllocatorBase.cc.
|
inlineprotectedvirtual |
Définition à la ligne 207 du fichier AcceleratorMemoryAllocatorBase.h.
|
protected |
Initialisation pour la mémoire Device.
Définition à la ligne 147 du fichier AcceleratorMemoryAllocatorBase.cc.
|
protected |
Initialisation pour la mémoire HostPinned.
Définition à la ligne 136 du fichier AcceleratorMemoryAllocatorBase.cc.
|
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 :
|
inlineprotectedvirtual |
Définition à la ligne 209 du fichier AcceleratorMemoryAllocatorBase.h.
|
inlineprotected |
Définition à la ligne 236 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 158 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 198 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 173 du fichier AcceleratorMemoryAllocatorBase.h.
Références ARCANE_FATAL.
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 185 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 62 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 172 du fichier AcceleratorMemoryAllocatorBase.h.
|
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.
|
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 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 :
|
private |
Définition à la ligne 219 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 223 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 215 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 216 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 220 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 222 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 221 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 217 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 214 du fichier AcceleratorMemoryAllocatorBase.h.
|
private |
Définition à la ligne 218 du fichier AcceleratorMemoryAllocatorBase.h.