Automatic vectorization is available today in all production compilers. However, the result of the vectorization are mixed. This has several reasons, including lack of run-time information during compilation, imprecise dependence analysis and cost functions, and impact of the code generation.
The goal of this project is to advance the state of the art in autovectorization by creating new techniques and extending our understanding of programming patterns, program analysis, and transformation techniques. The effect of this is the acceleration of computer programs and the reduction of the energy that they consume. Faster programs are of great importance in all application areas, but are particularly important in science and engineering where computing speed is an enabler of discoveries and better designs.
The research strategy is to develop and evaluate a prototype autovectorizer based on the exploration of the space of equivalent versions of a program guided by an intelligent search engine. The space of equivalent versions is obtained with a source-to-source restructurer. A repository of codelets is planned in order to train the search engine so that it becomes capable of guiding the selection in the space of possibilities in order to identify a highly efficient version of the code.
This project is supported by the NSF.
The loop repository, LORE (LOop Repository for the Evaluation of compilers), containing a large number of C language "for" loop nests extracted from popular benchmarks, libraries, and real applications has been created. The infrastructure that builds and maintains the repository has been developed. Each loop nest in the repository has been compiled, transformed, executed, and measured independently. The results can be accessed as a database. These loops have a variety of properties that can be used by the compiler community to evaluate loop optimizations.
The repository is available online and can be accessed at LORE
Please feel free to use it and we would appreciate your feedback!