Arcane  v4.1.1.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::TBBDeterministicParallelFor

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

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
 

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 769 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 773 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 838 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 un, car un thread ne traitera qu'une itération, mais ce n'est a priori pas garanti par les TBB.

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


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