Arcane  v4.1.2.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_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 299 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 303 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 324 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 416 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 386 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

Références ARCCORE_FATAL, et m_host_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 359 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 355 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 376 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 377 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 373 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.

◆ m_host_memory_for_reduced_value

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

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

Cette valeur est uniquement valide si la réduction a lieu sur l'hôte.

Définition à la ligne 372 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 375 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 366 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.


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