  Computer architectures become more and more complex. It requires more effort
to develop techniques that improve the programs of performance and allow to
exploit material resources efficiently. As a result, many transformations are
applied on various levels of code abstraction. The first level is the high
level, where the representation is close to the high level language. The second
one is the low level, where the presentation is close to the machine code.
Those transformations are called code optimizations. Optimizing programs
requires deep expertise. On one hand, it is a tedious task, because it requires
a lot of tests to find out the best combination of optimizations to apply with
their best factors. On the other hand, this task is critical, because it may
degrade the performance of the program instead of improving it. The
automatization of this task can deal with this problem and permit to obtain
good results. Our end of study project consists on proposing a novel approach
based on neural networks to automatically optimize loops in Tiramisu. Tiramisu
is a new language to create a code of high performance. It allows to separate
between the algorithm and its optimizations. We have chosen loop unrolling as a
study case. Our contribution aims to automate the choice of the best loop
unrolling factor for a program written in Tiramisu.
