While tremendously useful, automated techniques for tuning the precision of floating-point programs face important scalability challenges. We present Blame Analysis, a novel dynamic approach that speeds up precision tuning. Blame Analysis performs floating-point instructions using different levels of accuracy for their operands. The analysis determines the precision of all operands such that a given precision is achieved in the final result of the program. Our evaluation on ten scientific programs shows that Blame Analysis is successful in lowering operand precision. As it executes the program only once, the analysis is particularly useful when targeting reductions in execution time. In such case, the analysis needs to be combined with search-based tools such as Precimonious. Our experiments show that combining Blame Analysis with Precimonious leads to obtaining better results with significant reduction in analysis time: the optimized programs execute faster (in three cases, we observe as high as 39.9% program speedup) and the combined analysis time is 9 x  faster on average, and up to 38 x  faster than Precimonious alone.
['Cindy Rubio-González', 'Cuong Nguyen', 'Benjamin Mehne', 'Koushik Sen', 'James Demmel', 'William Kahan', 'Costin Iancu', 'Wim Lavrijsen', 'David H. Bailey', 'David Hough']
Floating-point precision tuning using blame analysis