Arcane  v4.1.4.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::Accelerator::WorkGroupLoopRangeBase< 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 d'héritage de Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >:
+ Graphe de collaboration de Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >:

Types publics

using IndexType = IndexType_
 

Fonctions membres publiques

 WorkGroupLoopRangeBase (IndexType nb_element)
 
constexpr IndexType nbElement () const
 Nombre d'éléments à traiter.
 
constexpr Int32 blockSize () const
 Taille d'un block.
 
constexpr Int32 nbBlock () const
 Nombre de blocs.
 
ARCCORE_ACCELERATOR_EXPORT void setBlockSize (Int32 nb_block)
 Positionne la taille d'un bloc.
 
ARCCORE_ACCELERATOR_EXPORT void setBlockSize (const RunCommand &command)
 Positionne la taille d'un bloc en fonction de la commande command.
 

Fonctions membres privées

void _setNbBlock ()
 

Attributs privés

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

Description détaillée

template<typename IndexType_>
class Arcane::Accelerator::WorkGroupLoopRangeBase< 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 722 du fichier arccore/src/accelerator/arccore/accelerator/WorkGroupLoopRange.h.

Documentation des définitions de type membres

◆ IndexType

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

Documentation des constructeurs et destructeur

◆ WorkGroupLoopRangeBase()

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

Documentation des fonctions membres

◆ _setNbBlock()

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

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

◆ blockSize()

template<typename IndexType_>
Int32 Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >::blockSize ( ) const
inlineconstexpr

Taille d'un block.

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

◆ nbBlock()

template<typename IndexType_>
Int32 Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >::nbBlock ( ) const
inlineconstexpr

Nombre de blocs.

Retourne 0 si setBlockSize() n'a pas encore été appelé.

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

◆ nbElement()

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

Nombre d'éléments à traiter.

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

◆ setBlockSize() [1/2]

template<typename IndexType_>
ARCCORE_ACCELERATOR_EXPORT void Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >::setBlockSize ( const RunCommand & command)

Positionne la taille d'un bloc en fonction de la commande command.

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

Références Arcane::Accelerator::RunCommand::executionPolicy(), Arcane::Accelerator::isAcceleratorPolicy(), et setBlockSize().

+ Voici le graphe d'appel pour cette fonction :

◆ setBlockSize() [2/2]

template<typename IndexType_>
ARCCORE_ACCELERATOR_EXPORT void Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >::setBlockSize ( Int32 nb_block)

Positionne la taille d'un bloc.

nb_block doit être un multiple de 32.

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

Références ARCCORE_FATAL.

Référencé par setBlockSize().

+ Voici le graphe des appelants de cette fonction :

Documentation des données membres

◆ m_block_size

template<typename IndexType_>
Int32 Arcane::Accelerator::WorkGroupLoopRangeBase< IndexType_ >::m_block_size = 0
private

◆ m_nb_block

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

◆ m_nb_element

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

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