Reproducible and User-Controlled Software Environments in HPC with Guix

  • Ludovic CourtèsEmail author
  • Ricardo Wurmus
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9523)


Support teams of high-performance computing (HPC) systems often find themselves between a rock and a hard place: on one hand, they understandably administrate these large systems in a conservative way, but on the other hand, they try to satisfy their users by deploying up-to-date tool chains as well as libraries and scientific software. HPC system users often have no guarantee that they will be able to reproduce results at a later point in time, even on the same system—software may have been upgraded, removed, or recompiled under their feet, and they have little hope of being able to reproduce the same software environment elsewhere. We present GNU Guix and the functional package management paradigm and show how it can improve reproducibility and sharing among researchers with representative use cases.


Directed Acyclic Graph Software Environment Support Team Environment Module Tool Chain 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



We would like to thank Florent Pruvost, Emmanuel Agullo, and Andreas Enge at Inria and Eric Bavier at Cray Inc. for insightful discussions and comments on an earlier draft. We are grateful to the Guix contributors who keep improving the system.


  1. 1.
    Boettiger, C.: An introduction to docker for reproducible research. SIGOPS Oper. Syst. Rev. 49(1), 71–79 (2015)CrossRefGoogle Scholar
  2. 2.
    Courtès, L.: Functional package management with guix. In: European Lisp Symposium (2013)Google Scholar
  3. 3.
    Dolstra, E., de Jonge, M., Visser, E.: Nix: a safe and policy-free system for software deployment. In: Proceedings of the 18th Large Installation System Administration Conference (LISA 2004), USENIX, pp. 79–92 (2004)Google Scholar
  4. 4.
    Furlani, J.L.: Providing a flexible user environment. In: Proceedings of the 5th Large Installation System Administration (LISA V), pp. 141–152 (1991)Google Scholar
  5. 5.
    Gamblin, T.: Spack Web Site (2015).
  6. 6.
    Gavish, M., Donoho, D.: A Universal identifier for computational results. Procedia Comput. Sci. 4, 637–647 (2011)CrossRefGoogle Scholar
  7. 7.
    Geimer, M., Hoste, K., McLay, R.: Modern scientific software management using easybuild and Lmod. In: Proceedings of the 1st Workshop on HPC User Support Tools (HUST 2014), pp. 41–51. IEEE Press (2014)Google Scholar
  8. 8.
    Gorp, P.V., Mazanek, S.: SHARE: a web portal for creating and sharing executable research papers. Procedia Comput. Sci. 4, 589–597 (2011)CrossRefGoogle Scholar
  9. 9.
    Heydon, A., Levin, R., Yu, Y.: Caching function calls using precise dependencies. In: Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, pp. 311–320. ACM (2000)Google Scholar
  10. 10.
    Jeanvoine, E., Sarzyniec, L., Nussbaum, L.: Kadeploy3: efficient and scalable operating system provisioning. USENIX; login 38(1), 38–44 (2013)Google Scholar
  11. 11.
    Ruiz, C., Harrache, S., Mercier, M., Olivier, R.: Reconstructable software appliances with kameleon. SIGOPS Oper. Syst. Rev. 49(1), 80–89 (2015)CrossRefGoogle Scholar
  12. 12.
    Stanisic, Luka, Legrand, Arnaud: Effective reproducible research with org-mode and git. In: Lopes, L., et al. (eds.) Euro-Par 2014, Part I. LNCS, vol. 8805, pp. 475–486. Springer, Heidelberg (2014) Google Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.InriaBordeauxFrance
  2. 2.Max Delbrück Center for Molecular MedicineBerlinGermany

Personalised recommendations