Arcane  v4.1.4.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >

Intervalle d'itération d'une boucle utilisant le parallélisme hiérarchique. Plus de détails...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h>

+ Graphe de collaboration de Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >:

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.
 
ARCCORE_ACCELERATOR_EXPORT void setBlockSize (IndexType nb_block)
 Positionne la taille d'un bloc.
 
ARCCORE_ACCELERATOR_EXPORT void setBlockSize (RunCommand &command)
 Positionne la taille d'un bloc en fonction de la commande command.
 

Fonctions membres publiques statiques

static constexpr bool isCooperativeLaunch ()
 

Fonctions membres privées

void _setNbBlock ()
 

Attributs privés

IndexType m_nb_element = 0
 
IndexType m_block_size = 0
 
Int32 m_nb_block = 0
 

Description détaillée

template<bool IsCooperativeLaunch, typename IndexType_>
class Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >

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.

Note
Sur accélérateur, La valeur de blockSize() est dépendante de l'architecture de l'accélérateur. Afin d'être portable, cette valeur doit être comprise entre 32 et 1024 et être un multiple de 32.

Définition à la ligne 768 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.

Documentation des définitions de type membres

◆ IndexType

template<bool IsCooperativeLaunch, typename IndexType_>
using Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::IndexType = IndexType_

Documentation des constructeurs et destructeur

◆ WorkGroupLoopRangeBase()

template<bool IsCooperativeLaunch, typename IndexType_>
Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::WorkGroupLoopRangeBase ( IndexType nb_element)
inlineexplicit

Documentation des fonctions membres

◆ _setNbBlock()

template<bool IsCooperativeLaunch, typename IndexType_>
void Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::_setNbBlock ( )
private

Définition à la ligne 79 du fichier WorkGroupLoopRange.cc.

◆ blockSize()

template<bool IsCooperativeLaunch, typename IndexType_>
IndexType Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::blockSize ( ) const
inlineconstexpr

Taille d'un block.

Définition à la ligne 789 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.

◆ isCooperativeLaunch()

template<bool IsCooperativeLaunch, typename IndexType_>
static constexpr bool Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::isCooperativeLaunch ( )
inlinestaticconstexpr

◆ nbBlock()

template<bool IsCooperativeLaunch, typename IndexType_>
Int32 Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::nbBlock ( ) const
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.

◆ nbElement()

template<bool IsCooperativeLaunch, typename IndexType_>
IndexType Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::nbElement ( ) const
inlineconstexpr

Nombre d'éléments à traiter.

Définition à la ligne 787 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.

◆ setBlockSize() [1/2]

template<bool IsCooperativeLaunch, typename IndexType_>
ARCCORE_ACCELERATOR_EXPORT 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().

+ Voici le graphe des appelants de cette fonction :

◆ setBlockSize() [2/2]

template<bool IsCooperativeLaunch, typename IndexType_>
ARCCORE_ACCELERATOR_EXPORT 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.

+ Voici le graphe d'appel pour cette fonction :

Documentation des données membres

◆ m_block_size

template<bool IsCooperativeLaunch, typename IndexType_>
IndexType Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::m_block_size = 0
private

◆ m_nb_block

template<bool IsCooperativeLaunch, typename IndexType_>
Int32 Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::m_nb_block = 0
private

◆ m_nb_element

template<bool IsCooperativeLaunch, typename IndexType_>
IndexType Arcane::Accelerator::WorkGroupLoopRangeBase< IsCooperativeLaunch, IndexType_ >::m_nb_element = 0
private

La documentation de cette classe a été générée à partir des fichiers suivants :