Arcane  v3.14.10.0
Documentation développeur
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...

+ Graphe d'héritage de Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >:
+ Graphe de collaboration de Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >:

Fonctions membres publiques

 HostDeviceReducerBase (RunCommand &command)
 
ARCCORE_HOST_DEVICE HostDeviceReducerBase (const HostDeviceReducerBase &rhs)
 
ARCCORE_HOST_DEVICE HostDeviceReducerBase (HostDeviceReducerBase &&rhs)=delete
 
HostDeviceReducerBaseoperator= (const HostDeviceReducerBase &rhs)=delete
 
ARCCORE_HOST_DEVICE void setValue (DataType v)
 
ARCCORE_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.
 
ARCCORE_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
 

Attributs privés

RunCommandm_command = nullptr
 
DataType m_identity
 
bool m_is_master_instance = false
 

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 302 du fichier 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 306 du fichier Reduce.h.

◆ HostDeviceReducerBase() [2/2]

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

Définition à la ligne 327 du fichier Reduce.h.

Documentation des fonctions membres

◆ _finalize()

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

Définition à la ligne 430 du fichier Reduce.h.

◆ _reduce()

◆ localValue()

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

Définition à la ligne 363 du fichier Reduce.h.

◆ setValue()

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

Définition à la ligne 359 du fichier 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 387 du fichier Reduce.h.

◆ m_atomic_value

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

Définition à la ligne 388 du fichier Reduce.h.

◆ m_command

Définition à la ligne 382 du fichier Reduce.h.

◆ m_grid_memory_info

Définition à la ligne 378 du fichier 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 377 du fichier Reduce.h.

Référencé par Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::_reduce().

◆ m_identity

template<typename DataType , typename ReduceFunctor >
DataType Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_identity
private

Définition à la ligne 392 du fichier Reduce.h.

◆ m_is_master_instance

template<typename DataType , typename ReduceFunctor >
bool Arcane::Accelerator::HostDeviceReducerBase< DataType, ReduceFunctor >::m_is_master_instance = false
private

Définition à la ligne 394 du fichier Reduce.h.

◆ m_local_value

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

Définition à la ligne 386 du fichier Reduce.h.

◆ m_memory_impl

Définition à la ligne 370 du fichier Reduce.h.


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