Arcane  v4.1.0.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 ARCANE_UTILS_INTERNAL_MEMORYRESOURCEMNG_H
13#define ARCANE_UTILS_INTERNAL_MEMORYRESOURCEMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arccore/base/FixedArray.h"
20
21#include "arccore/common/IMemoryResourceMng.h"
22#include "arccore/common/internal/IMemoryResourceMngInternal.h"
23
24#include <memory>
25#include <array>
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
38class ARCANE_UTILS_EXPORT MemoryResourceMng
39: public IMemoryResourceMng
41{
42 public:
43
44 MemoryResourceMng();
45
46 public:
47
49 IMemoryAllocator* getAllocator(eMemoryResource r, bool throw_if_not_found) override;
50
51 public:
52
53 void copy(ConstMemoryView from, eMemoryResource from_mem,
54 MutableMemoryView to, eMemoryResource to_mem, const RunQueue* queue) override;
55
56 public:
57
58 void setAllocator(eMemoryResource r, IMemoryAllocator* allocator) override;
59 void setCopier(IMemoryCopier* copier) override { m_copier = copier; }
60 void setIsAccelerator(bool v) override { m_is_accelerator = v; }
61
62 public:
63
65 IMemoryResourceMngInternal* _internal() override { return this; }
66
67 public:
68
70 static void genericCopy(ConstMemoryView from, MutableMemoryView to);
71
72 private:
73
75 std::unique_ptr<IMemoryCopier> m_default_memory_copier;
76 IMemoryCopier* m_copier = nullptr;
77 bool m_is_accelerator = false;
78
79 private:
80
81 inline int _checkValidResource(eMemoryResource r);
82};
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87} // End namespace Arcane
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92#endif
Fichier de configuration d'Arcane.
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.
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.