Arcane  v3.14.10.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 799 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 802 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 859 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 846 du fichier TBBTaskImplementation.cc.

Documentation des données membres

◆ m_begin_index

Integer Arcane::TBBDeterministicParallelFor::m_begin_index
private

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

◆ m_block_size

Integer Arcane::TBBDeterministicParallelFor::m_block_size
private

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

◆ m_grain_size

Integer Arcane::TBBDeterministicParallelFor::m_grain_size
private

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

◆ m_impl

TBBTaskImplementation* Arcane::TBBDeterministicParallelFor::m_impl
private

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

◆ m_nb_block

Integer Arcane::TBBDeterministicParallelFor::m_nb_block
private

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

◆ m_nb_block_per_thread

Integer Arcane::TBBDeterministicParallelFor::m_nb_block_per_thread
private

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

◆ m_nb_thread

Integer Arcane::TBBDeterministicParallelFor::m_nb_thread
private

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

◆ m_size

Integer Arcane::TBBDeterministicParallelFor::m_size
private

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

◆ m_tbb_for

const TBBParallelFor& Arcane::TBBDeterministicParallelFor::m_tbb_for
private

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


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