High Performance Computing~(HPC) software stacks have become complex, with the dependencies of some applications numbering in the hundreds. Packaging, distributing, and administering software stacks of that scale is a complex undertaking anywhere. HPC systems deal with esoteric compilers, hardware, and a panoply of uncommon combinations. In this paper, we explore the mechanisms available for packaging software to find its own dependencies in the context of a taxonomy of software distribution, and discuss their benefits and pitfalls. We discuss workarounds for some common problems caused by using these composed stacks and introduce Shrinkwrap: A solution to producing binaries that directly load their dependencies from precise locations and in a precise order. Beyond simplifying the use of the binaries, this approach also speeds up loading as much as 7x for a large dynamically-linked MPI application in our evaluation.
翻译:高性能 Economic~ (HPC) 软件堆叠已经变得复杂, 某些应用程序的依存性以数百计。 这种规模的软件堆叠的包装、 分发和管理在任何地方都是一项复杂的任务。 HPC 系统处理的是精密的编译器、 硬件和各种不常见的组合。 在本文中, 我们探索了包装软件在软件分布分类中找到自身依赖性的可用机制, 并讨论了它们的好处和缺陷。 我们讨论了如何解决使用这些组成堆叠造成的一些共同问题, 并引入了Srrinklof: 生产从准确的位置和精确顺序直接装载其依赖性的二进制书的解决方案。 除了简化二进制书的使用外, 这种方法还加快了我们评估中大规模动态链接的 MPI 应用程序的装载速度, 最多达 7x 。