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) | |
| __host__ __device__ | HostDeviceReducerBase (const HostDeviceReducerBase &rhs) |
| __host__ __device__ | HostDeviceReducerBase (HostDeviceReducerBase &&rhs)=delete |
| HostDeviceReducerBase & | operator= (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::IReduceMemoryImpl * | m_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 |
Fonctions membres privées | |
| __host__ __device__ DataType * | _getHostPinnedMemoryForReducedValue () |
| Zone mémoire qui contiendra le résultat de la réduction si cette dernière est réalisée sur le Device. | |
Attributs privés | |
| bool | m_is_master_instance = false |
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.
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 309 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
inline |
Définition à la ligne 313 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
inline |
Définition à la ligne 338 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
inlineprotected |
Définition à la ligne 430 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
inlineprivate |
Zone mémoire qui contiendra le résultat de la réduction si cette dernière est réalisée sur le Device.
Définition à la ligne 468 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
Référencé par _reduce().
Voici le graphe des appelants de cette fonction :
|
inlineprotected |
Effectue la réduction et récupère la valeur. ATTENTION: ne faire qu'une seule fois.
Définition à la ligne 400 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
Références _getHostPinnedMemoryForReducedValue(), ARCCORE_FATAL, et m_host_memory_for_reduced_value.
Voici le graphe d'appel pour cette fonction :
|
inline |
Définition à la ligne 373 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
inline |
Définition à la ligne 369 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
protected |
Définition à la ligne 390 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
mutableprotected |
Définition à la ligne 391 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
protected |
Définition à la ligne 387 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
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 386 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
Référencé par _reduce().
|
private |
Définition à la ligne 395 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
mutableprotected |
Définition à la ligne 389 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.
|
protected |
Définition à la ligne 380 du fichier arccore/src/accelerator/arccore/accelerator/Reduce.h.