12#ifndef ARCANE_ACCELERATOR_CORE_INTERNAL_REDUCEMEMORYIMPL_H
13#define ARCANE_ACCELERATOR_CORE_INTERNAL_REDUCEMEMORYIMPL_H
17#include "arcane/accelerator/core/IReduceMemoryImpl.h"
19#include "arcane/utils/Array.h"
24namespace Arcane::Accelerator::impl
44 _allocateGridDataMemory();
50 return m_grid_memory_info;
93 void _allocateGridDataMemory();
94 void _allocateMemoryForGridDeviceCount();
95 void _setReducePolicy();
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.
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.