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.
翻译:现代科学软件堆叠已经变得极其复杂, 使用许多程序模型和图书馆来利用越来越多的各种 GPU 和加速器。 软件管理员可以使用依赖软件解决问题, 但是他们已经达到了极限。 找到兼容的依赖版本是 NP 完成的, 并且对软件包兼容性模调构建时间选项、 GPU 运行时间、 旗帜和其他参数的语义进行建模非常困难。 在这个巨大的配置空间中, 定义一个“ 良好” 配置非常艰巨。 我们用“ 回答设置” 编程( ASP) 来解决这个问题。 我们用 Spack 软件包管理器( ASP) 来表达这个问题的复杂性, 我们用 Spack 软件包管理器显示, ASP 程序可以简洁地表达 HPC 软件堆放的兼容性规则, 并提供高质量的解决方案保证。 使用 ASP, 我们可以将新建筑与预安装的二进程序混合, 解决方案的性能被接受, 即使考虑到数万个软件包也是可以接受的 。