12#ifndef ARCANE_ACCELERATOR_IREDUCEMEMORYIMPL_H
13#define ARCANE_ACCELERATOR_IREDUCEMEMORYIMPL_H
19#include "arcane/utils/MemoryView.h"
26namespace Arcane::Accelerator::impl
94template<
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.
eDeviceReducePolicy
Politique des opératations de réduction sur les accélérateurs.
@ Grid
Utilise un noyau de calcul avec une synchronisations entre les blocs.
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.
eDeviceReducePolicy m_reduce_policy
Politique de réduction.
MutableMemoryView m_grid_memory_values
Mémoire allouée pour la réduction sur une grille (de taille nb_bloc * sizeof(T))
unsigned int * m_grid_device_count
Entier utilisé pour compter le nombre de blocs ayant déjà fait leur partie de la réduction.