12#ifndef ARCANE_ACCELERATOR_CORE_IREDUCEMEMORYIMPL_H
13#define ARCANE_ACCELERATOR_CORE_IREDUCEMEMORYIMPL_H
19#include "arcane/utils/MemoryView.h"
24namespace Arcane::Accelerator::impl
90template<
typename T> T*
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)
Vue constante sur une zone mémoire contigue contenant des éléments de taille fixe.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
ConstMemoryView makeMemoryView(Span< DataType > v)
Créé une vue mémoire constante à partir d'un Span.
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.
MutableMemoryView m_grid_memory_values
Mémoire allouée pour la réduction sur une grille (de taille nb_bloc * sizeof(T))
Int32 m_warp_size
Taille d'un warp.
unsigned int * m_grid_device_count
Entier utilisé pour compter le nombre de blocs ayant déjà fait leur partie de la réduction.