Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::TBBTaskImplementation
+ Graphe d'héritage de Arcane::TBBTaskImplementation:
+ Graphe de collaboration de Arcane::TBBTaskImplementation:

Classes

class  Impl
 
class  MDParallelForExecute
 
class  ParallelForExecute
 
class  TaskInfoLockGuard
 Classe pour positionner TaskThreadInfo::taskIndex(). Plus de détails...
 
class  TaskThreadInfo
 

Fonctions membres publiques

void build ()
 
void initialize (Int32 nb_thread) override
 
void terminate () override
 
ITaskcreateRootTask (ITaskFunctor *f) override
 Créé une tâche racine. L'implémentation doit recopier la valeur de f qui est soit un TaskFunctor, soit un TaskFunctorWithContext.
 
void executeParallelFor (Int32 begin, Int32 size, const ParallelLoopOptions &options, IRangeFunctor *f) final
 Exécute le fonctor f en concurrence.
 
void executeParallelFor (Int32 begin, Int32 size, Integer grain_size, IRangeFunctor *f) final
 Exécute le fonctor f en concurrence.
 
void executeParallelFor (Int32 begin, Int32 size, IRangeFunctor *f) final
 Exécute le fonctor f en concurrence.
 
void executeParallelFor (const ParallelFor1DLoopInfo &loop_info) override
 Exécute la boucle loop_info en concurrence.
 
void executeParallelFor (const ComplexForLoopRanges< 1 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 1 > *functor) final
 Exécute une boucle 1D en concurrence.
 
void executeParallelFor (const ComplexForLoopRanges< 2 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 2 > *functor) final
 Exécute une boucle 2D en concurrence.
 
void executeParallelFor (const ComplexForLoopRanges< 3 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 3 > *functor) final
 Exécute une boucle 3D en concurrence.
 
void executeParallelFor (const ComplexForLoopRanges< 4 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 4 > *functor) final
 Exécute une boucle 4D en concurrence.
 
bool isActive () const final
 Indique si l'implémentation est active.
 
Int32 currentTaskThreadIndex () const final
 Implémentation de TaskFactory::currentTaskThreadIndex()
 
Int32 currentTaskIndex () const final
 Implémentation de TaskFactory::currentTaskIndex()
 
void printInfos (std::ostream &o) const final
 Affiche les informations sur le runtime utilisé
 
TaskThreadInfocurrentTaskThreadInfo () const
 Instance de TaskThreadInfo associé au thread courant.
 
- Fonctions membres publiques hérités de Arcane::ITaskImplementation
Int32 nbAllowedThread () const
 Nombre de threads utilisés au maximum pour gérer les tâches.
 

Fonctions membres privées

template<int RankValue>
void _executeMDParallelFor (const ComplexForLoopRanges< RankValue > &loop_ranges, IMDRangeFunctor< RankValue > *functor, const ForLoopRunInfo &run_info)
 Exécution d'une boucle N-dimensions.
 
void _executeParallelFor (const ParallelFor1DLoopInfo &loop_info)
 

Attributs privés

bool m_is_active = false
 
Implm_p = nullptr
 

Description détaillée

Définition à la ligne 343 du fichier TBBTaskImplementation.cc.

Documentation des constructeurs et destructeur

◆ ~TBBTaskImplementation()

Arcane::TBBTaskImplementation::~TBBTaskImplementation ( )
override

Définition à la ligne 1033 du fichier TBBTaskImplementation.cc.

Documentation des fonctions membres

◆ _executeMDParallelFor()

template<int RankValue>
void Arcane::TBBTaskImplementation::_executeMDParallelFor ( const ComplexForLoopRanges< RankValue > & loop_ranges,
IMDRangeFunctor< RankValue > * functor,
const ForLoopRunInfo & run_info )
private

Exécution d'une boucle N-dimensions.

Avertissement
L'implémentation actuelle ne tient pas compte de options pour les boucles autres que une dimension.

Définition à la ligne 1143 du fichier TBBTaskImplementation.cc.

Références Arcane::TaskFactory::defaultParallelLoopOptions(), Arcane::ParallelLoopOptions::grainSize(), Arcane::makeLoopRanges(), Arcane::ParallelLoopOptions::maxThread(), Arcane::ParallelLoopOptions::mergeUnsetValues(), et Arcane::TaskFactory::verboseLevel().

Référencé par executeParallelFor(), executeParallelFor(), executeParallelFor(), et executeParallelFor().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ _executeParallelFor()

void Arcane::TBBTaskImplementation::_executeParallelFor ( const ParallelFor1DLoopInfo & loop_info)
private

Définition à la ligne 1081 du fichier TBBTaskImplementation.cc.

◆ build()

void Arcane::TBBTaskImplementation::build ( )
inline

Définition à la ligne 411 du fichier TBBTaskImplementation.cc.

◆ createRootTask()

ITask * Arcane::TBBTaskImplementation::createRootTask ( ITaskFunctor * f)
inlineoverridevirtual

Créé une tâche racine. L'implémentation doit recopier la valeur de f qui est soit un TaskFunctor, soit un TaskFunctorWithContext.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 415 du fichier TBBTaskImplementation.cc.

◆ currentTaskIndex()

Int32 Arcane::TBBTaskImplementation::currentTaskIndex ( ) const
finalvirtual

Implémentation de TaskFactory::currentTaskIndex()

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1240 du fichier TBBTaskImplementation.cc.

Références currentTaskThreadIndex(), et currentTaskThreadInfo().

+ Voici le graphe d'appel pour cette fonction :

◆ currentTaskThreadIndex()

Int32 Arcane::TBBTaskImplementation::currentTaskThreadIndex ( ) const
inlinefinalvirtual

Implémentation de TaskFactory::currentTaskThreadIndex()

Implémente Arcane::ITaskImplementation.

Définition à la ligne 459 du fichier TBBTaskImplementation.cc.

Références Arcane::ITaskImplementation::nbAllowedThread().

Référencé par currentTaskIndex(), et currentTaskThreadInfo().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ currentTaskThreadInfo()

TBBTaskImplementation::TaskThreadInfo * Arcane::TBBTaskImplementation::currentTaskThreadInfo ( ) const

Instance de TaskThreadInfo associé au thread courant.

Peut-être nul si le thread courant n'est pas associé à un thread TBB ou si en dehors d'une exécution d'une tâche ou d'une boucle parallèle.

Définition à la ligne 1228 du fichier TBBTaskImplementation.cc.

Références currentTaskThreadIndex().

Référencé par currentTaskIndex().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ executeParallelFor() [1/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( const ComplexForLoopRanges< 1 > & loop_ranges,
const ForLoopRunInfo & run_info,
IMDRangeFunctor< 1 > * functor )
inlinefinalvirtual

Exécute une boucle 1D en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 429 du fichier TBBTaskImplementation.cc.

Références _executeMDParallelFor().

+ Voici le graphe d'appel pour cette fonction :

◆ executeParallelFor() [2/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( const ComplexForLoopRanges< 2 > & loop_ranges,
const ForLoopRunInfo & run_info,
IMDRangeFunctor< 2 > * functor )
inlinefinalvirtual

Exécute une boucle 2D en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 435 du fichier TBBTaskImplementation.cc.

Références _executeMDParallelFor().

+ Voici le graphe d'appel pour cette fonction :

◆ executeParallelFor() [3/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( const ComplexForLoopRanges< 3 > & loop_ranges,
const ForLoopRunInfo & run_info,
IMDRangeFunctor< 3 > * functor )
inlinefinalvirtual

Exécute une boucle 3D en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 441 du fichier TBBTaskImplementation.cc.

Références _executeMDParallelFor().

+ Voici le graphe d'appel pour cette fonction :

◆ executeParallelFor() [4/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( const ComplexForLoopRanges< 4 > & loop_ranges,
const ForLoopRunInfo & run_info,
IMDRangeFunctor< 4 > * functor )
inlinefinalvirtual

Exécute une boucle 4D en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 447 du fichier TBBTaskImplementation.cc.

Références _executeMDParallelFor().

+ Voici le graphe d'appel pour cette fonction :

◆ executeParallelFor() [5/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( const ParallelFor1DLoopInfo & loop_info)
overridevirtual

Exécute la boucle loop_info en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1129 du fichier TBBTaskImplementation.cc.

◆ executeParallelFor() [6/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( Int32 begin,
Int32 size,
const ParallelLoopOptions & options,
IRangeFunctor * f )
finalvirtual

Exécute le fonctor f en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1219 du fichier TBBTaskImplementation.cc.

Références executeParallelFor().

Référencé par executeParallelFor(), executeParallelFor(), et executeParallelFor().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ executeParallelFor() [7/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( Int32 begin,
Int32 size,
Integer block_size,
IRangeFunctor * f )
finalvirtual

Exécute le fonctor f en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1207 du fichier TBBTaskImplementation.cc.

Références Arcane::TaskFactory::defaultParallelLoopOptions(), executeParallelFor(), et Arcane::ParallelLoopOptions::setGrainSize().

+ Voici le graphe d'appel pour cette fonction :

◆ executeParallelFor() [8/8]

void Arcane::TBBTaskImplementation::executeParallelFor ( Int32 begin,
Int32 size,
IRangeFunctor * f )
inlinefinalvirtual

Exécute le fonctor f en concurrence.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 423 du fichier TBBTaskImplementation.cc.

Références Arcane::TaskFactory::defaultParallelLoopOptions(), et executeParallelFor().

+ Voici le graphe d'appel pour cette fonction :

◆ initialize()

void Arcane::TBBTaskImplementation::initialize ( Int32 nb_thread)
overridevirtual

. Initialise l'implémentation avec au maximum nb_thread. Si nb_thread vaut 0, l'implémentation peut choisir le nombre de thread automatiquement. Cette méthode est interne à Arcane et ne doit être appelée que lors de l'initialisation de l'exécution.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1042 du fichier TBBTaskImplementation.cc.

Références Arcane::TaskFactory::defaultParallelLoopOptions(), Arcane::ITaskImplementation::nbAllowedThread(), Arcane::TaskFactory::setDefaultParallelLoopOptions(), et Arcane::ParallelLoopOptions::setMaxThread().

+ Voici le graphe d'appel pour cette fonction :

◆ isActive()

bool Arcane::TBBTaskImplementation::isActive ( ) const
inlinefinalvirtual

Indique si l'implémentation est active.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 454 du fichier TBBTaskImplementation.cc.

◆ printInfos()

void Arcane::TBBTaskImplementation::printInfos ( std::ostream & o) const
finalvirtual

Affiche les informations sur le runtime utilisé

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1069 du fichier TBBTaskImplementation.cc.

◆ terminate()

void Arcane::TBBTaskImplementation::terminate ( )
overridevirtual

. Termine l'utilisation de l'implémentation. Cette méthode doit être appelée en fin de calcul uniquement.

Implémente Arcane::ITaskImplementation.

Définition à la ligne 1060 du fichier TBBTaskImplementation.cc.

Documentation des données membres

◆ m_is_active

bool Arcane::TBBTaskImplementation::m_is_active = false
private

Définition à la ligne 480 du fichier TBBTaskImplementation.cc.

◆ m_p

Impl* Arcane::TBBTaskImplementation::m_p = nullptr
private

Définition à la ligne 481 du fichier TBBTaskImplementation.cc.


La documentation de cette classe a été générée à partir du fichier suivant :