Multicœur et synchronisation
Pour répartir les itérations d’une boucle entre plusieurs threads, quelle répartition convient lorsque la charge de calcul varie fortement d’une itération à l’autre ?
- AUne répartition statique, qui divise équitablement le nombre d’itérations au départ sans ajustement ultérieur
- BConfier toutes les itérations à un seul thread
- CUne répartition dynamique, qui découpe le travail en petits lots que les threads disponibles viennent chercher
Afficher la réponse et l'explication
Réponse : C. Une répartition dynamique, qui découpe le travail en petits lots que les threads disponibles viennent chercher
La répartition statique a un faible coût, mais si le poids des itérations varie, seul le thread chargé des parties lourdes prend du retard et les autres attendent. Avec une répartition dynamique, le travail suivant est pris par exemple à partir d’un compteur partagé, et les threads qui finissent tôt en prennent davantage, ce qui équilibre la charge. Cependant, des lots trop petits augmentent le coût de récupération ; leur taille doit donc être ajustée.
Continuer : 9 autres questions sur Multicœur et synchronisation