Classes | |
class | Impl |
class | MDParallelForExecute |
class | ParallelForExecute |
class | TaskInfoLockGuard |
Classe pour positionner TaskThreadInfo::taskIndex(). Plus de détails... | |
class | TaskThreadInfo |
Fonctions membres publiques | |
TBBTaskImplementation (const ServiceBuildInfo &sbi) | |
void | build () |
void | initialize (Int32 nb_thread) override |
void | terminate () override |
ITask * | createRootTask (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 |
void | executeParallelFor (Int32 begin, Int32 size, Integer grain_size, IRangeFunctor *f) final |
void | executeParallelFor (Int32 begin, Int32 size, IRangeFunctor *f) final |
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 | nbAllowedThread () const final |
Nombre de threads utilisés au maximum pour gérer les tâches. | |
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é | |
TaskThreadInfo * | currentTaskThreadInfo () const |
Instance de TaskThreadInfo associé au thread courant. | |
Fonctions membres publiques hérités de Arcane::ITaskImplementation | |
virtual void | executeParallelFor (Integer begin, Integer size, const ParallelLoopOptions &options, IRangeFunctor *f)=0 |
Exécute le fonctor f en concurrence. | |
virtual void | executeParallelFor (Integer begin, Integer size, Integer block_size, IRangeFunctor *f)=0 |
Exécute le fonctor f en concurrence. | |
virtual void | executeParallelFor (Integer begin, Integer size, IRangeFunctor *f)=0 |
Exécute le fonctor f en concurrence. | |
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 |
Impl * | m_p = nullptr |
Définition à la ligne 381 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 431 du fichier TBBTaskImplementation.cc.
|
override |
Définition à la ligne 1062 du fichier TBBTaskImplementation.cc.
|
private |
Exécution d'une boucle N-dimensions.
Définition à la ligne 1186 du fichier TBBTaskImplementation.cc.
Références Arcane::TaskFactory::defaultParallelLoopOptions(), Arcane::ParallelLoopOptions::grainSize(), Arcane::TBBTaskImplementation::Impl::m_sub_arena_list, Arcane::makeLoopRanges(), Arcane::ParallelLoopOptions::maxThread(), Arcane::CheckedConvert::toInteger(), et Arcane::TaskFactory::verboseLevel().
|
private |
Définition à la ligne 1125 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 437 du fichier TBBTaskImplementation.cc.
|
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 441 du fichier TBBTaskImplementation.cc.
|
finalvirtual |
Implémentation de TaskFactory::currentTaskIndex()
Implémente Arcane::ITaskImplementation.
Définition à la ligne 1284 du fichier TBBTaskImplementation.cc.
Références currentTaskThreadIndex(), et currentTaskThreadInfo().
|
inlinefinalvirtual |
Implémentation de TaskFactory::currentTaskThreadIndex()
Implémente Arcane::ITaskImplementation.
Définition à la ligne 491 du fichier TBBTaskImplementation.cc.
Références nbAllowedThread().
Référencé par currentTaskIndex(), et 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 1272 du fichier TBBTaskImplementation.cc.
Références currentTaskThreadIndex().
Référencé par currentTaskIndex().
|
inlinefinalvirtual |
Exécute une boucle 1D en concurrence.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 459 du fichier TBBTaskImplementation.cc.
|
inlinefinalvirtual |
Exécute une boucle 2D en concurrence.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 465 du fichier TBBTaskImplementation.cc.
|
inlinefinalvirtual |
Exécute une boucle 3D en concurrence.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 471 du fichier TBBTaskImplementation.cc.
|
inlinefinalvirtual |
Exécute une boucle 4D en concurrence.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 477 du fichier TBBTaskImplementation.cc.
|
overridevirtual |
Exécute la boucle loop_info en concurrence.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 1172 du fichier TBBTaskImplementation.cc.
|
inlinefinal |
Définition à la ligne 453 du fichier TBBTaskImplementation.cc.
|
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 1071 du fichier TBBTaskImplementation.cc.
Références Arcane::TaskFactory::defaultParallelLoopOptions(), nbAllowedThread(), et Arcane::TaskFactory::setDefaultParallelLoopOptions().
|
inlinefinalvirtual |
Indique si l'implémentation est active.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 484 du fichier TBBTaskImplementation.cc.
|
finalvirtual |
Nombre de threads utilisés au maximum pour gérer les tâches.
Implémente Arcane::ITaskImplementation.
Définition à la ligne 1098 du fichier TBBTaskImplementation.cc.
Référencé par currentTaskThreadIndex(), et initialize().
|
finalvirtual |
Affiche les informations sur le runtime utilisé
Implémente Arcane::ITaskImplementation.
Définition à la ligne 1107 du fichier TBBTaskImplementation.cc.
|
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 1089 du fichier TBBTaskImplementation.cc.
Définition à la ligne 512 du fichier TBBTaskImplementation.cc.
Définition à la ligne 513 du fichier TBBTaskImplementation.cc.