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;
48 eMemoryResource global_data_memory_resource = eMemoryResource::Host;
57 return global_data_memory_resource;
64setDefaultDataMemoryResource(eMemoryResource v)
66 global_data_memory_resource = v;
75 eMemoryResource v = eMemoryResource::Unknown;
79 v = eMemoryResource::Device;
80 else if (name ==
"Host")
81 v = eMemoryResource::Host;
82 else if (name ==
"HostPinned")
83 v = eMemoryResource::HostPinned;
84 else if (name ==
"UnifiedMemory")
85 v = eMemoryResource::UnifiedMemory;
87 ARCANE_FATAL(
"Invalid name '{0}' for memory resource. Valid names are "
88 "'Device', 'Host', 'HostPinned' or 'UnifieMemory'.",
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;
154 return getDataMemoryResourceMng()->getAllocator(mem_resource);
163 return MemoryAllocationOptions(getAllocator(mem_resource));
181 return global_accelerator_host_memory_allocator;
191 global_accelerator_host_memory_allocator = a;
198Int64 MemoryUtils::impl::
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);
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.
virtual IMemoryRessourceMngInternal * _internal()=0
Interface interne.
virtual IMemoryAllocator * getAllocator(eMemoryResource r)=0
Allocateur mémoire pour la ressource r.
Interface d'un allocateur pour la mémoire.
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 -*-
Arccore::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
eMemoryResource
Liste des ressources mémoire disponibles.