论文标题
将答案集编程用于HPC依赖解决方案
Using Answer Set Programming for HPC Dependency Solving
论文作者
论文摘要
现代科学软件堆栈已经变得非常复杂,使用许多编程模型和库来利用越来越多的GPU和加速器。包装管理人员可以使用依赖求解器来减轻这种复杂性,但他们正在达到限制。查找兼容依赖性版本是NP算法,并且对软件包兼容性模型构建时间选项,GPU运行时间,标志和其他参数进行建模非常困难。在这个巨大的配置空间中,定义“良好”配置令人生畏。 我们使用答案集编程(ASP)解决了这个问题,这是一个组合搜索问题的声明性模型。我们使用SPACK软件包管理器表明,ASP程序可以简单地表达HPC软件堆栈的兼容性规则,并提供强大的解决质量保证。使用ASP,我们可以将新版本与预装的二进制文件混合在一起,即使考虑成千上万个软件包,也可以接受求解器性能。
Modern scientific software stacks have become extremely complex, using many programming models and libraries to exploit a growing variety of GPUs and accelerators. Package managers can mitigate this complexity using dependency solvers, but they are reaching their limits. Finding compatible dependency versions is NP-complete, and modeling the semantics of package compatibility modulo build-time options, GPU runtimes, flags, and other parameters is extremely difficult. Within this enormous configuration space, defining a "good" configuration is daunting. We tackle this problem using Answer Set Programming (ASP), a declarative model for combinatorial search problems. We show, using the Spack package manager, that ASP programs can concisely express the compatibility rules of HPC software stacks and provide strong quality-of-solution guarantees. Using ASP, we can mix new builds with preinstalled binaries, and solver performance is acceptable even when considering tens of thousands of packages.