Fabrique pour les tâches. Plus de détails...
#include <arcane/utils/ConcurrencyUtils.h>
Fonctions membres publiques statiques | |
template<typename InstanceType > | |
static ITask * | createTask (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 ITask * | createTask (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 ITask * | createChildTask (ITask *parent_task, InstanceType *instance, void(InstanceType::*function)(const TaskContext &tc)) |
Créé une tâche fille. | |
template<typename InstanceType > | |
static ITask * | createChildTask (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< 2 > &loop_ranges, const ParallelLoopOptions &options, 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< 4 > &loop_ranges, const ParallelLoopOptions &options, 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 ParallelLoopOptions & | defaultParallelLoopOptions () |
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 IObservable * | createThreadObservable () |
Observable appelé lors de la création d'un thread pour une tâche. | |
static IObservable * | destroyThreadObservable () |
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é | |
static void | _internalSetImplementation (ITaskImplementation *task_impl) |
Attributs privés statiques | |
static ITaskImplementation * | m_impl = &NullTaskImplementation::singleton |
static IObservable * | m_created_thread_observable = 0 |
static IObservable * | m_destroyed_thread_observable = 0 |
static Int32 | m_verbose_level = 0 |
static ParallelLoopOptions | m_default_loop_options |
Fabrique pour les tâches.
Définition à la ligne 274 du fichier ConcurrencyUtils.h.
|
static |
Définition à la ligne 166 du fichier ConcurrencyUtils.cc.
Références ARCANE_FATAL.
Référencé par Arcane::Application::build().
|
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 326 du fichier ConcurrencyUtils.h.
Références ARCANE_CHECK_POINTER.
|
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 312 du fichier ConcurrencyUtils.h.
Références ARCANE_CHECK_POINTER.
|
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 299 du fichier ConcurrencyUtils.h.
|
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 287 du fichier ConcurrencyUtils.h.
|
static |
Observable appelé lors de la création d'un thread pour une tâche.
Définition à la ligne 177 du fichier ConcurrencyUtils.cc.
|
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 420 du fichier ConcurrencyUtils.h.
|
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 402 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Valeurs par défaut d'exécution d'une boucle parallèle.
Définition à la ligne 434 du fichier ConcurrencyUtils.h.
Référencé par Arcane::TBBTaskImplementation::_executeMDParallelFor(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), et Arcane::TBBTaskImplementation::initialize().
|
static |
Observable appelé lors de la destruction d'un thread pour une tâche.
Définition à la ligne 188 du fichier ConcurrencyUtils.cc.
|
inlinestatic |
Exécute une boucle simple.
Définition à la ligne 358 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Exécute une boucle 2D.
Définition à la ligne 366 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Exécute une boucle 3D.
Définition à la ligne 374 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Exécute une boucle 4D.
Définition à la ligne 382 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Exécute la boucle loop_info en concurrence.
Définition à la ligne 352 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Exécute le fonctor f en concurrence.
Définition à la ligne 334 du fichier ConcurrencyUtils.h.
Référencé par Arcane::arcaneParallelFor(), Arcane::arcaneParallelFor(), Arcane::arcaneParallelFor(), Arcane::arcaneParallelFor(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForeach(), Arcane::arcaneParallelForVa(), Arcane::Parallel::For(), Arcane::Parallel::For(), Arcane::Parallel::For(), Arcane::Parallel::For(), Arcane::Parallel::For(), Arcane::Parallel::For(), Arcane::Parallel::Foreach(), Arcane::Parallel::Foreach(), Arcane::Parallel::Foreach(), et Arcane::Parallel::Foreach().
|
inlinestatic |
Exécute le fonctor f en concurrence.
Définition à la ligne 340 du fichier ConcurrencyUtils.h.
|
inlinestatic |
Exécute le fonctor f en concurrence.
Définition à la ligne 346 du fichier ConcurrencyUtils.h.
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 446 du fichier ConcurrencyUtils.h.
Référencé par Arcane::Accelerator::AcceleratorRuntimeInitialisationInfo::executionPolicy(), et Arcane::Application::initialize().
|
inlinestatic |
Nombre de threads utilisés au maximum pour gérer les tâches.
Définition à la ligne 390 du fichier ConcurrencyUtils.h.
Référencé par Arcane::Application::initialize().
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 457 du fichier ConcurrencyUtils.h.
Référencé par Arcane::Application::initialize().
|
inlinestatic |
Positionne les valeurs par défaut d'exécution d'une boucle parallèle.
Définition à la ligne 428 du fichier ConcurrencyUtils.h.
Référencé par Arcane::ArcaneLauncher::init(), et Arcane::TBBTaskImplementation::initialize().
Positionne le niveau de verbosité (0 pour pas d'affichage qui est le défaut)
Définition à la ligne 492 du fichier ConcurrencyUtils.h.
Référencé par Arcane::Application::build().
|
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 199 du fichier ConcurrencyUtils.cc.
Référencé par Arcane::Application::~Application().
|
inlinestatic |
Niveau de verbosité
Définition à la ligne 495 du fichier ConcurrencyUtils.h.
Référencé par Arcane::TBBTaskImplementation::_executeMDParallelFor().
|
staticprivate |
Définition à la ligne 505 du fichier ConcurrencyUtils.h.
|
staticprivate |
Définition à la ligne 508 du fichier ConcurrencyUtils.h.
|
staticprivate |
Définition à la ligne 506 du fichier ConcurrencyUtils.h.
|
staticprivate |
Définition à la ligne 504 du fichier ConcurrencyUtils.h.
|
staticprivate |
Définition à la ligne 507 du fichier ConcurrencyUtils.h.