Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Accelerator::WorkGroupLoopRange

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

#include <arcane/accelerator/WorkGroupLoopRange.h>

+ Graphe de collaboration de Arcane::Accelerator::WorkGroupLoopRange:

Types publics

using LoopIndexType = WorkGroupLoopContext
 

Fonctions membres publiques

constexpr Int32 nbElement () const
 Nombre d'éléments à traiter.
 
constexpr Int32 groupSize () const
 Taille d'un groupe.
 
constexpr Int32 nbGroup () const
 Nombre de groupes.
 
constexpr Int32 lastGroupSize () const
 Nombre d'éléments du dernier groupe.
 
constexpr Int32 nbActiveItem (Int32 i) const
 Nombre d'éléments actifs pour le i-ème groupe.
 

Fonctions membres privées

 WorkGroupLoopRange (Int32 total_nb_element, Int32 nb_group, Int32 group_size)
 Créé un intervalle d'itération pour la commande command.
 

Attributs privés

Int32 m_total_size = 0
 
Int32 m_nb_group = 0
 
Int32 m_group_size = 0
 
Int32 m_last_group_size = 0
 

Amis

WorkGroupLoopRange makeWorkGroupLoopRange (RunCommand &command, Int32 nb_group, Int32 group_size)
 Créé un intervalle d'itération pour la commande command.
 
WorkGroupLoopRange makeWorkGroupLoopRange (RunCommand &command, Int32 nb_element, Int32 nb_group, Int32 group_size)
 Créé un intervalle d'itération pour la commande command.
 

Description détaillée

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

Avertissement
API en cours de définition. Ne pas utiliser en dehors de Arcane.

L'intervalle d'itération contient nbElement() et est décomposé en nbGroup() WorkGroup contenant chacun groupSize() WorkItem.

La création de ces instances se fait via les méthodes makeWorkGroupLoopRange().

Note
Sur accélérateur, La valeur de groupSize() 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 364 du fichier WorkGroupLoopRange.h.

Documentation des définitions de type membres

◆ LoopIndexType

Documentation des constructeurs et destructeur

◆ WorkGroupLoopRange()

Arcane::Accelerator::WorkGroupLoopRange::WorkGroupLoopRange ( Int32 total_nb_element,
Int32 nb_group,
Int32 group_size )
private

Créé un intervalle d'itération pour la commande command.

Le nombre total d'éléments est total_nb_element, réparti en nb_group de taille group_size. total_nb_element n'est pas nécessairement un multiple de block_size.

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

Documentation des fonctions membres

◆ groupSize()

Int32 Arcane::Accelerator::WorkGroupLoopRange::groupSize ( ) const
inlineconstexpr

Taille d'un groupe.

Définition à la ligne 396 du fichier WorkGroupLoopRange.h.

Référencé par Arcane::Accelerator::Impl::WorkGroupSequentialForHelper::apply().

+ Voici le graphe des appelants de cette fonction :

◆ lastGroupSize()

Int32 Arcane::Accelerator::WorkGroupLoopRange::lastGroupSize ( ) const
inlineconstexpr

Nombre d'éléments du dernier groupe.

Définition à la ligne 400 du fichier WorkGroupLoopRange.h.

◆ nbActiveItem()

Int32 Arcane::Accelerator::WorkGroupLoopRange::nbActiveItem ( Int32 i) const
inlineconstexpr

Nombre d'éléments actifs pour le i-ème groupe.

Définition à la ligne 402 du fichier WorkGroupLoopRange.h.

Référencé par Arcane::Accelerator::Impl::WorkGroupSequentialForHelper::apply().

+ Voici le graphe des appelants de cette fonction :

◆ nbElement()

Int32 Arcane::Accelerator::WorkGroupLoopRange::nbElement ( ) const
inlineconstexpr

Nombre d'éléments à traiter.

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

◆ nbGroup()

Int32 Arcane::Accelerator::WorkGroupLoopRange::nbGroup ( ) const
inlineconstexpr

Nombre de groupes.

Définition à la ligne 398 du fichier WorkGroupLoopRange.h.

Référencé par Arcane::Accelerator::arcaneSequentialFor(), et Arcane::Accelerator::arccoreParallelFor().

+ Voici le graphe des appelants de cette fonction :

Documentation des fonctions amies et associées

◆ makeWorkGroupLoopRange [1/2]

WorkGroupLoopRange makeWorkGroupLoopRange ( RunCommand & command,
Int32 nb_element,
Int32 nb_group,
Int32 group_size )
friend

Créé un intervalle d'itération pour la commande command.

Créé un intervalle contenant nb_element, répartis en nb_group de taille group_size. Si nb_group et group_size sont nuls, une taille de bloc par défaut sera choisie en fonction de l'accélérateur et nb_group sera calculé automatiquement.

◆ makeWorkGroupLoopRange [2/2]

WorkGroupLoopRange makeWorkGroupLoopRange ( RunCommand & command,
Int32 nb_group,
Int32 group_size )
friend

Créé un intervalle d'itération pour la commande command.

Créé un intervalle pour nb_group de taille group_size. Le nombre total d'éléments est donc égal à nb_group * group_size.

Documentation des données membres

◆ m_group_size

Int32 Arcane::Accelerator::WorkGroupLoopRange::m_group_size = 0
private

Définition à la ligne 426 du fichier WorkGroupLoopRange.h.

◆ m_last_group_size

Int32 Arcane::Accelerator::WorkGroupLoopRange::m_last_group_size = 0
private

Définition à la ligne 427 du fichier WorkGroupLoopRange.h.

◆ m_nb_group

Int32 Arcane::Accelerator::WorkGroupLoopRange::m_nb_group = 0
private

Définition à la ligne 425 du fichier WorkGroupLoopRange.h.

◆ m_total_size

Int32 Arcane::Accelerator::WorkGroupLoopRange::m_total_size = 0
private

Définition à la ligne 424 du fichier WorkGroupLoopRange.h.


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