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 | |
| 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. 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 | {{{ |
| 201 | def 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 | |
| 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 | |
| 218 | |
| 219 | == Developer Guide == |