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 |
Attributs privés | |
TBBTaskImplementation * | m_impl |
const TBBParallelFor & | m_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 |
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 818 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 821 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 878 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 865 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 909 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 913 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 911 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 906 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 912 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 914 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 908 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 910 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 907 du fichier TBBTaskImplementation.cc.