Changes between Version 43 and Version 44 of Orio


Ignore:
Timestamp:
06/12/08 04:51:20 (15 years ago)
Author:
hartono
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Orio

    v43 v44  
    145145=== Using Orio as an Automatic Performance Tool === 
    146146 
    147 To enhance the performance of a program on target architecture, most compilers select the optimal values of program transformation parameters using analytical models. In contrast, Orio adaptively generates a large number of code candidates with different parameter values for a given computation, followed by empirical executions of these code variants on the target machine. Then the code that yields the best performance is chosen. Orio automates such empirical performance tuning process using annotations, exemplified in the following simple program. 
     147To enhance the performance of a program on target architecture, most compilers select the optimal values of program transformation parameters using analytical models. In contrast, Orio adaptively generates a large number of code candidates with different parameter values for a given computation, followed by empirical executions of these code variants on the target machine. Then the code that yields the best performance is chosen. Orio automates such empirical performance tuning process using annotations, as exemplified in the following simple program. 
    148148 
    149149{{{ 
     
    194194Provided the fact that performance tuning is performed for each different problem size, the number of generated programs is therefore equivalent to the number of distinct combinations of input problem sizes. So, there are two generated program outputs for the AXPY-4 example. Using the default file naming convention, `_axpy_N_1000.c` and `_axpy_N_10000000.c` output files represent the products of Orio optimization process for input sizes N=1K and N=10M, respectively. 
    195195 
    196 === Using Different Search Space Exploration Strategies === 
    197  
    198 Due to the huge search space of the parameter values, a proper search heuristic becomes a critical component of an empirical tuning system. Hence, in addition to an ''exhaustive search'' and a ''random search'', two effective and practical search heuristic strategies have been developed and integrated into the Orio’s search engine. These heuristics include the ''Nelder-Mead Simplex'' method and ''Simulated Annealing'' method.  
     196=== Choosing Different Search Space Exploration Strategies === 
     197 
     198Due to the huge search space of the parameter values, a proper search heuristic becomes a critical component of an empirical tuning system. Hence, in addition to an ''exhaustive search'' and a ''random search'', two effective and practical search heuristic strategies have been developed and integrated into the Orio’s search engine. These heuristics include the ''Nelder-Mead Simplex'' method and ''Simulated Annealing'' method. The exhaustive approach is selected as the default space exploration method of Orio. However, users can indicate the preferred search strategy in the tuning specifications, as exemplified in the ''search'' definition below. 
     199 
     200{{{ 
     201def search { 
     202 arg algorithm = 'Simplex';   
     203 arg time_limit = 10; 
     204 arg total_runs = 10; 
     205 arg simplex_local_distance = 1; 
     206 arg simplex_reflection_coef = 1.0; 
     207 arg simplex_expansion_coef = [1.5, 2.0]; 
     208 arg simplex_contraction_coef = [0.5, 0.75]; 
     209 arg simplex_shrinkage_coef = 0.7; 
     210} 
     211}}} 
     212 
     213Orio users can also specify the terminating criteria of the search strategies by providing values to the arguments ''time_limit'' and ''total_runs''. If the search time exceeds the specified time limit, the search is suspended and then Orio returns the best optimized code so far. The total number of runs enforces the search to finish in a specific quantity of ‘’full’’ search moves. So, the example above indicates that the Simplex search method must terminate within ten-minute time constraint and within ten search convergences.  
     214 
     215A search technique sometimes has several parameters that need to be specified. For instance, the Nelder-Mead Simplex algorithm necessitates four kinds of coefficients: ''reflection'', ''expansion'', ''contraction'', and ''shrinkage''; and all of these coefficients have default values already defined in the Orio implementation. To alter the values of these algorithm-specific parameters, users can optionally specify them in the tuning specifications. In the example presented above, all the argument names starting with `simplex_` are called search parameters specifically designed to steer the Simplex algorithm.  
     216 
     217 
     218 
     219== Developer Guide == 
    199220 
    200221''Under construction'' 
    201222 
    202 == Developer Guide == 
    203  
    204 ''Under construction'' 
     223== Documentations == 
     224 
     225 1. [wiki:Orio/TuneSpecs Tuning Specifications] 
    205226 
    206227== Papers ==