Validating more loop optimizations

Rated 3.95/5 based on 707 customer reviews

In this paper, for more aggressive optimizations that alter the loop structure of the code—such as distribution, fusion, tiling, and interchange—we present a set of which establish that the transformed code satisfies all the implied data dependencies necessary for the validity of the considered transformation.

We describe the extensions to our tool voc-64 which are required to validate these structure-modifying optimizations. This involves using run-time tests to ensure the correctness of loop optimizations whose correctness cannot be guaranteed at compile time.

The "front-end" of an Intel CPU is actually similar to a tracing JIT: it translates from high-level instructions (x86-64) into low-level IR instructions (micro-operations aka uops), it splits and merges the instruction stream (uop fusion), it identifies dependencies and reuses registers behind the scenes (register renaming), and it even has a "trace cache" of optimized uops that is not unlike the Lua JIT traces.This involves using run-time tests to ensure the correctness of loop optimizations whose correctness cannot be guaranteed at compile time.TY - JOURT1 - Translation and run-time validation of loop transformations AU - Zuck, Lenore AU - Pnueli, Amir AU - Goldberg, Benjamin AU - Barrett, Clark AU - Fang, Yi AU - Hu, Ying PY - 2005/11Y1 - 2005/11N2 - This paper presents new approaches to the validation of loop optimizations that compilers use to obtain the highest performance from modern architectures. This paper presents new approaches to the validation of loop optimizations that compilers use to obtain the highest performance from modern architectures.This paper also discusses preliminary work on run-time validation of speculative loop optimizations.

Leave a Reply