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 850 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 853 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 910 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 897 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 941 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 945 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 943 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 938 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 944 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 946 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 940 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 942 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 939 du fichier TBBTaskImplementation.cc.