LORE: LOop Repository for the Evaluation of compilers
A significant fraction of program execution time is consumed by loops for a large class of programs. For this reason, numerous loop optimization techniques have been designed and are today deployed in all major compilers. These optimizations transform loops into semantically equivalent versions that exhibit better locality, require less computation, and/or take advantage of the parallelism of vector devices and/or multicores. Compiler optimizations enhance programability and enable machine independence. The ultimate goal of research in automatic program optimization is to enable programmers to focus on the preparations of readable and correct code because they can rely on compilers to generate highly efficient code for each target machine. It is well known that we are far from reaching its ultimate goal and that compilers today are brittle in that it is impossible to know before hand if they will be able to generate a highly efficient version of the code or if, on the contrary, it will be necessary to devote considerable time to manually transform the code for good performance.
Clearly, there is much room for advances in compiler technology. An important enabler of these future advances is data on the effectiveness of compilers on different classes of codes and target machines, the progress of compilers across successive versions, and the effectiveness of transformations in isolation and when combined with other transformations. While some of this data can be found in the literature, in many cases compiler studies are confined to a few codes, which are not always widely available. In addition, there is little in the area of historical data that shows how much progress compiler technology has made in terms of delivering performance.
What is LORE
LORE maintains a large amount of C language for loop nests extracted from popular benchmarks, libraries, and real applications. It also describes the infrastructure that builds and maintains the repository. In the repository, each loop nest has been compiled, transformed, executed, and measured independently. These loops cover a variety of properties that can be used by the compiler community to evaluate loop optimization experiments using a broad and representative collection of loops.
[ hidden during paper review ]