ProgReco: Détection de schémas de programmes réguliers par intelligence artificielle

Financement

Action exploratoire Inria, fin prévue : aout 2028.

Participants

Objectifs

Les langages métiers (domain specific langage, DSL) permettent d'écrire facilement des noyaux de calcul spécialisés pour des applications aussi variées que les pipelines graphiques, les stencils ou encore l'intelligence artificielle. Leurs compilateurs peuvent ensuite appliquer des optimisations de code ciblées, ce qui permet d'atteindre un très bon niveau de performance.

Par nature, ces optimisations ne peuvent pas s'appliquer à un programme préexistant écrit dans un autre langage, ce qui impose un travail de portage long et bug-prone, voir une réécriture complète du programme.

Une approche possible est d'assister le programmeur en détectant les parties de programme réalisables par une primitive du DSL, En général le problème de la détection de programmes est plus compliqué que l'équivalence de calcul entre deux programmes, qui est indécidable. Il existe plusieurs stratégies pour contourner cette difficulté. On peut ne considérer qu'un sous-ensemble de programmes, dont le contrôle (les boucles notamment) est prédictible statiquement ou encore restreindre la relation d'équivalence avec des approches plus syntaxiques.

Dans ce projet, on se propose, dans un premier temps, de relâcher la relation d'équivalence en acceptant de faire des erreurs de temps en temps, tout en veillant à ce que les erreurs soient aussi rares que possible. C'est un cadre d'application idéal des techniques d'apprentissage automatique qui, par nature, calculent leurs résultats à une marge d'erreur près. Dans un second temps, on proposera un test d'équivalence exact pour filtrer les détections correctes.

De nombreuses questions devront être étudiées. Est-ce qu'une représentation data-flow d'un programme est suffisante pour capturer toute sa sémantique ? Quelles informations sémantiques supplémentaires seraient pertinentes dans le cadre d'apprentissage d'un réseau de neurones ? Est ce qu'un réseau de neurones est capable de reconnaître une famille de graphes data-flow calculant la même fonction ? Serions-nous capables de détecter et discerner les cas d'erreur, d'incertitude ou d'imprécision ? Est-il possible d'évaluer la confiance dans une détection?

[retour à ma page principale]