In HPC, software is typically distributed as source code, so that users can build optimized software that takes advantage of specific microarchitectures and other hardware. While this approach provides a lot of flexibility, building software from source remains a huge barrier for users accustomed to simple, fast binary package mangers. Most package managers and container registries label binaries with a high-level architecture family name, e.g., x86_64 or ppc64le, but there is no standard way to label binaries for specific microarchitectures (haswell, skylake, power9, zen2, etc.). We’ll present a new project called “archspec” that aims to bridge this gap. Archspec provides a standard set of human-understandable labels for many popular microarchitectures. It models compatibility relationships between microarchitectures, and it aggregates information on ISA extensions, compiler support, and compiler flags needed to optimize these machines. Finally, it provides a standard set of names for both microarchitectures and ISA features. These features allow container tools and package managers to detect, build, and use optimized binaries. Archspec grew out of the Spack package manager, but it is intended for widespread use by other build, packaging, and containerization tools. We will describe how it has been used in practice so far, how it has simplified writing generic packages, and our plans to get contributions from vendors and the broader community. Expected prior knowledge / intended audience: Audience should have basic knowledge of build systems, as well as some knowledge about processor architectures. There will be some brief background on this in the talk. This will be interesting to HPC users, developers, packagers, and admins, as well as to anyone writing tools that deal with microarchitecture metadata (like container systems). |