16#include "arcane/utils/FatalErrorException.h"
17#include "arcane/utils/MemoryAllocator.h"
18#include "arcane/utils/IMemoryRessourceMng.h"
19#include "arcane/utils/String.h"
20#include "arcane/utils/internal/IMemoryRessourceMngInternal.h"
21#include "arcane/utils/internal/MemoryUtilsInternal.h"
22#include "arcane/utils/internal/MemoryResourceMng.h"
46 MemoryResourceMng global_default_data_memory_resource_mng;
47 IMemoryRessourceMng* global_data_memory_resource_mng =
nullptr;
57 return global_data_memory_resource;
66 global_data_memory_resource = v;
80 else if (name ==
"Host")
82 else if (name ==
"HostPinned")
84 else if (name ==
"UnifiedMemory")
87 ARCANE_FATAL(
"Invalid name '{0}' for memory resource. Valid names are "
88 "'Device', 'Host', 'HostPinned' or 'UnifieMemory'.",
96IMemoryRessourceMng* MemoryUtils::
97setDataMemoryResourceMng(IMemoryRessourceMng* mng)
100 IMemoryRessourceMng* old = global_data_memory_resource_mng;
101 global_data_memory_resource_mng = mng;
108IMemoryRessourceMng* MemoryUtils::
109getDataMemoryResourceMng()
111 IMemoryRessourceMng* a = global_data_memory_resource_mng;
113 return &global_default_data_memory_resource_mng;
132 IMemoryRessourceMng* mrm = getDataMemoryResourceMng();
154 return getDataMemoryResourceMng()->getAllocator(mem_resource);
181 return global_accelerator_host_memory_allocator;
191 global_accelerator_host_memory_allocator = a;
199computeCapacity(
Int64 size)
201 double d_size =
static_cast<double>(size);
202 double d_new_capacity = d_size * 1.8;
204 d_new_capacity = d_size * 1.2;
205 else if (size > 500000)
206 d_new_capacity = d_size * 1.5;
207 return static_cast<Int64>(d_new_capacity);
217 IMemoryRessourceMng* mrm = getDataMemoryResourceMng();
218 mrm->
_internal()->copy(source, destination_mem, destination, source_mem, queue);
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Fonctions de gestion mémoire et des allocateurs.
File d'exécution pour un accélérateur.
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Interface d'un allocateur pour la mémoire.
virtual IMemoryRessourceMngInternal * _internal()=0
Interface interne.
virtual IMemoryAllocator * getAllocator(eMemoryResource r)=0
Allocateur mémoire pour la ressource r.
Options pour configurer les allocations.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
IMemoryAllocator * getDeviceOrHostAllocator()
Retourne l'allocateur sur l'hôte ou sur le device.
MemoryAllocationOptions getAllocatorForMostlyReadOnlyData()
Allocateur par défaut pour les données essentiellement en lecture.
MemoryAllocationOptions getAllocationOptions(eMemoryResource mem_resource)
Allocation par défaut pour la ressource mem_resource.
IMemoryAllocator * getDefaultDataAllocator()
Allocateur par défaut pour les données.
eMemoryResource getMemoryResourceFromName(const String &name)
Retourne la ressource mémoire par son nom.
IMemoryAllocator * getAcceleratorHostMemoryAllocator()
Allocateur spécifique pour les accélérateurs.
IMemoryAllocator * getAllocator(eMemoryResource mem_resource)
Allocateur par défaut pour la ressource mem_resource.
eMemoryResource getDefaultDataMemoryResource()
Ressource mémoire utilisée par l'allocateur par défaut pour les données.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
eMemoryLocationHint
Indices sur la localisation mémoire attendue.
@ HostAndDeviceMostlyRead
Indique que la donnée sera utilisée à la fois sur accélérateur et sur CPU et qu'elle ne sera pas souv...
Arcane::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
eMemoryResource
Liste des ressources mémoire disponibles.
@ HostPinned
Alloue sur l'hôte.
@ Unknown
Valeur inconnue ou non initialisée.
@ UnifiedMemory
Alloue en utilisant la mémoire unifiée.
@ Device
Alloue sur le device.