  Approximate computing frameworks configure applications so they can operate
at a range of points in an accuracy-performance trade-off space. Prior work has
introduced many frameworks to create approximate programs. As approximation
frameworks proliferate, it is natural to ask how they can be compared and
combined to create even larger, richer trade-off spaces. We address these
questions by presenting VIPER and BOA. VIPER compares trade-off spaces induced
by different approximation frameworks by visualizing performance improvements
across the full range of possible accuracies. BOA is a family of exploration
techniques that quickly locate Pareto-efficient points in the immense trade-off
space produced by the combination of two or more approximation frameworks. We
use VIPER and BOA to compare and combine three different approximation
frameworks from across the system stack, including: one that changes numerical
precision, one that skips loop iterations, and one that manipulates existing
application parameters. Compared to simply looking at Pareto-optimal curves, we
find VIPER's visualizations provide a quicker and more convenient way to
determine the best approximation technique for any accuracy loss. Compared to a
state-of-the-art evolutionary algorithm, we find that BOA explores 14x fewer
configurations yet locates 35% more Pareto-efficient points.
