14#include "arccore/common/internal/MemoryResourceMng.h"
16#include "arccore/base/FatalErrorException.h"
17#include "arccore/base/PlatformUtils.h"
18#include "arccore/base/MemoryView.h"
19#include "arccore/common/Array.h"
20#include "arccore/common/AlignedMemoryAllocator.h"
22#include "arccore/common/internal/MemoryUtilsInternal.h"
56 [[maybe_unused]]
const RunQueue* queue)
override
61 if (!_isHost(from_mem))
62 ARCCORE_FATAL(
"Source buffer is not accessible from host and no copier provided (location={0})",
66 ARCCORE_FATAL(
"Destination buffer is not accessible from host and no copier provided (location={0})",
79, m_copier(m_default_memory_copier.get())
91int MemoryResourceMng::
95 if (x <= 0 || x >= ARCCORE_NB_MEMORY_RESOURCE)
96 ARCCORE_FATAL(
"Invalid value '{0}'. Valid range is '1' to '{1}'", x, ARCCORE_NB_MEMORY_RESOURCE - 1);
106 int x = _checkValidResource(r);
111 if (!a && !m_is_accelerator) {
114 a = m_allocators[
static_cast<int>(mem)];
120 if (!a && throw_if_not_found)
121 ARCCORE_FATAL(
"Allocator for resource '{0}' is not available", r);
141 int x = _checkValidResource(r);
142 return m_memory_pools[x];
148void MemoryResourceMng::
151 int x = _checkValidResource(r);
152 m_allocators[x] = allocator;
158void MemoryResourceMng::
161 int x = _checkValidResource(r);
162 m_memory_pools[x] = pool;
168void MemoryResourceMng::
172 Int64 from_size = from.bytes().size();
173 Int64 to_size = to.bytes().size();
174 if (from_size > to_size)
175 ARCCORE_FATAL(
"Destination copy is too small (to_size={0} from_size={1})", to_size, from_size);
177 m_copier->copy(from, from_mem, to, to_mem, queue);
183void MemoryResourceMng::
188 mrm->_internal()->copy(from, mem_type, to, mem_type,
nullptr);
#define ARCCORE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Fonctions utilitaires de gestion mémoire.
File d'exécution pour un accélérateur.
static AlignedMemoryAllocator * Simd()
Allocateur garantissant l'alignement pour utiliser la vectorisation sur la plateforme cible.
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Interface d'un allocateur pour la mémoire.
Interface d'un pool mémoire.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
void copyHost(MutableMemoryView destination, ConstMemoryView source)
Copie dans destination les données de source.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
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.