Changes between Version 24 and Version 25 of Orio

06/11/08 17:18:44 (15 years ago)



  • Orio

    v24 v25  
     64== Orio Framework == 
     66The picture shown below depicts at a high level the structure and the optimization process of the Orio framework. 
     74As the simplest case, Orio can be used to speed up code performance by performing a ''source-to-source transformation'' such as loop unrolling and memory alignment optimizations. First, Orio takes a C/C++ code as input, which contains syntactically structured comments utilized to express various performance-tuning directives. Orio scans the annotated input code and extracts all annotation regions. Each annotation region is then passed to the code transformation modules for potential optimizations. Next, the code generator produces the final code with various optimizations being applied.  
     76Furthermore, Orio can also be used as an ''automatic performance tuning'' tool. The system uses its code transformation modules and code generator to generate an optimized code version for each distinct combination of performance parameters. And then, the optimized code version is empirically executed and measured for its performance, which is subsequently compared to the performances of other previously tested code variants. After iteratively evaluating all code variants under consideration, the best-performing code is generated as the final output of Orio.  
     78Because the space of all possible optimized code versions can be exponentially large, an exhaustive exploration of the search space becomes impractical. Therefore, several search heuristics are implemented in the search engine component to find a code variant with near-optimal performance. 
     80The tuning specifications, written by users in the form of annotations, are parsed and used by Orio to guide the search and tuning process. These specifications include important information such as the underlying machine characteristics, the used compilers, the search strategy, the transformation parameters, the input data size, and so on. 
    6482== Documentations ==