Arcane  v4.1.1.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >

Opérateur de réduction. Plus de détails...

#include <arccore/accelerator/Reduce.h>

Fonctions membres publiques

 HostDeviceReducerBase (RunCommand &command)
 
__host__ __device__ HostDeviceReducerBase (const HostDeviceReducerBase &rhs)
 
__host__ __device__ HostDeviceReducerBase (HostDeviceReducerBase &&rhs)=delete
 
HostDeviceReducerBaseoperator= (const HostDeviceReducerBase &rhs)=delete
 
__host__ __device__ void setValue (DataType v)
 
__host__ __device__ DataType localValue () const
 

Fonctions membres protégées

DataType _reduce ()
 Effectue la réduction et récupère la valeur. ATTENTION: ne faire qu'une seule fois.
 
__host__ __device__ void _finalize ()
 

Attributs protégés

impl::IReduceMemoryImplm_memory_impl = nullptr
 
DataType * m_host_or_device_memory_for_reduced_value = nullptr
 Pointeur vers la donnée qui contiendra la valeur réduite.
 
impl::IReduceMemoryImpl::GridMemoryInfo m_grid_memory_info
 
DataType m_local_value
 
DataType * m_atomic_parent_value = nullptr
 
DataType m_atomic_value
 

Description détaillée

template<typename DataType, typename ReduceFunctor>
class Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >

Opérateur de réduction.

Cette classe permet de gérer une réduction sur accélérateur ou en multi-thread.

La réduction finale a lieu lors de l'appel à reduce(). Il ne faut donc faire cet appel qu'une seule fois et dans une partie collective. Cet appel n'est valide que sur les instance créées avec un constructeur vide. Ces dernières ne peuvent être créées que sur l'hôte.

Avertissement
Le constructeur de recopie ne doit pas être appelé explicitement. L'instance de départ doit rester valide tant qu'il existe des copies ou des références dans le noyau de calcul.

NOTE sur l'implémentation

Sur GPU, les réductions sont effectuées dans le destructeur de la classe La valeur 'm_host_or_device_memory_for_reduced_value' sert à conserver ces valeurs. Sur l'hôte, on utilise un 'std::atomic' pour conserver la valeur commune entre les threads. Cette valeur est référencée par 'm_parent_value' et n'est valide que sur l'hôte.

Définition à la ligne 306 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

Documentation des constructeurs et destructeur

◆ HostDeviceReducerBase() [1/2]

template<typename DataType, typename ReduceFunctor>
Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::HostDeviceReducerBase ( RunCommand & command)
inline

Définition à la ligne 310 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ HostDeviceReducerBase() [2/2]

template<typename DataType, typename ReduceFunctor>
__host__ __device__ Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::HostDeviceReducerBase ( const HostDeviceReducerBase< DataType, ReduceFunctor > & rhs)
inline

Définition à la ligne 333 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

Documentation des fonctions membres

◆ _finalize()

template<typename DataType, typename ReduceFunctor>
__host__ __device__ void Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::_finalize ( )
inlineprotected

Définition à la ligne 436 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ _reduce()

template<typename DataType, typename ReduceFunctor>
DataType Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::_reduce ( )
inlineprotected

Effectue la réduction et récupère la valeur. ATTENTION: ne faire qu'une seule fois.

Définition à la ligne 405 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

Références m_host_or_device_memory_for_reduced_value.

◆ localValue()

template<typename DataType, typename ReduceFunctor>
__host__ __device__ DataType Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::localValue ( ) const
inline

Définition à la ligne 369 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ setValue()

template<typename DataType, typename ReduceFunctor>
__host__ __device__ void Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::setValue ( DataType v)
inline

Définition à la ligne 365 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

Documentation des données membres

◆ m_atomic_parent_value

template<typename DataType, typename ReduceFunctor>
DataType* Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_atomic_parent_value = nullptr
protected

Définition à la ligne 393 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ m_atomic_value

template<typename DataType, typename ReduceFunctor>
DataType Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_atomic_value
mutableprotected

Définition à la ligne 394 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ m_grid_memory_info

template<typename DataType, typename ReduceFunctor>
impl::IReduceMemoryImpl::GridMemoryInfo Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_grid_memory_info
protected

Définition à la ligne 384 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ m_host_or_device_memory_for_reduced_value

template<typename DataType, typename ReduceFunctor>
DataType* Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_host_or_device_memory_for_reduced_value = nullptr
protected

Pointeur vers la donnée qui contiendra la valeur réduite.

Sur accélérateur, cette donnée est allouée sur le device. Sur CPU, il s'agit de l'adresse de m_local_value pour l'instance parente.

Définition à la ligne 383 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

Référencé par _reduce().

◆ m_local_value

template<typename DataType, typename ReduceFunctor>
DataType Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_local_value
mutableprotected

Définition à la ligne 392 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ m_memory_impl

template<typename DataType, typename ReduceFunctor>
impl::IReduceMemoryImpl* Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_memory_impl = nullptr
protected

Définition à la ligne 376 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.


La documentation de cette classe a été générée à partir du fichier suivant :