Espace de noms pour les fonctions de gestion mémoire et des allocateurs. Plus de détails...
Fonctions | |
| template<typename DataType> | |
| Int32 | checkResizeArrayWithCapacity (Array< DataType > &array, Int64 new_size, bool force_resize) |
| Redimensionne un tableau en ajoutant une réserve de mémoire. | |
| template<typename DataType> | |
| Int32 | checkResizeArrayWithCapacity (Array< DataType > &array, Int64 new_size) |
| Redimensionne un tableau en ajoutant une réserve de mémoire. | |
| ARCCORE_COMMON_EXPORT IMemoryAllocator * | getAcceleratorHostMemoryAllocator () |
| Allocateur spécifique pour les accélérateurs. | |
| ARCCORE_COMMON_EXPORT eMemoryResource | getDefaultDataMemoryResource () |
| Ressource mémoire utilisée par l'allocateur par défaut pour les données. | |
| ARCCORE_COMMON_EXPORT eMemoryResource | getMemoryResourceFromName (const String &name) |
| Retourne la ressource mémoire par son nom. | |
| ARCCORE_COMMON_EXPORT IMemoryAllocator * | getDefaultDataAllocator () |
| Allocateur par défaut pour les données. | |
| ARCCORE_COMMON_EXPORT MemoryAllocationOptions | getDefaultDataAllocator (eMemoryLocationHint hint) |
| Allocateur par défaut pour les données avec informations sur la localisation attendue. | |
| ARCCORE_COMMON_EXPORT IMemoryAllocator * | getDeviceOrHostAllocator () |
| Retourne l'allocateur sur l'hôte ou sur le device. | |
| ARCCORE_COMMON_EXPORT MemoryAllocationOptions | getAllocatorForMostlyReadOnlyData () |
| Allocateur par défaut pour les données essentiellement en lecture. | |
| ARCCORE_COMMON_EXPORT MemoryAllocationOptions | getAllocationOptions (eMemoryResource mem_resource) |
| Allocation par défaut pour la ressource mem_resource. | |
| ARCCORE_COMMON_EXPORT IMemoryAllocator * | getAllocator (eMemoryResource mem_resource) |
| Allocateur par défaut pour la ressource mem_resource. | |
| ARCCORE_COMMON_EXPORT void | copy (MutableMemoryView destination, eMemoryResource destination_mem, ConstMemoryView source, eMemoryResource source_mem, const RunQueue *queue=nullptr) |
| Copie de source vers destination en utilisant la file queue. | |
| void | copy (MutableMemoryView destination, ConstMemoryView source, const RunQueue *queue=nullptr) |
| Copie de source vers destination en utilisant la file queue. | |
| template<typename DataType> | |
| void | copy (Span< DataType > destination, Span< const DataType > source, const RunQueue *queue=nullptr) |
| Copie de source vers destination en utilisant la file queue. | |
| template<typename DataType> | |
| void | copy (SmallSpan< DataType > destination, SmallSpan< const DataType > source, const RunQueue *queue=nullptr) |
| Copie de source vers destination en utilisant la file queue. | |
| ARCCORE_COMMON_EXPORT void | copyHostWithIndexedSource (MutableMemoryView destination, ConstMemoryView source, Span< const Int32 > indexes) |
| Copie sur l'hôte des données avec indirection. | |
| ARCCORE_COMMON_EXPORT void | copyWithIndexedSource (MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr) |
| Copie sur l'hôte des données avec indirection. | |
| ARCCORE_COMMON_EXPORT void | copyHost (MutableMemoryView destination, ConstMemoryView source) |
| Copie dans destination les données de source. | |
| ARCCORE_COMMON_EXPORT void | copyHostWithIndexedDestination (MutableMemoryView destination, ConstMemoryView source, Span< const Int32 > indexes) |
| Copie dans l'instance les données indexées de v. | |
| ARCCORE_COMMON_EXPORT void | copyWithIndexedDestination (MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr) |
| Copie mémoire avec indirection. | |
| ARCCORE_COMMON_EXPORT void | fillIndexed (MutableMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, const RunQueue *run_queue=nullptr) |
| Remplit une zone mémoire indexée avec une valeur. | |
| ARCCORE_COMMON_EXPORT void | fill (MutableMemoryView destination, ConstMemoryView source, const RunQueue *run_queue=nullptr) |
| Remplit une zone mémoire avec une valeur. | |
| ARCCORE_COMMON_EXPORT void | copyWithIndexedSource (MutableMemoryView destination, ConstMultiMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr) |
| Copie dans destination les données de source indexées. | |
| ARCCORE_COMMON_EXPORT void | copyWithIndexedDestination (MutableMultiMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr) |
| Copie les éléments indéxés de destination avec les données de source. | |
| ARCCORE_COMMON_EXPORT void | fillIndexed (MutableMultiMemoryView destination, ConstMemoryView source, SmallSpan< const Int32 > indexes, RunQueue *run_queue=nullptr) |
| Remplit les éléments indéxés de destination avec la donnée source. | |
| ARCCORE_COMMON_EXPORT void | fill (MutableMultiMemoryView destination, ConstMemoryView source, RunQueue *run_queue=nullptr) |
| Remplit les éléments de destination avec la valeur source. | |
Espace de noms pour les fonctions de gestion mémoire et des allocateurs.
|
inline |
Redimensionne un tableau en ajoutant une réserve de mémoire.
Cet appel est équivalent à checkResizeArrayWithCapacity(array, new_size, false).
Définition à la ligne 77 du fichier arcane/src/arcane/utils/MemoryUtils.h.
Références checkResizeArrayWithCapacity().
|
inline |
Redimensionne un tableau en ajoutant une réserve de mémoire.
Le tableau array est redimensionné uniquement si new_size est supérieure à la taille actuelle du tableau ou si force_resize est vrai.
Si le tableau est redimensionné, on réserve une capacité supplémentaire pour éviter de réallouer à chaque fois.
| 2 | si on a réalloué via reserve() |
| 1 | si on a re-dimensionné sans réallouer. |
| 0 | si aucune opération n'a eu lieu. |
Définition à la ligne 54 du fichier arcane/src/arcane/utils/MemoryUtils.h.
Références Arcane::AbstractArray< T >::capacity(), Arcane::AbstractArray< T >::largeSize(), Arcane::Array< T >::reserve(), et Arcane::Array< T >::resize().
Référencé par Arcane::ItemGroupImpl::addItems(), Arcane::MeshUtils::checkResizeArray(), et checkResizeArrayWithCapacity().
|
inline |
Copie de source vers destination en utilisant la file queue.
Définition à la ligne 167 du fichier arccore/src/common/arccore/common/MemoryUtils.h.
Références copy(), et Arcane::Unknown.
| void Arcane::MemoryUtils::copy | ( | MutableMemoryView | destination, |
| eMemoryResource | destination_mem, | ||
| ConstMemoryView | source, | ||
| eMemoryResource | source_mem, | ||
| const RunQueue * | queue = nullptr ) |
Copie de source vers destination en utilisant la file queue.
Il est possible de spécifier la ressource mémoire où se trouve la source et la destination. Si on ne les connait pas, il est préférable d'utiliser la surcharge copy(MutableMemoryView destination, ConstMemoryView source, const RunQueue* queue).
Définition à la ligne 206 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::IMemoryResourceMng::_internal().
Référencé par Arcane::ItemGroupImpl::addItems(), copy(), copy(), copy(), Arcane::Materials::MeshMaterialVariableCommonStaticImpl< ThatClass >::getReference(), et Arcane::ItemVector::ItemVector().
|
inline |
Copie de source vers destination en utilisant la file queue.
Définition à la ligne 191 du fichier arccore/src/common/arccore/common/MemoryUtils.h.
Références copy().
|
inline |
Copie de source vers destination en utilisant la file queue.
Définition à la ligne 178 du fichier arccore/src/common/arccore/common/MemoryUtils.h.
Références Arcane::asBytes(), Arcane::asWritableBytes(), et copy().
| void Arcane::MemoryUtils::copyHost | ( | MutableMemoryView | destination, |
| ConstMemoryView | source ) |
Copie dans destination les données de source.
Utilise std::memmove pour la copie.
Définition à la ligne 217 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), et Arcane::MutableMemoryView::bytes().
| void Arcane::MemoryUtils::copyHostWithIndexedDestination | ( | MutableMemoryView | destination, |
| ConstMemoryView | source, | ||
| Span< const Int32 > | indexes ) |
Copie dans l'instance les données indexées de v.
L'opération est équivalente au pseudo-code suivant:
Définition à la ligne 239 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références copyWithIndexedDestination(), et Arcane::SpanImpl< T, SizeType, Extent >::smallView().
| void Arcane::MemoryUtils::copyHostWithIndexedSource | ( | MutableMemoryView | destination, |
| ConstMemoryView | source, | ||
| Span< const Int32 > | indexes ) |
Copie sur l'hôte des données avec indirection.
Copie dans destination les données de source indexées par indexes
L'opération est équivalente au pseudo-code suivant:
Définition à la ligne 302 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références copyWithIndexedSource(), et Arcane::SpanImpl< T, SizeType, Extent >::smallView().
| void Arcane::MemoryUtils::copyWithIndexedDestination | ( | MutableMemoryView | destination, |
| ConstMemoryView | source, | ||
| SmallSpan< const Int32 > | indexes, | ||
| RunQueue * | run_queue = nullptr ) |
Copie mémoire avec indirection.
Copie les données de source dans destination pour les indices spécifiés par indexes.
L'opération est équivalente au pseudo-code suivant :
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 249 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::MutableMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMemoryView::datatypeSize(), et Arcane::SpanImpl< T, SizeType, Extent >::size().
Référencé par copyHostWithIndexedDestination().
| void Arcane::MemoryUtils::copyWithIndexedDestination | ( | MutableMultiMemoryView | destination, |
| ConstMemoryView | source, | ||
| SmallSpan< const Int32 > | indexes, | ||
| RunQueue * | run_queue = nullptr ) |
Copie les éléments indéxés de destination avec les données de source.
L'opération est équivalente au pseudo-code suivant :
Le tableau indexes doit avoir une taille multiple de 2. Les valeurs paires servent à indexer le premier tableau et les valeurs impaires le 2ème.
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 335 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMultiMemoryView::datatypeSize(), Arcane::SpanImpl< T, SizeType, Extent >::size(), et Arcane::MutableMultiMemoryView::views().
| void Arcane::MemoryUtils::copyWithIndexedSource | ( | MutableMemoryView | destination, |
| ConstMemoryView | source, | ||
| SmallSpan< const Int32 > | indexes, | ||
| RunQueue * | run_queue = nullptr ) |
Copie sur l'hôte des données avec indirection.
Copie dans destination les données de source indexées par indexes
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 312 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::MutableMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMemoryView::datatypeSize(), et Arcane::SpanImpl< T, SizeType, Extent >::size().
Référencé par copyHostWithIndexedSource().
| void Arcane::MemoryUtils::copyWithIndexedSource | ( | MutableMemoryView | destination, |
| ConstMultiMemoryView | source, | ||
| SmallSpan< const Int32 > | indexes, | ||
| RunQueue * | run_queue = nullptr ) |
Copie dans destination les données de source indexées.
L'opération est équivalente au pseudo-code suivant :
Le tableau indexes doit avoir une taille multiple de 2. Les valeurs paires servent à indexer le premier tableau et les valeurs impaires le 2ème.
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 378 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::MutableMemoryView::bytes(), Arcane::ConstMultiMemoryView::datatypeSize(), Arcane::MutableMemoryView::datatypeSize(), Arcane::SpanImpl< T, SizeType, Extent >::size(), et Arcane::ConstMultiMemoryView::views().
| void Arcane::MemoryUtils::fill | ( | MutableMemoryView | destination, |
| ConstMemoryView | source, | ||
| const RunQueue * | run_queue = nullptr ) |
Remplit une zone mémoire avec une valeur.
Remplit les valeurs de la zone mémoire destination avec la valeur de la zone mémoire source. source doit avoir une seule valeur. La zone mémoire source être accessible depuis l'hôte.
L'opération est équivalente au pseudo-code suivant :
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 288 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::MutableMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMemoryView::datatypeSize(), et Arcane::SpanImpl< T, SizeType, Extent >::fill().
| void Arcane::MemoryUtils::fill | ( | MutableMultiMemoryView | destination, |
| ConstMemoryView | source, | ||
| RunQueue * | run_queue = nullptr ) |
Remplit les éléments de destination avec la valeur source.
source doit avoir une seule valeur. Elle doit être accessible depuis l'hôte.
L'opération est équivalente au pseudo-code suivant :
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 367 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMultiMemoryView::datatypeSize(), et Arcane::MutableMultiMemoryView::views().
| void Arcane::MemoryUtils::fillIndexed | ( | MutableMemoryView | destination, |
| ConstMemoryView | source, | ||
| SmallSpan< const Int32 > | indexes, | ||
| const RunQueue * | run_queue = nullptr ) |
Remplit une zone mémoire indexée avec une valeur.
Remplit les indices indexes de la zone mémoire destination avec la valeur de la zone mémoire source. source doit avoir une seule valeur. La zone mémoire source être accessible depuis l'hôte.
L'opération est équivalente au pseudo-code suivant:
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 269 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::MutableMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMemoryView::datatypeSize(), Arcane::SpanImpl< T, SizeType, Extent >::fill(), et Arcane::SpanImpl< T, SizeType, Extent >::size().
| void Arcane::MemoryUtils::fillIndexed | ( | MutableMultiMemoryView | destination, |
| ConstMemoryView | source, | ||
| SmallSpan< const Int32 > | indexes, | ||
| RunQueue * | run_queue = nullptr ) |
Remplit les éléments indéxés de destination avec la donnée source.
source doit avoir une seule valeur. Cette valeur sera utilisée pour remplir les valeurs de l'instance aux indices spécifiés par indexes. Elle doit être accessible depuis l'hôte.
L'opération est équivalente au pseudo-code suivant :
Si run_queue n'est pas nul, elle sera utilisée pour la copie.
Définition à la ligne 351 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::ConstMemoryView::bytes(), Arcane::ConstMemoryView::datatypeSize(), Arcane::MutableMultiMemoryView::datatypeSize(), Arcane::SpanImpl< T, SizeType, Extent >::size(), et Arcane::MutableMultiMemoryView::views().
| IMemoryAllocator * Arcane::MemoryUtils::getAcceleratorHostMemoryAllocator | ( | ) |
Allocateur spécifique pour les accélérateurs.
Définition à la ligne 128 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Référencé par Arcane::platform::getAcceleratorHostMemoryAllocator().
| MemoryAllocationOptions Arcane::MemoryUtils::getAllocationOptions | ( | eMemoryResource | mem_resource | ) |
Allocation par défaut pour la ressource mem_resource.
Lève une exception si aucune allocateur n'est disponible pour la ressource (par exemple si on demande eMemoryResource::Device et qu'il n'y a pas de support pour les accélérateurs.
La ressource eMemoryResource::UnifiedMemory est toujours disponible. Si aucun runtime accélérateur n'est chargé, alors c'est équivalent à eMemoryResource::Host.
Définition à la ligne 197 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références getAllocator().
| IMemoryAllocator * Arcane::MemoryUtils::getAllocator | ( | eMemoryResource | mem_resource | ) |
Allocateur par défaut pour la ressource mem_resource.
Définition à la ligne 188 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Référencé par getAllocationOptions().
| MemoryAllocationOptions Arcane::MemoryUtils::getAllocatorForMostlyReadOnlyData | ( | ) |
Allocateur par défaut pour les données essentiellement en lecture.
Cet appel est équivalent à getDefaultDataAllocator(eMemoryLocationHint::HostAndDeviceMostlyRead).
Définition à la ligne 179 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références getDefaultDataAllocator(), et Arcane::HostAndDeviceMostlyRead.
| ARCCORE_COMMON_EXPORT IMemoryAllocator * Arcane::MemoryUtils::getDefaultDataAllocator | ( | ) |
Allocateur par défaut pour les données.
L'allocateur par défaut pour les données est un allocateur qui permet d'accéder à la zone mémoire à la fois par l'hôte et l'accélérateur.
Il est possible de récupérer la ressource mémoire associée via getDefaultDataMemoryResource();
Cet appel est équivalent à getAllocator(getDefaultDataMemoryResource()).
Il est garanti que l'alignement est au moins celui retourné par AlignedMemoryAllocator::Simd().
Définition à la ligne 148 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références getDefaultDataMemoryResource().
Référencé par getAllocatorForMostlyReadOnlyData(), getDefaultDataAllocator(), et Arcane::platform::getDefaultDataAllocator().
| MemoryAllocationOptions Arcane::MemoryUtils::getDefaultDataAllocator | ( | eMemoryLocationHint | hint | ) |
Allocateur par défaut pour les données avec informations sur la localisation attendue.
Cette fonction retourne l'allocateur de getDefaulDataAllocator() mais ajoute les informations de gestion mémoire spécifiées par hint.
Définition à la ligne 170 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références getDefaultDataAllocator().
| eMemoryResource Arcane::MemoryUtils::getDefaultDataMemoryResource | ( | ) |
Ressource mémoire utilisée par l'allocateur par défaut pour les données.
Par défaut, si un runtime accélérateur est initialisé, la ressource associée est eMemoryResource::UnifiedMemory. Sinon, il s'agit de eMemoryResource::Host.
Définition à la ligne 62 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Référencé par Arcane::Accelerator::arcaneInitializeRunner(), et getDefaultDataAllocator().
| IMemoryAllocator * Arcane::MemoryUtils::getDeviceOrHostAllocator | ( | ) |
Retourne l'allocateur sur l'hôte ou sur le device.
Si un runtime accélérateur est initialisé, l'allocateur retourné permet d'allouer en utilisant la mémoire de l'accélérateur par défaut (eMemoryResource::Device). Sinon, utilise l'allocateur de l'hôte (eMemoryResource::Host).
Définition à la ligne 157 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::Device, Arcane::IMemoryResourceMng::getAllocator(), et Arcane::Host.
| eMemoryResource Arcane::MemoryUtils::getMemoryResourceFromName | ( | const String & | name | ) |
Retourne la ressource mémoire par son nom.
Le nom correspond au nom de la valeur de l'énumération (par exemple 'Device' pour eMemoryResource::Device.
Si name est nul, retourne eMemoryResource::Unknown. Si name ne correspondant pas à une valeur valide, lève une exception.
Définition à la ligne 71 du fichier arccore/src/common/arccore/common/MemoryUtils.cc.
Références Arcane::Device, Arcane::Host, Arcane::HostPinned, Arcane::String::null(), Arcane::UnifiedMemory, et Arcane::Unknown.