Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ReduceMemoryImpl.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* ReduceMemoryImpl.h (C) 2000-2023 */
9/* */
10/* Gestion de la mémoire pour les réductions. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_CORE_INTERNAL_REDUCEMEMORYIMPL_H
13#define ARCANE_ACCELERATOR_CORE_INTERNAL_REDUCEMEMORYIMPL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/accelerator/core/IReduceMemoryImpl.h"
18
19#include "arcane/utils/Array.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane::Accelerator::impl
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
31: public IReduceMemoryImpl
32{
33 public:
34
36
37 public:
38
39 void* allocateReduceDataMemory(ConstMemoryView identity_view) override;
41 {
43 _setReducePolicy();
44 _allocateGridDataMemory();
45 }
46 Int32 gridSize() const override { return m_grid_size; }
47
49 {
50 return m_grid_memory_info;
51 }
52 void copyReduceValueFromDevice() override;
53 void release() override;
54
55 private:
56
57 RunCommandImpl* m_command = nullptr;
58
60 std::byte* m_device_memory = nullptr;
61
64
67
70
73
76
77 GridMemoryInfo m_grid_memory_info;
78
81
84
90
91 private:
92
93 void _allocateGridDataMemory();
94 void _allocateMemoryForGridDeviceCount();
95 void _setReducePolicy();
96 void _allocateMemoryForReduceData(Int32 new_size)
97 {
100
103
105 }
106};
107
108/*---------------------------------------------------------------------------*/
109/*---------------------------------------------------------------------------*/
110
111} // namespace Arcane::Accelerator::impl
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116#endif
Interface de la gestion mémoire pour les réductions.
void setGridSizeAndAllocate(Int32 grid_size) override
Positionne la taille de la grille GPU (le nombre de blocs)
std::byte * m_device_memory
Pointeur vers la mémoire unifiée contenant la donnée réduite.
UniqueArray< Byte > m_grid_buffer
Tableau contenant la valeur de la réduction pour chaque bloc d'une grille.
Int32 m_grid_size
Taille courante de la grille (nombre de blocs)
UniqueArray< std::byte > m_host_memory_bytes
Allocation pour la donnée réduite en mémoire hôte.
void copyReduceValueFromDevice() override
Copie la valeur réduite depuis le device vers l'hote.
Int64 m_data_type_size
Taille de la donnée actuelle.
Int32 gridSize() const override
Taille de la grille GPU (nombre de blocs)
void * allocateReduceDataMemory(ConstMemoryView identity_view) override
Alloue la mémoire pour une donnée dont on veut faire une réduction et remplit la zone avec la valeur ...
UniqueArray< std::byte > m_identity_buffer
Buffer pour conserver la valeur de l'identité
UniqueArray< unsigned int > m_grid_device_count
Tableau de 1 entier non signé contenant le nombre de grilles ayant déja effectuée la réduction.
Int64 m_size
Taille allouée pour m_device_memory.
UniqueArray< std::byte > m_device_memory_bytes
Allocation pour la donnée réduite en mémoire managée.
void release() override
Libère l'instance.
GridMemoryInfo gridMemoryInfo() override
Informations sur la mémoire utilisée par la réduction.
Implémentation d'une commande pour accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
const T * data() const
Accès à la racine du tableau hors toute protection.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.
Informations mémoire pour la réduction sur les accélérateurs.
void * m_host_memory_for_reduced_value
Pointeur vers la mémoire sur l'hôte contenant la valeur réduite.