论文标题
使用依赖性感知调整与上下文敏感孔进行编程
Programming with Context-Sensitive Holes using Dependency-Aware Tuning
论文作者
论文摘要
开发高效且可维护的软件系统既困难又耗时。特别是,非功能性能要求涉及许多设计和实施决策,在系统开发过程中可能很难做出。选择 - 例如选择数据结构或在何处以及如何并行化代码 - 通常需要大量的手动调整,既耗时又易用错误。尽管存在各种自动调整方法,但它们要么专门用于某些域,要么需要重写大量代码才能在代码中的不同上下文中使用。在本文中,我们介绍了一种用孔编写程序编写程序的新方法,即在程序代码中明确说明的决策变量,使开发人员能够在开发过程中推迟决策。我们介绍和评估两个新颖的想法:(i)编译器将编译器扩展到自动调整的决策变量集中的上下文敏感孔,以及(ii)依赖性意识到的调整,静态分析通过找到可以独立于彼此独立调整的决策变量来减少搜索空间。我们在一个名为Miking的系统中评估了两个新概念,在该系统中,我们展示了如何将一般方法用于自动算法选择,数据结构决策和并行化选择。
Developing efficient and maintainable software systems is both hard and time consuming. In particular, non-functional performance requirements involve many design and implementation decisions that can be difficult to take early during system development. Choices -- such as selection of data structures or where and how to parallelize code -- typically require extensive manual tuning that is both time consuming and error-prone. Although various auto-tuning approaches exist, they are either specialized for certain domains or require extensive code rewriting to work for different contexts in the code. In this paper, we introduce a new methodology for writing programs with holes, that is, decision variables explicitly stated in the program code that enable developers to postpone decisions during development. We introduce and evaluate two novel ideas: (i) context-sensitive holes that are expanded by the compiler into sets of decision variables for automatic tuning, and (ii) dependency-aware tuning, where static analysis reduces the search space by finding the set of decision variables that can be tuned independently of each other. We evaluate the two new concepts in a system called Miking, where we show how the general methodology can be used for automatic algorithm selection, data structure decisions, and parallelization choices.