Changes between Version 122 and Version 123 of Orio


Ignore:
Timestamp:
11/05/13 12:06:57 (10 years ago)
Author:
norris
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Orio

    v122 v123  
    11[[TracNav(TracNavPerformance)]] 
    2 [[Image(osu_logo.png,76,right,nolink)]] 
    3 [[Image(anl_logo.jpg,175,right,nolink)]] 
    42[[Image(orio_logo.jpg,nolink)]] 
    53== ''Orio: An Annotation-Based Empirical Performance Tuning Framework'' == 
    64---- 
     5 
    76 
    87== Overview == 
     
    109'''Orio''' is an extensible framework for transformation and autotuning of codes written in different source and target languages, including transformations from a number of simple languages (e.g., a restricted subset of C) to C, Fortran, and CUDA targets. The tool generates many tuned versions of the same operation using different optimization parameters, and performs an empirical search for selecting the best among multiple optimized code variants. 
    1110 
    12 == Download == 
    13  
    14 [http://www.mcs.anl.gov/research/projects/performance/orio/orio-1.0.0.tar.gz Orio 1.0.0] (Open-source [wiki:OrioLicense license]) 
    15  
    16 Development version (may be unstable) can be checked out anonymously with: 
    17 {{{ 
    18  svn co https://svn.mcs.anl.gov/repos/performance/orio 
    19 }}} 
    20  
    21 Contact [mailto:[email protected] Boyana Norris] if you wish to contribute to Orio development. 
    22  
    23 == Documentation == 
    24  
    25  * [OrioUserGuide User Guide] 
    26  * [OrioDevGuide Developer Guide] 
    27  
    28 == Structure of Orio Framework == 
    29  
    30 The picture shown below depicts at a high level the structure and the optimization process of the Orio framework. 
    31  
    32 [[BR]][[BR]] 
    33  
    34 [[Image(orio-framework.jpg,nolink)]] 
    35  
    36 [[BR]][[BR]] 
    37  
    38 As 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 code as input, which contains syntactically structured comments that express various performance-tuning directives. Orio scans the annotated input code and extracts all annotated 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.  
    39  
    40 Furthermore, 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.  
    41  
    42 Because 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. 
    43  
    44 The 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 used compilers, the search strategy, the program transformation parameters, the input data sizes, and so on. 
    45  
    46 == Tools Using Orio == 
    47  
    48  * [http://www.cse.ohio-state.edu/~bondhugu/pluto Pluto] -- An automatic parallelizer and locality optimizer for multicores 
    49  * [http://www.cse.ohio-state.edu/~hartonoa/primetile PrimeTile] -- A parametric multi-level tiler for imperfect loop nests 
    50  
    51 == Papers == 
    52  
    53  * A. Mametjanov, D. Lowell, C.-C. Ma, and B. Norris. Autotuning stencil-based computations on GPUs. In Proceedings of IEEE Cluster 2012. ([http://www.mcs.anl.gov/uploads/cels/papers/P2094-0512.pdf Preprint ANL/MCS-P2094-0512],[http://www.mcs.anl.gov/~norris/new/all_bib.html#MametjanovNZDUAH12.tr bib]) 
    54  
    55  * P. Balaprakash, S. Wild, and B. Norris. SPAPT: Search problems in automatic performance tuning. In Proceeding of the ICCS Workshop on Tools for Program Development and Analysis in Computational Science, 2012. ([http://www.mcs.anl.gov/uploads/cels/papers/P1872.pdf Preprint ANL/MCS-P1872-0411],[http://www.mcs.anl.gov/~norris/new/all_bib.html#BalWilNor2011 bib])  
    56  
    57  * Albert Hartono, Boyana Norris, and Ponnuswamy Sadayappan. Annotation-based empirical performance tuning using Orio. In  Proceedings of the 23rd IEEE International Parallel & Distributed Processing Symposium, Rome, Italy, May 25-29, 2009. ([http://www.mcs.anl.gov/uploads/cels/papers/P1556.pdf Preprint ANL/MCS-P1556-1008], [http://www.mcs.anl.gov/~norris/new/all_bib.html#MametjanovNZDUAH12.tr  bib]) 
    58  
    59  * Albert Hartono, Muthu Manikandan Baskaran, Cédric Bastoul, Albert Cohen, Sriram Krishnamoorth, Boyana Norris, J. Ramanujam, and P. Sadayappan. PrimeTile: A parametric multi-level tiler for imperfect loop nests. In Proceedings of the 23rd International Conference on Supercomputing, June 8-12, 2009, IBM T. J. Watson Research Center, Yorktown Heights, NY, USA, 2009. (Tech. Report [http://www.cse.ohio-state.edu/~hartonoa/papers/ics09-ext.pdf OSU-CISRC-2/09-TR04], [http://www.mcs.anl.gov/~norris/new/all_bib.html#Hartono:ICS:2009 bib]) 
    60  
    61  * Boyana Norris, Albert Hartono, Elizabeth Jessup, and Jeremy Siek. Generating empirically optimized composed matrix kernels from MATLAB prototypes. In Proceedings of the International Conference on Computational Science 2009, 2009. ([http://www.mcs.anl.gov/uploads/cels/papers/P1581.pdf Preprint ANL/MCS-P1581-0209], [http://www.mcs.anl.gov/~norris/new/all_bib.html#Norris:ICCS:2009 bib]) 
    62  
    63  * Boyana Norris, Albert Hartono, and William Gropp. "Annotations for Productivity and Performance Portability," in ''Petascale Computing: Algorithms and Applications''. Computational Science. Chapman & Hall / CRC Press, Taylor and Francis Group, 2007. ([http://www.mcs.anl.gov/uploads/mcs/papers/2007/P1392.pdf Preprint ANL/MCS-P1392-0107], [http://www-unix.mcs.anl.gov/~norris/new/all_bib.html#Norris:2007 bib]) 
    64  
    65   
     11The web pages for Orio have been moved to GitHub: [http://brnorris03.github.io/Orio/ http://brnorris03.github.io/Orio/].