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.
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.
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.