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 |
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:
Définition à la ligne 770 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 774 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 839 du fichier TBBTaskImplementation.cc.
|
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 826 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 870 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 874 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 872 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 867 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 873 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 875 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 869 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 871 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 868 du fichier TBBTaskImplementation.cc.