Intervalle d'itération d'une boucle utilisant le parallélisme hiérarchique. Plus de détails...
#include <arccore/accelerator/WorkGroupLoopRange.h>
Types publics | |
| using | IndexType = IndexType_ |
Fonctions membres publiques | |
| WorkGroupLoopRangeBase (IndexType nb_element) | |
| constexpr IndexType | nbElement () const |
| Nombre d'éléments à traiter. | |
| constexpr IndexType | blockSize () const |
| Taille d'un block. | |
| constexpr Int32 | nbBlock () const |
| Nombre de blocs. | |
| void | setBlockSize (IndexType nb_block) |
| Positionne la taille d'un bloc. | |
| void | setBlockSize (RunCommand &command) |
| Positionne la taille d'un bloc en fonction de la commande command. | |
Fonctions membres publiques statiques | |
| static constexpr bool | isCooperativeLaunch () |
Intervalle d'itération d'une boucle utilisant le parallélisme hiérarchique.
Cette classe est la classe de base pour WorkGroupLoopRange et CooperativeWorkGroupLoopRange.
Il faudra appeler setBlockSize() pour positionner la taille d'un bloc. Cela peut être fait par le développeur ou automatiquement au lancement de la commande.
L'intervalle d'itération contient nbElement() et est décomposé en nbBlock() WorkGroup contenant chacun blockSize() WorkItem.
Définition à la ligne 768 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
| using Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::IndexType = IndexType_ |
Définition à la ligne 772 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
|
inlineexplicit |
Définition à la ligne 777 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
|
inlineconstexpr |
Taille d'un block.
Définition à la ligne 789 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
|
inlinestaticconstexpr |
Définition à la ligne 784 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
|
inlineconstexpr |
Nombre de blocs.
Retourne 0 si setBlockSize() n'a pas encore été appelé.
Définition à la ligne 795 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
|
inlineconstexpr |
Nombre d'éléments à traiter.
Définition à la ligne 787 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.
| void Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::setBlockSize | ( | IndexType | nb_block | ) |
Positionne la taille d'un bloc.
nb_block doit être un multiple de 32.
Définition à la ligne 31 du fichier WorkGroupLoopRange.cc.
Références ARCCORE_FATAL.
Référencé par setBlockSize().
| void Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::setBlockSize | ( | RunCommand & | command | ) |
Positionne la taille d'un bloc en fonction de la commande command.
Définition à la ligne 44 du fichier WorkGroupLoopRange.cc.
Références Arcane::Accelerator::RunCommand::executionPolicy(), Arcane::Accelerator::isAcceleratorPolicy(), Arcane::ParallelLoopOptions::maxThread(), Arcane::Accelerator::RunCommand::parallelLoopOptions(), setBlockSize(), Arcane::ParallelLoopOptions::setGrainSize(), Arcane::Accelerator::RunCommand::setParallelLoopOptions(), et Arcane::Accelerator::Thread.