!eWOErHSaiddIbsUNsJ:nixos.org

NixOS CUDA

291 Members
CUDA packages maintenance and support in nixpkgs | https://github.com/orgs/NixOS/projects/27/ | https://nixos.org/manual/nixpkgs/unstable/#cuda57 Servers

Load older messages


SenderMessageTime
7 Mar 2025
@mdietrich:matrix.orgmdietrich

Sorry, I am back now. It seems that my setup had complicated things: I was trying stuff on a laptop while the actual setup was on another host (with the actual GPU), but I did use the correct hostname for the workstation, which should (I mean, that is the whole point of Nix?) lead to the same build. (Both systems are x86_64) However I was also trying globally enable cudaSupport and package-overridden cudaSupport, which might have lead to me making a mistake, I don't know. All I can say is that

nix build --override-input nixpkgs github:NixOS/nixpkgs/9f41a78ead0fbe2197cd4c09b5628060456cd6e3 .#nixosConfigurations.$(hostname).pkgs.onnxruntime

now just downloads onnxruntime from the cache, which is the expected behaviour. I'm going to check without overridden input and pytorch again and then with the whole system.
Another question though: How would I override cudaSupport for a single package and its dependencies? Like llama-cpp is easy (llama-cpp.package = pkgs.override { cudaSupport = true; }) but open-webui itself does not have a cudaSupport option, but onnxruntime and pytorch do.

15:27:49
@mdietrich:matrix.orgmdietrich Building without the overridden nixpkgs input forces rebuild (I used just nix build .#nixosConfigurations.$(hostname).pkgs.onnxruntime) 15:29:00
@mdietrich:matrix.orgmdietrichFor earlier, I meant the derivation store path of https://hydra.nix-community.org/build/3297277#tabs-details15:39:13
@mdietrich:matrix.orgmdietrichOk, python3.12-torch-2.5.1 is fetched from the community cache again iff I override the nixpkgs input again to the same hash as in https://hydra.nix-community.org/build/3534138#tabs-buildinputs15:43:38
@mdietrich:matrix.orgmdietrich As in nix build --override-input nixpkgs github:NixOS/nixpkgs/e9b0ff70ddc61c42548501b0fafb86bb49cca858 .#nixosConfigurations.$(hostname).pkgs.python3Packages.pytorch 15:43:55
@mdietrich:matrix.orgmdietrichIf I don't, then it rebuilds15:44:23
@mdietrich:matrix.orgmdietrichDoes that mean I have to find the right commit in nixpkgs that is somewhere between the onnxruntime hydra build, pytorch hydra build and my system that lets me fetch all of them?15:45:26
@mdietrich:matrix.orgmdietrichOooorrr I just need to update my nixpkgs again. Weird, it was not that old, only a week or so. I guess that fixed it (apart from llama-cpp not actually using the GPU, but that is another issue). Thanks for the debugging help, I definitely learned new ways of debugging such problems here!15:52:49
@adam_neverwas:matrix.orgAdam Neverwas joined the room.15:56:04
@mdietrich:matrix.orgmdietrichWell, not so fast: I now get a build error of /nix/store/8msyislppkkr4dxzhir6qd2vc6qg23am-python3.12-rapidocr-onnxruntime-1.4.4.drv, which seems unrelated to https://hydra.nixos.org/build/291903538, which fails because of SDL's build failure (a dependency for some reason). I get a segfault somewhere in python in the pytestCheckPhase of the build.16:55:43
@ss:someonex.netSomeoneSerge (back on matrix)

Another question though: How would I override cudaSupport for a single package and its dependencies?

That's why we use import nixpkgs { config.cudaSupport = true; }

20:55:11
8 Mar 2025
@hexa:lossy.networkhexa @connorbaker:matrix.org i dont suppose your talk was recorded? 12:23:13
@connorbaker:matrix.orgconnor (he/him)It probably was, just taking them a while to upload. If not, the slides are available here: https://github.com/ConnorBaker/2025-planet-nix19:57:32
@ruroruro:matrix.orgruroUnless I am misunderstanding something, looking at the Southern California Linux Expo youtube channel, it seems that the only nix related streams from the 6th and 7th of march are for Room 101. And the "Evaluating the Nix Evaluator" talk was scheduled for Room 2 (which I am assuming is actually Room 102)? I wonder...20:42:23
@justbrowsing:matrix.orgKevin Mittman (UTC-8)
In reply to @ruroruro:matrix.org
Unless I am misunderstanding something, looking at the Southern California Linux Expo youtube channel, it seems that the only nix related streams from the 6th and 7th of march are for Room 101. And the "Evaluating the Nix Evaluator" talk was scheduled for Room 2 (which I am assuming is actually Room 102)? I wonder...
There were two room tracks for PlanetNix
23:57:15
@justbrowsing:matrix.orgKevin Mittman (UTC-8)It usually takes a month or so for the complete set of talks to be cut, edited and uploaded23:58:46
9 Mar 2025
@justbrowsing:matrix.orgKevin Mittman (UTC-8)oh TIL they have livestreams00:23:32
@connorbaker:matrix.orgconnor (he/him)Room 2 for Planet Nix was conference room 104, which I didn’t see on the livestreams when I checked this morning 🤷‍♂️02:25:53
@osmanfbayram:matrix.orgosbm changed their display name from osman bayram to osbm.13:30:40
@ruroruro:matrix.orgruro SomeoneSerge (UTC+U[-12,12]): sorry to bother you with this again, but could you please take a final look at https://github.com/NixOS/nixpkgs/pull/379768#discussion_r1977975372 and let me know if you prefer setting badPlatformsConditions/hydraPlatforms for broken packages or filtering them in release-cuda.nix? 17:25:00
@ruroruro:matrix.orgruroAlso, apparently the "Evaluation Errors" tab missing for individual evaluations isn't a nix-community specific problem. The same thing happens with the official Hydra instance, so I opened an issue upstream: https://github.com/NixOS/hydra/issues/1453.17:28:52
@ss:someonex.netSomeoneSerge (back on matrix)tomorrow 🙏23:37:06
11 Mar 2025
@ss:someonex.netSomeoneSerge (back on matrix)

RE: https://discourse.nixos.org/t/why-does-nixpkgs-config-exist/61456/6
RE: wrappers, stdenv, etc.
RE: "The easiest way to achieve consistency today is to just enable cudaSupport Nixpkgs-wide using config"

And yet again, I don't think it has to be this way. It's not inherent, it's just a trait of callPackage/makeScope and of overrides being local. To try and defend the notion of the hypothetical stdenv.cudaSupport, if all of a package's inputs consistently accepted stdenv as a parameter, and could be entirely configured just using stdenv, then all it'd take to achieve consistency is to apply .override { inherit stdenv; } to all *Inputs. And if we didn't limit ourselves to the idea of callPackage and that there's a global "container" from which we "fill in" our parameters, that could probably be automated (by doing dynamic scoping essentially)

But ok let's leave callPackage and scoping aside. This still made me think of how to layer nvcc-wrapper and the conditional stdenv functionality. I'm back to the notion that we actually can move cudaSupport to (the platform attrsets and) stdenv, replace optionals cudaSupport with optionals stdenv.cudaSupport, and implement cudaStdenv.mkDerivation in such a way that it would be able to downgrade the compiler if it detects that its argument is capable of using CUDA functionality. The detection could still be done in two ways: we could demand that derivations explicitly pass an argument such as, say, cudaCapable = true, or we could detect that nvcc is in its nativeBuildInputs. I'd vote for the former because llvm, nvc++, and it's more explicit too. The cudaStdenv constructor could be made configurable so that it's possible to disable the downgrading (e.g. when we don't care about consistency or the LTO and we just trust in the wrapper; or if llvm offers more relaxed constraints). And regardless of the stdenv layer, the lower-level nvcc wrapper can exist and be used independently.

CC connor (he/him) (UTC-8)

10:09:54
@connorbaker:matrix.orgconnor (he/him)I’ll have to get back to you on that after I get a chance to think about it14:26:20
@ruroruro:matrix.orgruro

I just wanted to make sure. You commented

H'm well it seems to make sense at least for

nix eval nixpkgs#cudaPackages.cudnn_8_0.brokenConditions
{ "CUDA version is too new" = true; ... }

Did I understand correctly, that you are okay with

  • moving cudnn.brokenConditions."CUDA version is too old/new" to badPlatformsConditions
  • moving nsight_systems.brokenConditions."CUDA too old (<11.8)" to badPlatformsConditions
  • moving nvidia_driver.brokenConditions."Package is not supported; use drivers from linuxPackages" to badPlatformsConditions
  • adding tensorrt.hydraPlatforms = none
    ?
19:19:31
@ruroruro:matrix.orgruro *

I just wanted to make sure. You commented

H'm well it seems to make sense at least for

nix eval nixpkgs#cudaPackages.cudnn_8_0.brokenConditions
{ "CUDA version is too new" = true; ... }

Did I understand correctly, that you are okay with

  • moving cudnn.brokenConditions."CUDA version is too old/new" to badPlatformsConditions
  • moving nsight_systems.brokenConditions."CUDA too old (<11.8)" to badPlatformsConditions
  • moving nvidia_driver.brokenConditions."Package is not supported; use drivers from linuxPackages" to badPlatformsConditions
  • adding tensorrt.hydraPlatforms = none

?

19:19:38
@ruroruro:matrix.orgruro *

I just wanted to make sure. You left this comment on the release-cuda issue:

H'm well it seems to make sense at least for

nix eval nixpkgs#cudaPackages.cudnn_8_0.brokenConditions
{ "CUDA version is too new" = true; ... }

Did I understand correctly, that you are okay with

  • moving cudnn.brokenConditions."CUDA version is too old/new" to badPlatformsConditions
  • moving nsight_systems.brokenConditions."CUDA too old (<11.8)" to badPlatformsConditions
  • moving nvidia_driver.brokenConditions."Package is not supported; use drivers from linuxPackages" to badPlatformsConditions
  • adding tensorrt.hydraPlatforms = none

?

19:20:16
@ruroruro:matrix.orgruro *

I just wanted to make sure. You left this comment on the release-cuda issue:

H'm well it seems to make sense at least for

nix eval nixpkgs#cudaPackages.cudnn_8_0.brokenConditions
{ "CUDA version is too new" = true; ... }

Did I understand correctly, that you are okay with

  • moving cudnn.brokenConditions."CUDA version is too old/new" to badPlatformsConditions
  • moving nsight_systems.brokenConditions."CUDA too old (<11.8)" to badPlatformsConditions
  • moving nvidia_driver.brokenConditions."Package is not supported; use drivers from linuxPackages" to badPlatformsConditions
  • adding tensorrt.hydraPlatforms = none

?

As I've mentioned, you can see the exact code I am talking about in this branch.

19:21:25
@ruroruro:matrix.orgruro *

I just wanted to make sure. You left this comment on the release-cuda issue:

H'm well it seems to make sense at least for

nix eval nixpkgs#cudaPackages.cudnn_8_0.brokenConditions
{ "CUDA version is too new" = true; ... }

Did I understand correctly, that you are okay with

  • moving cudnn.brokenConditions."CUDA version is too old/new" to badPlatformsConditions
  • moving nsight_systems.brokenConditions."CUDA too old (<11.8)" to badPlatformsConditions
  • moving nvidia_driver.brokenConditions."Package is not supported; use drivers from linuxPackages" to badPlatformsConditions
  • adding tensorrt.hydraPlatforms = none

?

As I've mentioned, you can see the exact code I am talking about in here.

19:22:37
@ruroruro:matrix.orgruro *

I just wanted to make sure. You left this comment on the release-cuda issue:

H'm well it seems to make sense at least for

nix eval nixpkgs#cudaPackages.cudnn_8_0.brokenConditions
{ "CUDA version is too new" = true; ... }

Did I understand correctly, that you are okay with

  • moving cudnn.brokenConditions."CUDA version is too old/new" to badPlatformsConditions
  • moving nsight_systems.brokenConditions."CUDA too old (<11.8)" to badPlatformsConditions
  • moving nvidia_driver.brokenConditions."Package is not supported; use drivers from linuxPackages" to badPlatformsConditions
  • adding tensorrt.hydraPlatforms = none

?

As I've mentioned, you can see the exact code I am talking about here.

19:22:44

Show newer messages


Back to Room ListRoom Version: 9