• # Quelques commentaires

    Posté par (site web personnel) . En réponse au message Parallelisation d'une boucle (théoriquement) trivialement parallélisable. Évalué à 9.

    Je suis très loin d'être un expert en optimisation, mais voici quand même quelques pistes:

    - Ton code a peut-être un problème de "pointer aliasing". A priori le compilateur n'a pas moyen d'être sûr que yvar1, yvar2 et yvar3 ne pointent pas à des endroits voisins en mémoire, et ne peut donc pas faire d'optimisations comme l'utilisation des instructions SIMD.

    -Cela m'amène au deuxième point : as-tu regardé l'assembleur généré par le compilateur? Il n'y a pas besoin d'être un expert pour le faire, et ça peut être riche en enseignements: place le code critique entre deux commentaires assembleur ( __asm__("#before") par exemple, de mémoire), compile avec le bon flag gcc et c'est parti!

    -En ce qui concerne la parallélisation par threads, vu le faible temps d'exécution de la boucle, je me demande si le coût de création des threads n'explique pas tout simplement la baisse des performances.

    Bon courage! (et n'hésite pas à faire un journal quand tu auras réussi, c'est toujours intéressant ce genre de problèmes)