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 799 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 802 du fichier TBBTaskImplementation.cc.
|
inline |
Définition à la ligne 859 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 846 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 890 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 894 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 892 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 887 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 893 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 895 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 889 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 891 du fichier TBBTaskImplementation.cc.
|
private |
Définition à la ligne 888 du fichier TBBTaskImplementation.cc.