Appreciate the productive & solution-oriented discussion . Certainly a cachix-style solution that all data-scientists could just add to their configuration.nix
would be great. But that doesn’t address the CI/CD problem that hydra solves so beautifully for an entire OS. Anyone that has tried to have an overlay with numpy.blas = mkl
knows this pain. In the one year I’ve been using NixOS, I’ve never succeeded in building python3.withPackages (ps: with ps; [ numpy scipy pytorch sklearn ])
on unstable. I think this is largely because the maintainer test burden on reverse dependencies is high due to extremely long builds.
I completely understand why NixOS is free-sofware only by default. I think Ubuntu provides a good example here, where main
& universe
are Free & open source, however users can opt in to restricted
–which provides binaries for CUDA–as well as multiverse
which provides binaries for MKL. My understanding is multiverse also provides builds against these libraries e.g. caffe-cuda
, although I haven’t installed myself.
I think canonical is trustable to keep track of legality. And not to mention that RHEL/CentOS, Fedora, SLES, and OpenSUSE also redistribute CUDA. Conda does as well, and if I’m not mistaken, so does pip.
I’m confident we are in clear, legal territory if we wrap rather than modify, but if the main concern is licensing, I’m happy to reach out to Nvidia for clarification as it pertains to NixOS / hydra and report back.
Splitting CUDA into parts according to the license sounds like a good idea to me.
Just to clarify, CUDA itself is under one license, but separate CUDA libraries like cuDNN have slightly different supplements. Modern deep learning frameworks like PyTorch and TensorFlow depend on both CUDA and cuDNN. The only other Nvidia dependency I’m aware of for PyTorch is nccl, which has permissive licensing.