| 23 Oct 2024 |
connor (he/him) | God what a nightmare | 16:36:36 |
connor (he/him) | We should also update OpenCV at some point to 4.10 if we haven’t already so it can build with CUDA 12.4+ | 16:38:16 |
connor (he/him) | Oh! Unrelated but this was a cute change I made that I quite like: https://github.com/ConnorBaker/cuda-packages/blob/c81a6595f07456c6cc34d8976031c4fa972a741f/cudaPackages-common/backendStdenv.nix#L36
Sets some defaults for the CUDA stdenv and adds a name prefix, similar to what the Python packaging does, for more descriptive store paths | 16:40:07 |
Gaétan Lepage | Thanks for taking the time to look at it and explain all of this ! | 21:26:24 |
| 25 Oct 2024 |
| * connor (he/him) makes a sad noise | 11:51:25 |
connor (he/him) | https://gist.github.com/ConnorBaker/6c9c522d46e4244eb33d2aad94c753b0 | 11:51:27 |
| 26 Oct 2024 |
Gaétan Lepage | 🥲 | 20:34:04 |
Gaétan Lepage |  Download clipboard.png | 20:34:07 |
| 27 Oct 2024 |
Moritz Sanft | Does anyone of you use clangd as a C LSP, with cudatoolkit coming from a shell? clangd seems not to take notice of CUDA in that case, saying Cannot find CUDA installation; ... | 07:54:44 |
Moritz Sanft | Also, does cudatoolkit miss a dependency on gcc, or am I mistaken by this error:
✖ nvcc main.cu
gcc: No such file or directory
| 07:56:37 |
Moritz Sanft | Also, does cudatoolkit miss a dependency on gcc, or am I mistaken by this error:
✖ nvcc main.cu
gcc: No such file or directory
EDIT: No, it indeed seems to try and find GCC:
[pid 46094] execve("/nix/store/j09h8v4ldx0ix547gjp0p2asj0asssaw-glib-2.80.4-bin/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/run/wrappers/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/home/msanft/.nix-profile/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/nix/profile/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/home/msanft/.local/state/nix/profile/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/etc/profiles/per-user/msanft/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/nix/var/nix/profiles/default/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/run/current-system/sw/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
| 07:57:18 |
SomeoneSerge (back on matrix) | In reply to @msanft:matrix.org Also, does cudatoolkit miss a dependency on gcc, or am I mistaken by this error:
✖ nvcc main.cu
gcc: No such file or directory
EDIT: No, it indeed seems to try and find GCC:
[pid 46094] execve("/nix/store/j09h8v4ldx0ix547gjp0p2asj0asssaw-glib-2.80.4-bin/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/run/wrappers/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/home/msanft/.nix-profile/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/nix/profile/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/home/msanft/.local/state/nix/profile/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/etc/profiles/per-user/msanft/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/nix/var/nix/profiles/default/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
[pid 46094] execve("/run/current-system/sw/bin/gcc", ["gcc", "-E", "/tmp/tmpxft_0000b40d_00000000-2."...], 0x7ffe40c921b0 /* 97 vars */) = -1 ENOENT (No such file or directory)
Yea we don't link gcc directly in nvcc but provide it independently via the overridden stdenv | 09:40:39 |
SomeoneSerge (back on matrix) | In reply to @glepage:matrix.org The topic is interesting. Imagine being able to have a massive decentralized build farm ! That would be amazing.
Of course this is far from possible today (mostly because of nix limitations). A horror security-wise though xD | 11:08:32 |
| @pta02:matrix.org left the room. | 12:20:53 |
SomeoneSerge (back on matrix) | connor (he/him) (UTC-7): hiya, any idea why there's nothing like find_package(protobuf) in onnx/onnx before it tests for TARGET protobuf::libprotobuf[-lite]? Is it supposed to inherit these variables from onnxruntime or something? | 15:32:43 |
| 28 Oct 2024 |
connor (he/him) | I would have thought that, but ONNX is also built directly and not just as a dependency of onnxruntime, so I don’t think it’s because they intend ONNX to be built solely as a subproject and leave configuration up to the parent
I don’t understand how they expect it to be magically detected… but it works for me from what I remember (https://github.com/ConnorBaker/cuda-packages/blob/main/cudaPackages-common/onnx.nix)
Although I’m doing the cursed C++/Python install and had to carefully choose dependencies from the normal package set and from Python packages 🤷♂️ | 06:39:55 |
| 29 Oct 2024 |
| @mat:matrix.matmoa.xyz left the room. | 19:58:14 |
| 30 Oct 2024 |
| @seapat:matrix.org left the room. | 07:49:56 |
SomeoneSerge (back on matrix) | In reply to @connorbaker:matrix.org Oh! Unrelated but this was a cute change I made that I quite like: https://github.com/ConnorBaker/cuda-packages/blob/c81a6595f07456c6cc34d8976031c4fa972a741f/cudaPackages-common/backendStdenv.nix#L36
Sets some defaults for the CUDA stdenv and adds a name prefix, similar to what the Python packaging does, for more descriptive store paths Hey wanna publish a review on exposing extendMkDerivationArgs? | 15:24:02 |
SomeoneSerge (back on matrix) | Could help with upstreaming the tricks | 15:24:30 |
SomeoneSerge (back on matrix) | Btw at NixCon Tom brought up moving cudaSupport &el into the system which I think was raised here at least on a few occasions | 15:26:05 |
SomeoneSerge (back on matrix) | Maaaybe it's time? :) | 15:26:11 |
SomeoneSerge (back on matrix) | We could even skip exposing nixpkgsFun in the public api then: could be just pkgsCross.cuda | 15:27:51 |
SomeoneSerge (back on matrix) | GPU tests? That's buildPlatform with cuda | 15:28:50 |
SomeoneSerge (back on matrix) | * Btw at NixCon Tom brought up moving cudaSupport &al into the system which I think was raised here at least on a few occasions | 15:32:10 |
connor (he/him) | In reply to @ss:someonex.net Btw at NixCon Tom brought up moving cudaSupport &al into the system which I think was raised here at least on a few occasions I’d really like capabilities to exposed as part of potential pkgsCross because they are effectively a platform target for the purposes of codegen; thoughts? | 19:02:51 |
SomeoneSerge (back on matrix) | In reply to @connorbaker:matrix.org I’d really like capabilities to exposed as part of potential pkgsCross because they are effectively a platform target for the purposes of codegen; thoughts? That's exactly the idea | 20:19:26 |
SomeoneSerge (back on matrix) | I don't think we should be extending the triples, but it makes in the parsed system i think | 20:20:19 |
| 31 Oct 2024 |
| Frederik Semmel joined the room. | 15:16:14 |
Frederik Semmel | In reply to @connorbaker:matrix.org Absolute biggest pain in my ass right now is packaging onnxruntime (https://github.com/ConnorBaker/cuda-packages/blob/main/cudaPackages-common/onnxruntime/package.nix).
For the ONNX and TensorRT ecosystem, I’m doing a cursed build where the CMake and Python builds are interlaced.
Turns out doing a straight CMake build gives different results compared to doing a Python build. Go figure, the multi-thousand line Python scripts invoked by setup.py change how stuff is configured. Hi connor (he/him) (UTC-7) , first off, the Nix CUDA team is doing awesome work! I have spent the last week reading everything cuda related in nixpkgs and watching NixCon talks :) I am also trying to run onnxruntime with the tensorrt backend on a jetson device with NixOS. Really looking forward to how you might solve the puzzle there. I am new to Nix, therefore I hoped it would be simpler for me to patch the onnxruntime-gpu binaries provided by jetson zoo. My approach is:
- use poetry2nix to pull the specific wheel and run patchelf
- use an poetry2nix overlay to add the cuda packages from jetpack-nixos to the
buildInputs of onnxruntime-gpu
Is this doable like this, do you recommend this? I find it amazing that torch from nixpkgs just works thanks to cuda_compat. Can the cuda_compat trick work here too? Thanks a lot for your time!
| 15:44:26 |