The current hardware landscape and application scale is driving performance engineers towards writing bespoke optimizations. Verifying such optimizations, and generating minimal failing cases, is important for robustness in the face of changing program conditions, such as inputs and sizes. However, isolation of minimal test-cases from existing applications and generating new configurations are often difficult due to side effects on the system state, mostly related to dataflow. This paper introduces FuzzyFlow: a fault localization and test case extraction framework designed to test program optimizations. We leverage dataflow program representations to capture a fully reproducible system state and area-of-effect for optimizations to enable fast checking for semantic equivalence. To reduce testing time, we design an algorithm for minimizing test inputs, trading off memory for recomputation. We demonstrate FuzzyFlow on example use cases in real-world applications where the approach provides up to 528 times faster optimization testing and debugging compared to traditional approaches.
翻译:当前的硬件架构与应用规模正推动性能工程师编写定制化优化方案。验证此类优化方案并在程序条件(如输入和规模)变化时生成最小化失败用例,对于保证其鲁棒性至关重要。然而,由于系统状态(主要涉及数据流)的副作用,从现有应用中隔离最小测试用例并生成新配置往往困难重重。本文提出FuzzyFlow:一个专为测试程序优化而设计的故障定位与测试用例提取框架。我们利用数据流程序表示捕获完全可复现的系统状态和优化影响范围,从而实现语义等价性的快速检查。为减少测试时间,我们设计了一种最小化测试输入的算法,在内存与重计算之间进行权衡。通过在真实世界应用中的示例用例,我们展示了FuzzyFlow相较于传统方法,可将优化测试与调试速度提升高达528倍。