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 |
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 837 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 840 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 897 du fichier TBBTaskImplementation.cc.
|
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.
|
private |
Définition à la ligne 928 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 932 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 930 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 925 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 931 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 933 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 927 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 929 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 926 du fichier TBBTaskImplementation.cc.