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

Implémentation déterministe de ParallelFor. Plus de détails...

+ Graphe de collaboration de Arcane::TBBDeterministicParallelFor:

Fonctions membres publiques

 TBBDeterministicParallelFor (TBBTaskImplementation *impl, const TBBParallelFor &tbb_for, Integer begin_index, Integer size, Integer grain_size, Integer nb_thread)
 
void operator() (tbb::blocked_range< Integer > &range) const
 Opérateur pour un thread donné.
 
void _doBlock (Integer task_id, Integer block_id) const
 

Attributs privés

TBBTaskImplementationm_impl
 
const TBBParallelForm_tbb_for
 
Integer m_nb_thread
 
Integer m_begin_index
 
Integer m_size
 
Integer m_grain_size
 
Integer m_nb_block
 
Integer m_block_size
 
Integer m_nb_block_per_thread
 

Description détaillée

Implémentation déterministe de ParallelFor.

L'implémentation est déterministe dans le sens où elle ne dépend que de l'intervalle d'itération (m_begin_index et m_size), du nombre de threads spécifié (m_nb_thread) et de la taille du grain (m_grain_size).

L'algorithme utilisé se rapproche de celui utilisé par OpenMP pour un parallel for avec l'option statique: on découpe l'intervalle d'itération en plusieurs blocs et chaque bloc est assigné à une tâche en fonction d'un algorithme round-robin. Pour déterminer le nombre de blocs, deux cas sont possibles:

  • si m_grain_size n'est pas spécifié, on découpe l'intervalle d'itération en un nombre de blocs équivalent au nombre de threads utilisés.
  • si m_grain_size est spécifié, le nombre de blocs sera égal à m_size divisé par m_grain_size.

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

Documentation des constructeurs et destructeur

◆ TBBDeterministicParallelFor()

Arcane::TBBDeterministicParallelFor::TBBDeterministicParallelFor ( TBBTaskImplementation impl,
const TBBParallelFor tbb_for,
Integer  begin_index,
Integer  size,
Integer  grain_size,
Integer  nb_thread 
)
inline

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

Documentation des fonctions membres

◆ _doBlock()

void Arcane::TBBDeterministicParallelFor::_doBlock ( Integer  task_id,
Integer  block_id 
) const
inline

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

◆ operator()()

void Arcane::TBBDeterministicParallelFor::operator() ( tbb::blocked_range< Integer > &  range) const
inline

Opérateur pour un thread donné.

En règle générale, range.size() vaudra 1 car un thread ne traitera qu'une itération mais ce n'est a priori pas garanti par les TBB.

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

Documentation des données membres

◆ m_begin_index

Integer Arcane::TBBDeterministicParallelFor::m_begin_index
private

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

◆ m_block_size

Integer Arcane::TBBDeterministicParallelFor::m_block_size
private

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

◆ m_grain_size

Integer Arcane::TBBDeterministicParallelFor::m_grain_size
private

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

◆ m_impl

TBBTaskImplementation* Arcane::TBBDeterministicParallelFor::m_impl
private

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

◆ m_nb_block

Integer Arcane::TBBDeterministicParallelFor::m_nb_block
private

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

◆ m_nb_block_per_thread

Integer Arcane::TBBDeterministicParallelFor::m_nb_block_per_thread
private

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

◆ m_nb_thread

Integer Arcane::TBBDeterministicParallelFor::m_nb_thread
private

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

◆ m_size

Integer Arcane::TBBDeterministicParallelFor::m_size
private

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

◆ m_tbb_for

const TBBParallelFor& Arcane::TBBDeterministicParallelFor::m_tbb_for
private

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


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