Changes between Version 48 and Version 49 of Orio


Ignore:
Timestamp:
06/12/08 15:30:49 (15 years ago)
Author:
hartono
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Orio

    v48 v49  
    7878Because 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. 
    7979 
    80 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 underlying machine characteristics, the used compilers, the search strategy, the transformation parameters, the input data size, and so on. 
     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 used compilers, the search strategy, the program transformation parameters, the input data sizes, and so on. 
    8181 
    8282== User Guide == 
     
    190190 * ''input_vars'': to specify both the declarations and the initializations of the input variables 
    191191 
    192 So in this example, the transformed AXPY-4 code is compiled using GCC compiler with the -O3 option to activate all its optimizations. The unroll factor values under consideration extends over integers from 1 to 32, inclusively. The AXPY-4 computation is tuned for two distinct problem sizes: N=1K and N=10M. Also, all scalars and arrays involved in the computation must be declared and initialized in the tuning specifications to enable the performance testing driver to empirically execute the optimized code.  It is to be noted that the ''static'' and ''dynamic'' keywords provide guidance to the performance testing driver on how it should allocate memory space for the declared arrays. 
    193  
    194 Provided 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 outcomes of Orio optimization process for input sizes N=1K and N=10M, respectively. 
    195  
    196 === Parameter Space Exploration Strategies === 
     192So in this example, the transformed AXPY-4 code is compiled using GCC compiler with the -O3 option to activate all its optimizations. The unroll factor values under consideration extends over integers from 1 to 32, inclusively. The AXPY-4 computation is tuned for two distinct problem sizes: N=1K and N=10M. Also, all scalars and arrays involved in the computation are declared and initialized in the tuning specifications to enable the performance testing driver to empirically execute the optimized code.  It is to be noted that the ''static'' and ''dynamic'' keywords provide guidance to the performance testing driver on how it should allocate memory space for the declared arrays. 
     193 
     194As discussed before, Orio 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 in the AXPY-4 example. Using the default file naming convention, `_axpy_N_1000.c` and `_axpy_N_10000000.c` output files represent the outcomes of Orio optimization process for input sizes N=1K and N=10M, respectively. 
     195 
     196=== Selecting Parameter Space Exploration Strategy === 
    197197 
    198198Due 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.