12#ifndef ARCCORE_COMMON_ACCELERATOR_INTERNAL_REDUCEMEMORYIMPL_H
13#define ARCCORE_COMMON_ACCELERATOR_INTERNAL_REDUCEMEMORYIMPL_H
17#include "arccore/common/accelerator/IReduceMemoryImpl.h"
19#include "arccore/common/Array.h"
24namespace Arcane::Accelerator::Impl
43 _allocateGridDataMemory();
49 return m_grid_memory_info;
85 void _allocateGridDataMemory();
86 void _allocateMemoryForGridDeviceCount();
87 void _setReducePolicy();
88 void _allocateMemoryForReduceData(
Int32 new_size);
Interface de la gestion mémoire pour les réductions.
UniqueArray< std::byte > m_host_memory_bytes
Allocation pour la donnée réduite en mémoire hôte.
void release() override
Libère l'instance.
UniqueArray< Byte > m_grid_buffer
Tableau contenant la valeur de la réduction pour chaque bloc d'une grille.
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.
UniqueArray< std::byte > m_identity_buffer
Buffer pour conserver la valeur de l'identité
void setGridSizeAndAllocate(Int32 grid_size) override
Positionne la taille de la grille GPU (le nombre de blocs)
void allocateReduceDataMemory(Int32 data_type_size) override
Alloue la mémoire pour une donnée dont on veut faire une réduction.
Int32 gridSize() const override
Taille de la grille GPU (nombre de blocs)
GridMemoryInfo gridMemoryInfo() override
Informations sur la mémoire utilisée par la réduction.
Int64 m_size
Taille allouée pour m_device_memory.
Int32 m_grid_size
Taille courante de la grille (nombre de blocs)
Int64 m_data_type_size
Taille de la donnée actuelle.
Implémentation d'une commande pour accélérateur.
Vecteur 1D de données avec sémantique par valeur (style STL).
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.