Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::TaskFactory

Fabrique pour les tâches. Plus de détails...

#include <arcane/utils/ConcurrencyUtils.h>

+ Graphe de collaboration de Arcane::TaskFactory:

Fonctions membres publiques

 ARCANE_DEPRECATED_REASON ("Y2024: This method is internal to Arcane. " "Use TaskFactoryInternal::setImplementation() instead") static void _internalSetImplementation(ITaskImplementation *task_impl)
 

Fonctions membres publiques statiques

template<typename InstanceType >
static ITaskcreateTask (InstanceType *instance, void(InstanceType::*function)(const TaskContext &tc))
 Créé une tâche. Lors de l'exécution, la tâche appellera la méthode function via l'instance instance.
 
template<typename InstanceType >
static ITaskcreateTask (InstanceType *instance, void(InstanceType::*function)())
 Créé une tâche. Lors de l'exécution, la tâche appellera la méthode function via l'instance instance.
 
template<typename InstanceType >
static ITaskcreateChildTask (ITask *parent_task, InstanceType *instance, void(InstanceType::*function)(const TaskContext &tc))
 Créé une tâche fille.
 
template<typename InstanceType >
static ITaskcreateChildTask (ITask *parent_task, InstanceType *instance, void(InstanceType::*function)())
 Créé une tâche fille.
 
static void executeParallelFor (Integer begin, Integer size, const ParallelLoopOptions &options, IRangeFunctor *f)
 Exécute le fonctor f en concurrence.
 
static void executeParallelFor (Integer begin, Integer size, Integer block_size, IRangeFunctor *f)
 Exécute le fonctor f en concurrence.
 
static void executeParallelFor (Integer begin, Integer size, IRangeFunctor *f)
 Exécute le fonctor f en concurrence.
 
static void executeParallelFor (const ParallelFor1DLoopInfo &loop_info)
 Exécute la boucle loop_info en concurrence.
 
static void executeParallelFor (const ComplexForLoopRanges< 1 > &loop_ranges, const ParallelLoopOptions &options, IMDRangeFunctor< 1 > *functor)
 Exécute une boucle simple.
 
static void executeParallelFor (const ComplexForLoopRanges< 1 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 1 > *functor)
 Exécute une boucle simple.
 
static void executeParallelFor (const ComplexForLoopRanges< 2 > &loop_ranges, const ParallelLoopOptions &options, IMDRangeFunctor< 2 > *functor)
 Exécute une boucle 2D.
 
static void executeParallelFor (const ComplexForLoopRanges< 2 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 2 > *functor)
 Exécute une boucle 2D.
 
static void executeParallelFor (const ComplexForLoopRanges< 3 > &loop_ranges, const ParallelLoopOptions &options, IMDRangeFunctor< 3 > *functor)
 Exécute une boucle 3D.
 
static void executeParallelFor (const ComplexForLoopRanges< 3 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 3 > *functor)
 Exécute une boucle 3D.
 
static void executeParallelFor (const ComplexForLoopRanges< 4 > &loop_ranges, const ParallelLoopOptions &options, IMDRangeFunctor< 4 > *functor)
 Exécute une boucle 4D.
 
static void executeParallelFor (const ComplexForLoopRanges< 4 > &loop_ranges, const ForLoopRunInfo &run_info, IMDRangeFunctor< 4 > *functor)
 Exécute une boucle 4D.
 
static Int32 nbAllowedThread ()
 Nombre de threads utilisés au maximum pour gérer les tâches.
 
static Int32 currentTaskThreadIndex ()
 Indice (entre 0 et nbAllowedThread()-1) du thread exécutant la tâche actuelle.
 
static Int32 currentTaskIndex ()
 Indice (entre 0 et nbAllowedThread()-1) de la tâche actuelle.
 
static void setDefaultParallelLoopOptions (const ParallelLoopOptions &v)
 Positionne les valeurs par défaut d'exécution d'une boucle parallèle.
 
static const ParallelLoopOptionsdefaultParallelLoopOptions ()
 Valeurs par défaut d'exécution d'une boucle parallèle.
 
static bool isActive ()
 Indique si les tâches sont actives. Les tâches sont actives si une implémentation est disponible et si le nombre de threads demandé est strictement supérieur à 1.
 
static void printInfos (std::ostream &o)
 Affiche les informations sur l'implémentation.
 
static IObservablecreateThreadObservable ()
 Observable appelé lors de la création d'un thread pour une tâche.
 
static IObservabledestroyThreadObservable ()
 Observable appelé lors de la destruction d'un thread pour une tâche.
 
static void terminate ()
 Indique qu'on n'utilisera plus les threads. Cette méthode ne doit pas être appelée lorsque des tâches sont actives.
 
static void setVerboseLevel (Integer v)
 Positionne le niveau de verbosité (0 pour pas d'affichage qui est le défaut)
 
static Integer verboseLevel ()
 Niveau de verbosité
 

Attributs privés

friend TaskFactoryInternal
 

Attributs privés statiques

static ITaskImplementationm_impl = &NullTaskImplementation::singleton
 
static Int32 m_verbose_level = 0
 
static ParallelLoopOptions m_default_loop_options
 

Description détaillée

Fabrique pour les tâches.

Définition à la ligne 328 du fichier ConcurrencyUtils.h.

Documentation des fonctions membres

◆ ARCANE_DEPRECATED_REASON()

Arcane::TaskFactory::ARCANE_DEPRECATED_REASON ( "Y2024: This method is internal to Arcane. " "Use TaskFactoryInternal::setImplementation() instead"  )

◆ createChildTask() [1/2]

template<typename InstanceType >
static ITask * Arcane::TaskFactory::createChildTask ( ITask parent_task,
InstanceType *  instance,
void(InstanceType::*)()  function 
)
inlinestatic

Créé une tâche fille.

Lors de l'exécution, la tâche appellera la méthode function via l'instance instance.

Définition à la ligne 383 du fichier ConcurrencyUtils.h.

Références ARCANE_CHECK_POINTER.

◆ createChildTask() [2/2]

template<typename InstanceType >
static ITask * Arcane::TaskFactory::createChildTask ( ITask parent_task,
InstanceType *  instance,
void(InstanceType::*)(const TaskContext &tc function 
)
inlinestatic

Créé une tâche fille.

Lors de l'exécution, la tâche appellera la méthode function via l'instance instance.

Définition à la ligne 369 du fichier ConcurrencyUtils.h.

Références ARCANE_CHECK_POINTER.

◆ createTask() [1/2]

template<typename InstanceType >
static ITask * Arcane::TaskFactory::createTask ( InstanceType *  instance,
void(InstanceType::*)()  function 
)
inlinestatic

Créé une tâche. Lors de l'exécution, la tâche appellera la méthode function via l'instance instance.

Définition à la ligne 356 du fichier ConcurrencyUtils.h.

◆ createTask() [2/2]

template<typename InstanceType >
static ITask * Arcane::TaskFactory::createTask ( InstanceType *  instance,
void(InstanceType::*)(const TaskContext &tc function 
)
inlinestatic

Créé une tâche. Lors de l'exécution, la tâche appellera la méthode function via l'instance instance.

Définition à la ligne 344 du fichier ConcurrencyUtils.h.

◆ createThreadObservable()

IObservable * Arcane::TaskFactory::createThreadObservable ( )
static

Observable appelé lors de la création d'un thread pour une tâche.

Avertissement
L'instance de l'observable est créée lors du premier appel à cette méthode. Elle n'est donc pas thread-safe. De même, la modification de l'observable (ajout/suppression d'observateur) n'est pas thread-safe.

Définition à la ligne 240 du fichier ConcurrencyUtils.cc.

◆ currentTaskIndex()

static Int32 Arcane::TaskFactory::currentTaskIndex ( )
inlinestatic

Indice (entre 0 et nbAllowedThread()-1) de la tâche actuelle.

Cet indice est le même que currentTaskThreadIndex() sauf dans le cas où on se trouve dans un executeParallelFor() avec un partitionnement déterministe (ParallelLoopOptions::Partitioner::Deterministic). Dans ce dernier cas, le numéro de la tâche est assigné de manière déterministe qui ne dépend que du nombre de threads alloués pour la tâche et de ParallelLoopOptions::grainSize().

Si le thread courant n'exécute pas une tâche associé à cette implémentation, retourne (-1).

Définition à la ligne 509 du fichier ConcurrencyUtils.h.

◆ currentTaskThreadIndex()

static Int32 Arcane::TaskFactory::currentTaskThreadIndex ( )
inlinestatic

Indice (entre 0 et nbAllowedThread()-1) du thread exécutant la tâche actuelle.

Pour des raisons de performance, il est préférable d'appeler cette méthode le moins possible. L'idéal est de ne le faire qu'au début de l'exécution de la tâche et ensuite d'utiliser la valeur retournée.

Définition à la ligne 491 du fichier ConcurrencyUtils.h.

◆ defaultParallelLoopOptions()

static const ParallelLoopOptions & Arcane::TaskFactory::defaultParallelLoopOptions ( )
inlinestatic

Valeurs par défaut d'exécution d'une boucle parallèle.

Définition à la ligne 523 du fichier ConcurrencyUtils.h.

Référencé par Arcane::TBBTaskImplementation::_executeMDParallelFor(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), et Arcane::TBBTaskImplementation::initialize().

◆ destroyThreadObservable()

IObservable * Arcane::TaskFactory::destroyThreadObservable ( )
static

Observable appelé lors de la destruction d'un thread pour une tâche.

Avertissement
L'instance de l'observable est créée lors du premier appel à cette méthode. Elle n'est donc pas thread-safe. De même, la modification de l'observable (ajout/suppression d'observateur) n'est pas thread-safe.

Définition à la ligne 250 du fichier ConcurrencyUtils.cc.

◆ executeParallelFor() [1/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 1 > &  loop_ranges,
const ForLoopRunInfo run_info,
IMDRangeFunctor< 1 > *  functor 
)
inlinestatic

Exécute une boucle simple.

Définition à la ligne 423 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [2/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 1 > &  loop_ranges,
const ParallelLoopOptions options,
IMDRangeFunctor< 1 > *  functor 
)
inlinestatic

Exécute une boucle simple.

Définition à la ligne 415 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [3/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 2 > &  loop_ranges,
const ForLoopRunInfo run_info,
IMDRangeFunctor< 2 > *  functor 
)
inlinestatic

Exécute une boucle 2D.

Définition à la ligne 439 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [4/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 2 > &  loop_ranges,
const ParallelLoopOptions options,
IMDRangeFunctor< 2 > *  functor 
)
inlinestatic

Exécute une boucle 2D.

Définition à la ligne 431 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [5/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 3 > &  loop_ranges,
const ForLoopRunInfo run_info,
IMDRangeFunctor< 3 > *  functor 
)
inlinestatic

Exécute une boucle 3D.

Définition à la ligne 455 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [6/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 3 > &  loop_ranges,
const ParallelLoopOptions options,
IMDRangeFunctor< 3 > *  functor 
)
inlinestatic

Exécute une boucle 3D.

Définition à la ligne 447 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [7/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 4 > &  loop_ranges,
const ForLoopRunInfo run_info,
IMDRangeFunctor< 4 > *  functor 
)
inlinestatic

Exécute une boucle 4D.

Définition à la ligne 471 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [8/12]

static void Arcane::TaskFactory::executeParallelFor ( const ComplexForLoopRanges< 4 > &  loop_ranges,
const ParallelLoopOptions options,
IMDRangeFunctor< 4 > *  functor 
)
inlinestatic

Exécute une boucle 4D.

Définition à la ligne 463 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [9/12]

static void Arcane::TaskFactory::executeParallelFor ( const ParallelFor1DLoopInfo loop_info)
inlinestatic

Exécute la boucle loop_info en concurrence.

Définition à la ligne 409 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [10/12]

◆ executeParallelFor() [11/12]

static void Arcane::TaskFactory::executeParallelFor ( Integer  begin,
Integer  size,
Integer  block_size,
IRangeFunctor f 
)
inlinestatic

Exécute le fonctor f en concurrence.

Définition à la ligne 397 du fichier ConcurrencyUtils.h.

◆ executeParallelFor() [12/12]

static void Arcane::TaskFactory::executeParallelFor ( Integer  begin,
Integer  size,
IRangeFunctor f 
)
inlinestatic

Exécute le fonctor f en concurrence.

Définition à la ligne 403 du fichier ConcurrencyUtils.h.

◆ isActive()

static bool Arcane::TaskFactory::isActive ( )
inlinestatic

Indique si les tâches sont actives. Les tâches sont actives si une implémentation est disponible et si le nombre de threads demandé est strictement supérieur à 1.

Définition à la ligne 535 du fichier ConcurrencyUtils.h.

Référencé par Arcane::Accelerator::AcceleratorRuntimeInitialisationInfo::executionPolicy(), et Arcane::Application::initialize().

◆ nbAllowedThread()

static Int32 Arcane::TaskFactory::nbAllowedThread ( )
inlinestatic

Nombre de threads utilisés au maximum pour gérer les tâches.

Définition à la ligne 479 du fichier ConcurrencyUtils.h.

Référencé par Arcane::Application::initialize().

◆ printInfos()

static void Arcane::TaskFactory::printInfos ( std::ostream &  o)
inlinestatic

Affiche les informations sur l'implémentation.

Les informations sont par exemple le numéro de version ou le nom de l'implémentation.

Définition à la ligne 546 du fichier ConcurrencyUtils.h.

Référencé par Arcane::Application::initialize().

◆ setDefaultParallelLoopOptions()

static void Arcane::TaskFactory::setDefaultParallelLoopOptions ( const ParallelLoopOptions v)
inlinestatic

Positionne les valeurs par défaut d'exécution d'une boucle parallèle.

Définition à la ligne 517 du fichier ConcurrencyUtils.h.

Référencé par Arcane::ArcaneLauncher::init(), et Arcane::TBBTaskImplementation::initialize().

◆ setVerboseLevel()

static void Arcane::TaskFactory::setVerboseLevel ( Integer  v)
inlinestatic

Positionne le niveau de verbosité (0 pour pas d'affichage qui est le défaut)

Définition à la ligne 583 du fichier ConcurrencyUtils.h.

Référencé par Arcane::Application::build().

◆ terminate()

void Arcane::TaskFactory::terminate ( )
static

Indique qu'on n'utilisera plus les threads. Cette méthode ne doit pas être appelée lorsque des tâches sont actives.

Définition à la ligne 261 du fichier ConcurrencyUtils.cc.

Référencé par Arcane::Application::~Application().

◆ verboseLevel()

static Integer Arcane::TaskFactory::verboseLevel ( )
inlinestatic

Niveau de verbosité

Définition à la ligne 586 du fichier ConcurrencyUtils.h.

Référencé par Arcane::TBBTaskImplementation::_executeMDParallelFor().

Documentation des données membres

◆ m_default_loop_options

ParallelLoopOptions Arcane::TaskFactory::m_default_loop_options
staticprivate

Définition à la ligne 599 du fichier ConcurrencyUtils.h.

◆ m_impl

ITaskImplementation * Arcane::TaskFactory::m_impl = &NullTaskImplementation::singleton
staticprivate

Définition à la ligne 597 du fichier ConcurrencyUtils.h.

◆ m_verbose_level

Int32 Arcane::TaskFactory::m_verbose_level = 0
staticprivate

Définition à la ligne 598 du fichier ConcurrencyUtils.h.

◆ TaskFactoryInternal

friend Arcane::TaskFactory::TaskFactoryInternal
private

Définition à la ligne 330 du fichier ConcurrencyUtils.h.


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