Changes between Version 44 and Version 45 of Orio


Ignore:
Timestamp:
06/12/08 05:15:22 (15 years ago)
Author:
hartono
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Orio

    v44 v45  
    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 === Choosing Different Search Space Exploration Strategies === 
     196=== Parameter Space Exploration Strategies === 
    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. 
     
    203203 arg time_limit = 10; 
    204204 arg total_runs = 10; 
    205  arg simplex_local_distance = 1; 
     205 arg simplex_local_distance = 2; 
    206206 arg simplex_reflection_coef = 1.0; 
    207  arg simplex_expansion_coef = [1.5, 2.0]; 
    208  arg simplex_contraction_coef = [0.5, 0.75]; 
     207 arg simplex_expansion_coef = 1.5; 
     208 arg simplex_contraction_coef = 0.5; 
    209209 arg simplex_shrinkage_coef = 0.7; 
    210210} 
    211211}}} 
    212212 
    213 Orio 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  
    215 A 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  
     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 arguments with names that start with `simplex_` are called search parameters specifically designed to steer the Simplex algorithm.  
     216 
     217To further improve the quality of the search result, each search heuristic is enhanced by applying a local search after the search completes. The local search compares the best performance with neighboring coordinates. If a better coordinate is discovered, the local search continues recursively until no further improvement is possible.  In the previous example, users can adjust the distance of the local search by modifying the value of the argument ''simplex_local_distance''. A local distance of two implies that the local search examines the performances of all neighbors that within a distance of two. 
    218218 
    219219== Developer Guide ==