Arcane  v3.16.2.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 837 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 840 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 897 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 884 du fichier TBBTaskImplementation.cc.

Documentation des données membres

◆ m_begin_index

Integer Arcane::TBBDeterministicParallelFor::m_begin_index
private

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

◆ m_block_size

Integer Arcane::TBBDeterministicParallelFor::m_block_size
private

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

◆ m_grain_size

Integer Arcane::TBBDeterministicParallelFor::m_grain_size
private

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

◆ m_impl

TBBTaskImplementation* Arcane::TBBDeterministicParallelFor::m_impl
private

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

◆ m_nb_block

Integer Arcane::TBBDeterministicParallelFor::m_nb_block
private

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

◆ m_nb_block_per_thread

Integer Arcane::TBBDeterministicParallelFor::m_nb_block_per_thread
private

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

◆ m_nb_thread

Integer Arcane::TBBDeterministicParallelFor::m_nb_thread
private

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

◆ m_size

Integer Arcane::TBBDeterministicParallelFor::m_size
private

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

◆ m_tbb_for

const TBBParallelFor& Arcane::TBBDeterministicParallelFor::m_tbb_for
private

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


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