In many cases, simple analytical models used by traditional compilers are no longer able to yield effectively optimized code
for complex programs because of the enormous complexity of processor architectures. A promising alternative approach for optimizing
applications effectively has been the use of search-based empirical methods. The success of empirically tuned library generators
such as ATLAS has shown that this strategy can be effective for domain-specific programs. However, to date there has been
no general-purpose tool for effective empirical optimization of whole programs. The main obstacle to this approach has been
the need for evaluating a prohibitively large number of alternative program variants. To address this problem, we have developed
a prototype tool for automatic application tuning that uses loop-level performance feedback and a direct search strategy to
guide search for the best set of optimization parameters. Experiments on four different architectures show that direct search
can be an effective technique for finding good values for transformation parameters in a reasonable time.
This material is based on work supported by the Department of Energy under Contract Nos. 03891-001-99-4G, 74837-001-03 49,
86192-001-04 49, and/or 12783-001-05 49 from the Los Alamos National Laboratory.