Peut-être est-ce une politique générale du genre « tu ne me dis pas -funroll-loops alors je ne déroule pas parce que ça ferait grossir le binaire
La taille du binaire n’est pas le seul critère. J’ai participé à une formation de chez Intel où les formateurs nous expliquaient qu’au gré des versions (récentes) ils avaient fait le choix d’être de moins en moins agressifs sur la vectorisation automatique, car elle n’est pas aussi performante que la vectorisation manuelle (ou assistée par des instructions manuelles). Il ne suggéraient pas de dérouler les boucles à la main, mais d’utiliser des directives OpenMP pour indiquer quelles boucles pouvaient/devaient être déroulées et optimisées avec des instructions SIMD etc. C’est possible que l’argument ait aussi été entendu (et appliqué) chez GCC qui attend donc (sauf options contraire sur la ligne de commande) des directives du développeur pour dérouler/vectoriser les boucles.
Ça me contrarie à titre personnel car il va falloir repasser sur tout mon code pour ajouter les directives OpenMP idoines, mais si à la fin c’est vraiment la bonne solution, ce travail ne sera pas vain et me fera peut-être gagner davantage que la vectorisation automatique (qui repose sur des heuristiques très pifométriques). Chez OpenMP, ils ont beaucoup bossé sur la question, et si (削除) tout le monde a (削除ここまで) les experts ont l’air de tomber d’accord, je suis prêt à me fier à ce consensus.
[^] # Re: J'veux pas faire le relou mais...
Posté par jyes . En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 6.
La taille du binaire n’est pas le seul critère. J’ai participé à une formation de chez Intel où les formateurs nous expliquaient qu’au gré des versions (récentes) ils avaient fait le choix d’être de moins en moins agressifs sur la vectorisation automatique, car elle n’est pas aussi performante que la vectorisation manuelle (ou assistée par des instructions manuelles). Il ne suggéraient pas de dérouler les boucles à la main, mais d’utiliser des directives OpenMP pour indiquer quelles boucles pouvaient/devaient être déroulées et optimisées avec des instructions SIMD etc. C’est possible que l’argument ait aussi été entendu (et appliqué) chez GCC qui attend donc (sauf options contraire sur la ligne de commande) des directives du développeur pour dérouler/vectoriser les boucles.
Ça me contrarie à titre personnel car il va falloir repasser sur tout mon code pour ajouter les directives OpenMP idoines, mais si à la fin c’est vraiment la bonne solution, ce travail ne sera pas vain et me fera peut-être gagner davantage que la vectorisation automatique (qui repose sur des heuristiques très pifométriques). Chez OpenMP, ils ont beaucoup bossé sur la question, et si
(削除) tout le monde a (削除ここまで)les experts ont l’air de tomber d’accord, je suis prêt à me fier à ce consensus.