Je m'intéresse à l'optimisation des flux de données et des graphes de flux de contrôle et en particulier aux calculs plus complexes. Mais il sera également intéressant de connaître les dernières inventions dans le domaine des optimisations de judas.
optimization
compilers
Evgeny Gavrin
la source
la source
Réponses:
Je ne sais pas à quel point c'est nouveau, ou si c'est trop du côté appliqué pour votre intérêt, mais Hoopl montre comment une optimisation de contrôle / flux de données peut être modularisée, avec une propagation des faits sur les sommets du graphique de contrôle étant indépendante de la langage et optimisation spécifique.
Ils font référence à un algorithme de 2002 de Lerner, Grove et Chambers qui compose de simples optimisations en une "superoptimisation".
la source
Je suppose que la technique de saturation d'égalité , en tant qu'approche différente du problème de l'optimisation de l'ordre des passes, serait pertinente. A ma connaissance, il n'a cependant pas encore été prouvé pratique par une implémentation concrète dans un compilateur à part entière. Les optimisations de compilation suivantes à partir de preuves peuvent également être intéressantes.
la source
Il y a eu un peu de renouveau dans les compilateurs d'optimisation vérifiés. En plus de l'article de Lerner (mentionné dans un commentaire précédent), vous pouvez regarder le projet CompCert dirigé par Xavier Leroy. Ils ont fait des trucs sympas en spécifiant les optimisations comme preuves vérifiables par machine (en utilisant Coq ). Je n'ai pas encore lu les articles, mais le projet Verified Software Toolchain à Princeton semble également produire des résultats intéressants dans ce domaine.
la source
Reconnaître que baz [i] + = force (foo [i], foo [j]) dans une boucle FOR double a des résultats indépendants pour (i, j) et réorganiser les appels dans une courbe de remplissage d'espace sur (i, j) à réduire les échecs de cache.
Pas tout à fait "judas" mais obtenir un comportement inconscient du cache pour "gratuit" est bien.
la source