Recently I helped a friend getting some scientific software running on an HPC system a little on the smaller side. The software is written in C++ and uses cmake for building. And to be honest, the experience was rather subpar.<p>All HPC systems I have worked on have been using Lmod [1] to manage the environment and enable building with say Intel's compiler or some specific MPI version.<p>Now one of the concrete problems I hit was the following: Loading the latest version of cmake using Lmod pulls in the latest version of gcc's libstdc++ as cmake is dynamically linked against that. But if you try to build said software with the Intel toolchain which pulls an older version of libstdc++ into the environment, suddenly cmake breaks with a rather cryptic symbol not found error.<p>This is what got me thinking: On HPC systems you typically need to have lots of libraries/software with oftentimes many and conflicting versions installed, so your users can use what they need. I have not yet tried Nix(OS) myself, but what I described does very much sound like the problem it is intended to solve.<p>Thus my question: Has anyone tried Nix(OS) on an HPC system, how did it go? Otherwise, are there (better) alternatives to Lmod?<p>[1]: https://lmod.readthedocs.io
I can't answer your question as I am not informed about the subject, but I can add that I am aware that Guix/GuixSD is used for some HPC (see <a href="https://hpc.guix.info/about/" rel="nofollow">https://hpc.guix.info/about/</a>). Perhaps Nix/NixOS is as well.<p>If you don't get an answer here try <a href="https://nixos.org/community/index.html" rel="nofollow">https://nixos.org/community/index.html</a>.
Why wouldn’t any container system work? Many such systems these days support unprivileged containers and near zero overhears, which are basically the main concerns in HPC.