Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
core/IReduceMemoryImpl.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/* IReduceMemoryImpl.h (C) 2000-2023 */
9/* */
10/* Interface de la gestion mémoire pour les réductions. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_IREDUCEMEMORYIMPL_H
13#define ARCANE_ACCELERATOR_IREDUCEMEMORYIMPL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arcane/utils/MemoryView.h"
20
21#include <stack>
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane::Accelerator::impl
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
36class ARCANE_ACCELERATOR_CORE_EXPORT IReduceMemoryImpl
37{
38 public:
39
42 {
43 public:
44
48 unsigned int* m_grid_device_count = nullptr;
50 eDeviceReducePolicy m_reduce_policy = eDeviceReducePolicy::Grid;
52 void* m_host_memory_for_reduced_value = nullptr;
53 };
54
55 public:
56
57 virtual ~IReduceMemoryImpl() = default;
58
59 public:
60
65 virtual void* allocateReduceDataMemory(ConstMemoryView identity_view) = 0;
66
69
71 virtual Int32 gridSize() const = 0;
72
75
82 virtual void copyReduceValueFromDevice() =0;
83
85 virtual void release() = 0;
86};
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
94template<typename T> T*
95allocateReduceDataMemory(IReduceMemoryImpl* p,T identity)
96{
97 T* ptr = reinterpret_cast<T*>(p->allocateReduceDataMemory(makeMemoryView(&identity)));
98 return ptr;
99}
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104} // End namespace Arcane::Accelerator::impl
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108
109#endif
Interface de la gestion mémoire pour les réductions.
virtual void * allocateReduceDataMemory(ConstMemoryView identity_view)=0
Alloue la mémoire pour une donnée dont on veut faire une réduction et remplit la zone avec la valeur ...
virtual Int32 gridSize() const =0
Taille de la grille GPU (nombre de blocs)
virtual GridMemoryInfo gridMemoryInfo()=0
Informations sur la mémoire utilisée par la réduction.
virtual void copyReduceValueFromDevice()=0
Copie la valeur réduite depuis le device vers l'hote.
virtual void release()=0
Libère l'instance.
virtual void setGridSizeAndAllocate(Int32 grid_size)=0
Positionne la taille de la grille GPU (le nombre de blocs)
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
eDeviceReducePolicy
Politique des opératations de réduction sur les accélérateurs.
std::int32_t Int32
Type entier signé sur 32 bits.
Informations mémoire pour la réduction sur les accélérateurs.
MutableMemoryView m_grid_memory_values
Mémoire allouée pour la réduction sur une grille (de taille nb_bloc * sizeof(T))