Motivation
Nixpkgs are a foundational tool promising to rescue the modern software supply chain from its exploding complexity. Over the past decade, "Functional Package Management", once seen as an Academic fancy, has been embraced by the Industry as a requirement for mission-critical systems.
The Nixpkgs CUDA effort began in ambition to revision Reproducible Research, Scientific and High-Performance Computing (HPC) as grounded in this paradigm of "immutable" and "functional" software management.
Principles
-
Our work is goals-driven:
Nixpkgs doesn't need
CUDA ("AI") for the sake of CUDA ("AI")
. We anticipate "Functional Software Deployment" becoming the standard in Research and HPC, as it has for the software industry at large. We cautiously believe this development may foster creativity, re-introduce the feeling of "playful exploration" for the researcher, the curious "hacker", and the end-user of such research alike. We seek to bring that future closer.Our incentive is to collaborate with the researcher, the RSE, and the individual. For the enterprise, we and the broader Nixpkgs community offer plentiful commercial support options.
- We cannot impose work on others: we stand on the shoulders of giants,
and much of "CUDA" maintenance in Nixpkgs really happens in e.g.
stdenvandpython3XPackages, benefiting frompython-updatesand staging efforts. We recognize we depend on so many other maintainers and that our project cannot succeed unless their work is rewarding and sustainable. - We support what we have access to: we'd like for Nixpkgs to encode the "know-how" for all hardware in existence and all use-cases imaginable, but with our limited resources we must prioritize what we believe the common "hacker" and the "researcher" is likely to possess. We'll restrict our attention to the devices we can add to our CI. We'd be excited to work with clusters of GB200:s, but such support can only be sustainably offered on a commercial basis.
Scope of Work
- Design: for two decades Nixpkgs dedicated itself to determinism and correctness; we're researching how Nixpkgs can also accommodate "co-processor" or "accelerator" devices, ISA-specific optimizations, HPC- and RSE-specific workflows.
- Packaging: select and maintain the core components of the Nixpkgs' HPC and Scientific Computing ecosystems. We fill gaps, carry out updates, watch for regressions, upstream patches, identify and build test suites for important use-cases, tend to the infrastructure running these tests.
- Documentation: we seek to identify and document CUDA deployment, RSE, and HPC best practices based on Nixpkgs.
- Communication: Nixpkgs and the world of FOSS is a dynamic and quickly evolving organism with many stakeholders; we believe it is our task to defend the interests of HPC and Scientific Computing in Nixpkgs' media, and Nixpkgs' and Functional Package Management's interests in Upstream Projects and the Industry.
Call for Sponsors
Nixpkgs CUDA Team is seeking funding for infrastructure and maintenance. Individual members offer commercial support services. Reach out!
Contacts
- Daniel Hofer: daniel@dhofer.com
- Connor Baker: connorbaker01@gmail.com.
- @SomeoneSerge and KerruKinutum Oy: hello@kerrukinutum.com.
- Gaétan Lepage: gaetan@glepage.com.
- Yuriy Taraday:
@YorikSar. - Broader Nixpkgs Community.
Acknowledgments
The team was founded in 2022 by Samuel Ainsworth (nixpkgs-upkeep, nixpkgs jaxlib, &c.).
Past members include @knedlsepp, @prusnak.
Much of the initial refactoring of cudaPackages had been done by @FRidh.
The Team has benefited greatly from help and advice of Kevin Mittman.