Arcane  v4.1.1.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MemoryResourceMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* MemoryResourceMng.h (C) 2000-2025 */
9/* */
10/* Gestion des ressources mémoire pour les CPU et accélérateurs. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_COMMON_INTERNAL_MEMORYRESOURCEMNG_H
13#define ARCCORE_COMMON_INTERNAL_MEMORYRESOURCEMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/base/FixedArray.h"
18
19#include "arccore/common/IMemoryResourceMng.h"
20#include "arccore/common/internal/IMemoryResourceMngInternal.h"
21
22#include <memory>
23#include <array>
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
36class ARCCORE_COMMON_EXPORT MemoryResourceMng
37: public IMemoryResourceMng
39{
40 public:
41
42 MemoryResourceMng();
43
44 public:
45
47 IMemoryAllocator* getAllocator(eMemoryResource r, bool throw_if_not_found) override;
48
49 public:
50
51 void copy(ConstMemoryView from, eMemoryResource from_mem,
52 MutableMemoryView to, eMemoryResource to_mem, const RunQueue* queue) override;
53
54 public:
55
56 void setAllocator(eMemoryResource r, IMemoryAllocator* allocator) override;
57 void setCopier(IMemoryCopier* copier) override { m_copier = copier; }
58 void setIsAccelerator(bool v) override { m_is_accelerator = v; }
59
60 public:
61
63 IMemoryResourceMngInternal* _internal() override { return this; }
64
65 public:
66
68 static void genericCopy(ConstMemoryView from, MutableMemoryView to);
69
70 private:
71
73 std::unique_ptr<IMemoryCopier> m_default_memory_copier;
74 IMemoryCopier* m_copier = nullptr;
75 bool m_is_accelerator = false;
76
77 private:
78
79 inline int _checkValidResource(eMemoryResource r);
80};
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85} // End namespace Arcane
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90#endif
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Interface d'un allocateur pour la mémoire.
Interface pour les copies mémoire avec support des accélérateurs.
Partie interne à Arcane de 'IMemoryRessourceMng'.
Gestion des ressources mémoire pour les CPU et accélérateurs.
void setAllocator(eMemoryResource r, IMemoryAllocator *allocator) override
Positionne l'allocateur pour la ressource r.
void setIsAccelerator(bool v) override
Indique si un accélérateur est disponible.
IMemoryAllocator * getAllocator(eMemoryResource r) override
Allocateur mémoire pour la ressource r.
void setCopier(IMemoryCopier *copier) override
Positionne l'instance gérant les copies.
IMemoryResourceMngInternal * _internal() override
Interface interne.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eMemoryResource
Liste des ressources mémoire disponibles.