"Orio is a Python framework for transformation and automatically tuning
the performance 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, CUDA, and OpenCL
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.
Orio has several code transformation module that have already been
implemented and are ready to use. One of the transformation modules is
''loop unrolling'', which is a loop optimization that aims to increase
register reuse and to reduce branching instructions by combining
instructions that are executed in multiple loop iterations into a single
iteration.
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.
A conceptually straightforward approach to exploring the space of the
parameter values is via an exhaustive search procedure. However, this
exhaustive approach often becomes infeasible because the size of the
search space can be exponentially large. Hence, a proper search
heuristic becomes a critical component of an empirical tuning system. 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."
http://brnorris03.github.io/Orio/
https://github.com/brnorris03/Orio
No comments:
Post a Comment