We address computational reproducibility, with specific emphasis on compilers, compiler optimization flags, and their effects on how computational results are changed. This is a growing concern, given that the number of compilers and platforms are ever-increasing, and numerical results (as well as scientific predictions) may be affected by changes to these entities. A tool FLiT is contributed. FLiT helps characterize the extent of result changes produced. It can find higher levels of optimization (and speed) that may still produce acceptable numerical results. FLiT now also has a bisect feature that isolates unacceptable result changes either down to the level of a file -- or often even down to the level of a symbol. Check out FLiT and all related tools from github.com / PRUNERS.
Funding
NSF OAC 1535032 and DOE Contract DE-AC52-07NA27344