Approximate computations (for example, video, audio, and image
processing, machine learning, and many scientific computations) have
the freedom to generate a range of acceptable results. Approximate
program transformations (for example, task skipping and loop
perforation) exploit this freedom to produce computations that can
execute at a variety of points in an underlying accuracy versus
performance trade-off space. One potential concern is that these
transformations may change the semantics of the program and therefore
cause the program to crash, perform an illegal operation, or otherwise
violate its integrity.
We investigate how verifying integrity properties -- key correctness
properties that the transformed computation must respect -- can enable
the safe application of approximate program transformations. We
present experimental results from a compiler that verifies integrity
properties of perforated loops to enable the safe application of loop
perforation.