Modern software is incredibly complex. A typical application may comprise hundreds or thousands of reusable components. Automated package managers can help to maintain a consistent set of dependency versions, but ultimately the solvers in these systems rely on constraints generated by humans. At scale, small errors add up, and it becomes increasingly difficult to find high-fidelity configurations. We cannot test all configurations, because the space is combinatorial, so exhaustive exploration is infeasible. In this paper, we present Reliabuild, an auto-tuning framework that efficiently explores the build configuration space and learns which package versions are likely to result in a successful configuration. We implement two models in Reliabuild to rank the different configurations and use adaptive sampling to select good configurations with fewer samples. We demonstrate Reliabuild's effectiveness by evaluating 31,186 build configurations of 61 packages from the Extreme-scale Scientific Software Stack(E4S). Reliabuild selects good configurations efficiently. For example, Reliabuild selects 3X the number of good configurations in comparison to random sampling for several packages including Abyss, Bolt, libnrm, OpenMPI. Our framework is also able to select all the high-fidelity builds in half the number of samples required by random sampling for packages such as Chai, OpenMPI, py-petsc4py, and slepc. We further use the model to learn statistics about the compatibility of different packages, which will enable package solvers to better select high-fidelity build configurations automatically.
翻译:现代软件非常复杂。 一个典型的应用程序可能包含成百上千个可重复使用的组件。 一个典型的应用程序可能包含成百上千个可重新使用的组件。 一个自动软件管理器可以帮助维持一套一致的依赖性版本, 但是这些系统中的解决方案最终依靠人类产生的限制。 规模上, 小错误加起来, 并且越来越难以找到高不洁的配置。 我们无法测试所有配置, 因为空间是组合式的, 因此穷尽的探索是行不通的。 在本文中, 我们展示一个自动调试框架, 以高效地探索构建的配置空间, 并学习哪些软件版本可能带来成功的配置。 我们在 Reliabuilding中安装了两个模型来排列不同的配置, 并在 Reliabuilt 中使用了两个模型来对不同的配置进行排序, 并使用适应性抽样选择了两个模型来选择良好的配置, 以选择不同的组合, 包括 Abys、 Bolt、 libnfimm、 OpenMPI 和 OpenMPI 等高版本的组合。 我们通过评估31, 可以选择高版本框架来进行更精确的系统,, 。 以进一步选择 。