Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cudaPackages: generalize and refactor setup hooks #281576

Merged
merged 2 commits into from
Mar 19, 2024

Conversation

yannham
Copy link
Contributor

@yannham yannham commented Jan 17, 2024

This PR refactors CUDA setup hooks, and in particular autoAddOpenGLRunpath and autoAddCudaCompatRunpathHook, that have a lot of code in common (in fact, I introduced the latter by copy pasting most of the bash script of the former and changing a few line). This is not satisfying for maintenance, as demonstrated by #277213, because we need to duplicate changes to both hooks.

This commit abstracts the common part in a single shell function that applies a generic patch action to every elf file in the output. It is called autoFixElfFiles because I believe autoPatchElfFiles would have been confused with something autoPatchelf-related.

For autoAddOpenGLRunpath the action is just addOpenGLRunpath (now addDriverRunpath), and is few line function for autoAddCudaCompatRunpathHook.

Doing so, we also takes the occasion to use the newer addDriverRunpath instead of the previous addOpenGLRunpath, and rename the CUDA hook to reflect that as well.

Description of changes

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch 2 times, most recently from 81c1478 to c0a86a2 Compare January 17, 2024 17:45
@ConnorBaker ConnorBaker added the 6.topic: cuda Parallel computing platform and API label Jan 17, 2024
@ConnorBaker ConnorBaker force-pushed the refactor/cuda-setup-hooks-refactor branch from c0a86a2 to 2580c41 Compare January 17, 2024 20:39
@ConnorBaker
Copy link
Contributor

Alrighty, had a chance to take a look @yannham!

First, the segfaults you were seeing: the root of the problem is that bash doesn't have higher-order functions, so when you wrote stuff like postFixupHooks+=(autoFixElfFiles addCudaCompatRunpath) it was adding autoFixElfFiles and addCudaCompatRunpath as separate fixup hooks. As a result, the autoFixElfFiles wasn't receiving any arguments -- when you tried to run $1 "$f" you were getting segfaults because $1 wasn't set.

To work around the lack of higher-order functions and the fact that bash will eagerly evaluate things, I made wrapper functions for each of the two setup hooks this refactors -- they basically thunks because they just postpone the evaluation of the the thing we care about.

To make debugging these easier in the future, I added some conditionals to catch improper usage of the setup hooks.

Additionally, I changed indentation to be consistent.

I've updated and force-pushed your commit with these changes; feel free to take what you want from them.

@ConnorBaker
Copy link
Contributor

For what it's worth, I was able to build and run nix-cuda-test.

$ cat ~/.config/nixpkgs/config.nix 
{
  allowUnfree = true;
  allowBroken = false;
  cudaSupport = true;
  cudaCapabilities = ["8.9"];
  cudaForwardCompat = false;
}
$ nom build --impure github:connorbaker/nix-cuda-test#nix-cuda-test --override-input nixpkgs github:nixos/nixpkgs/2580c4182e1af070b7fa7720e1b4f6ed407ba286
... ignoring build logs
$ ./result/bin/nix-cuda-test
Seed set to 42
Using bfloat16 Automatic Mixed Precision (AMP)
GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
Missing logger folder: /home/connorbaker/lightning_logs
Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to data/cifar-10-python.tar.gz
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 170498071/170498071 [00:01<00:00, 89975099.50it/s]
Extracting data/cifar-10-python.tar.gz to data
Files already downloaded and verified
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]

  | Name      | Type             | Params
-----------------------------------------------
0 | criterion | CrossEntropyLoss | 0     
1 | model     | ViT              | 86.3 M
-----------------------------------------------
86.3 M    Trainable params
0         Non-trainable params
86.3 M    Total params
345.317   Total estimated model params size (MB)
Epoch 9: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 781/781 [01:28<00:00,  8.80it/s, v_num=0, train_loss=2.350, val_loss=2.330]`Trainer.fit` stopped: `max_epochs=10` reached.                                                                                                                                                                                                                                                                                                                                                                                                                                                     
Epoch 9: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 781/781 [01:30<00:00,  8.64it/s, v_num=0, train_loss=2.350, val_loss=2.330]

@yannham
Copy link
Contributor Author

yannham commented Jan 18, 2024

@ConnorBaker thanks! I actually arrived at the same conclusion yesterday, in my bed 😅 because I had the issue before with a script unrelated to Nix but with clean_actions that would work mostly the same way. I think what I did there was just to quote the command, like cleanup_actions+=("git foo bar baz"), and that would work. It's really not very important, but I'm going to try that, just out of curiosity 🙂

I'll do a last pass and set as ready for review

@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch 2 times, most recently from b8063e2 to 21da3cf Compare January 18, 2024 09:32
@yannham
Copy link
Contributor Author

yannham commented Jan 18, 2024

Quoting seems to work, and it's a little less verbose, so I changed that. I'm happy to revert to using a proper lambda if needed.

Otherwise it's good to go on my hand, tested to build and run cudaPackages_12.saxpy on the Jetson.

Copy link
Contributor

@ConnorBaker ConnorBaker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the stale TODO, looks good! Good find with the quoting as well!

@ConnorBaker ConnorBaker changed the title [cudaPackages]: Refactor and clean up cuda setup hooks cudaPackages: generalize and refactor setup hooks Jan 18, 2024
@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch from 21da3cf to 73ccd08 Compare January 18, 2024 14:54
@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch from 73ccd08 to f401692 Compare January 18, 2024 20:03
@delroth delroth removed the 12.approvals: 1 This PR was reviewed and approved by one reputable person label Jan 18, 2024
@SomeoneSerge
Copy link
Contributor

Result of nixpkgs-review pr 281576 --extra-nixpkgs-config '{ cudaSupport = true; allowUnfree = true; }' run on x86_64-linux 1

283 packages marked as broken and skipped:
  • caffe
  • caffe.bin
  • caffeWithCuda
  • caffeWithCuda.bin
  • cudaPackages.cudnn_7_4
  • cudaPackages.cudnn_7_4.dev
  • cudaPackages.cudnn_7_4.lib
  • cudaPackages.cudnn_7_4.static
  • cudaPackages.cudnn_7_6
  • cudaPackages.cudnn_7_6.dev
  • cudaPackages.cudnn_7_6.lib
  • cudaPackages.cudnn_7_6.static
  • cudaPackages.cudnn_8_0
  • cudaPackages.cudnn_8_0.dev
  • cudaPackages.cudnn_8_0.lib
  • cudaPackages.cudnn_8_0.static
  • cudaPackages.cudnn_8_1
  • cudaPackages.cudnn_8_1.dev
  • cudaPackages.cudnn_8_1.lib
  • cudaPackages.cudnn_8_1.static
  • cudaPackages.cudnn_8_2
  • cudaPackages.cudnn_8_2.dev
  • cudaPackages.cudnn_8_2.lib
  • cudaPackages.cudnn_8_2.static
  • cudaPackages.cudnn_8_3
  • cudaPackages.cudnn_8_3.dev
  • cudaPackages.cudnn_8_3.lib
  • cudaPackages.cudnn_8_3.static
  • cudaPackages.cudnn_8_4
  • cudaPackages.cudnn_8_4.dev
  • cudaPackages.cudnn_8_4.lib
  • cudaPackages.cudnn_8_4.static
  • cudaPackages.cudnn_8_5
  • cudaPackages.cudnn_8_5.dev
  • cudaPackages.cudnn_8_5.lib
  • cudaPackages.cudnn_8_5.static
  • cudaPackages.cudnn_8_6
  • cudaPackages.cudnn_8_6.dev
  • cudaPackages.cudnn_8_6.lib
  • cudaPackages.cudnn_8_6.static
  • cudaPackages.cudnn_8_7
  • cudaPackages.cudnn_8_7.dev
  • cudaPackages.cudnn_8_7.lib
  • cudaPackages.cudnn_8_7.static
  • cudaPackages.cudnn_8_8
  • cudaPackages.cudnn_8_8.dev
  • cudaPackages.cudnn_8_8.lib
  • cudaPackages.cudnn_8_8.static
  • cudaPackages.nvidia_driver
  • cudaPackages.nvidia_driver.bin
  • cudaPackages.nvidia_driver.lib
  • cudaPackages.tensorrt
  • cudaPackages.tensorrt.bin
  • cudaPackages.tensorrt.dev
  • cudaPackages.tensorrt.lib
  • cudaPackages.tensorrt.python
  • cudaPackages.tensorrt.sample
  • cudaPackages.tensorrt.static
  • cudaPackages.tensorrt_8_0
  • cudaPackages.tensorrt_8_0.bin
  • cudaPackages.tensorrt_8_0.dev
  • cudaPackages.tensorrt_8_0.lib
  • cudaPackages.tensorrt_8_0.python
  • cudaPackages.tensorrt_8_0.sample
  • cudaPackages.tensorrt_8_0.static
  • cudaPackages.tensorrt_8_2
  • cudaPackages.tensorrt_8_2.bin
  • cudaPackages.tensorrt_8_2.dev
  • cudaPackages.tensorrt_8_2.lib
  • cudaPackages.tensorrt_8_2.python
  • cudaPackages.tensorrt_8_2.sample
  • cudaPackages.tensorrt_8_2.static
  • cudaPackages.tensorrt_8_4
  • cudaPackages.tensorrt_8_4.bin
  • cudaPackages.tensorrt_8_4.dev
  • cudaPackages.tensorrt_8_4.lib
  • cudaPackages.tensorrt_8_4.python
  • cudaPackages.tensorrt_8_4.sample
  • cudaPackages.tensorrt_8_4.static
  • cudaPackages.tensorrt_8_5
  • cudaPackages.tensorrt_8_5.bin
  • cudaPackages.tensorrt_8_5.dev
  • cudaPackages.tensorrt_8_5.lib
  • cudaPackages.tensorrt_8_5.python
  • cudaPackages.tensorrt_8_5.sample
  • cudaPackages.tensorrt_8_5.static
  • cudaPackages.tensorrt_8_6
  • cudaPackages.tensorrt_8_6.bin
  • cudaPackages.tensorrt_8_6.dev
  • cudaPackages.tensorrt_8_6.lib
  • cudaPackages.tensorrt_8_6.python
  • cudaPackages.tensorrt_8_6.sample
  • cudaPackages.tensorrt_8_6.static
  • cudaPackagesGoogle.cudnn_7_4
  • cudaPackagesGoogle.cudnn_7_4.dev
  • cudaPackagesGoogle.cudnn_7_4.lib
  • cudaPackagesGoogle.cudnn_7_4.static
  • cudaPackagesGoogle.cudnn_7_6
  • cudaPackagesGoogle.cudnn_7_6.dev
  • cudaPackagesGoogle.cudnn_7_6.lib
  • cudaPackagesGoogle.cudnn_7_6.static
  • cudaPackagesGoogle.cudnn_8_0
  • cudaPackagesGoogle.cudnn_8_0.dev
  • cudaPackagesGoogle.cudnn_8_0.lib
  • cudaPackagesGoogle.cudnn_8_0.static
  • cudaPackagesGoogle.cudnn_8_1
  • cudaPackagesGoogle.cudnn_8_1.dev
  • cudaPackagesGoogle.cudnn_8_1.lib
  • cudaPackagesGoogle.cudnn_8_1.static
  • cudaPackagesGoogle.cudnn_8_2
  • cudaPackagesGoogle.cudnn_8_2.dev
  • cudaPackagesGoogle.cudnn_8_2.lib
  • cudaPackagesGoogle.cudnn_8_2.static
  • cudaPackagesGoogle.cudnn_8_3
  • cudaPackagesGoogle.cudnn_8_3.dev
  • cudaPackagesGoogle.cudnn_8_3.lib
  • cudaPackagesGoogle.cudnn_8_3.static
  • cudaPackagesGoogle.cudnn_8_4
  • cudaPackagesGoogle.cudnn_8_4.dev
  • cudaPackagesGoogle.cudnn_8_4.lib
  • cudaPackagesGoogle.cudnn_8_4.static
  • cudaPackagesGoogle.cudnn_8_5
  • cudaPackagesGoogle.cudnn_8_5.dev
  • cudaPackagesGoogle.cudnn_8_5.lib
  • cudaPackagesGoogle.cudnn_8_5.static
  • cudaPackagesGoogle.nvidia_driver
  • cudaPackagesGoogle.nvidia_driver.bin
  • cudaPackagesGoogle.nvidia_driver.lib
  • cudaPackagesGoogle.tensorrt_8_0
  • cudaPackagesGoogle.tensorrt_8_0.bin
  • cudaPackagesGoogle.tensorrt_8_0.dev
  • cudaPackagesGoogle.tensorrt_8_0.lib
  • cudaPackagesGoogle.tensorrt_8_0.python
  • cudaPackagesGoogle.tensorrt_8_0.sample
  • cudaPackagesGoogle.tensorrt_8_0.static
  • cudaPackagesGoogle.tensorrt_8_2
  • cudaPackagesGoogle.tensorrt_8_2.bin
  • cudaPackagesGoogle.tensorrt_8_2.dev
  • cudaPackagesGoogle.tensorrt_8_2.lib
  • cudaPackagesGoogle.tensorrt_8_2.python
  • cudaPackagesGoogle.tensorrt_8_2.sample
  • cudaPackagesGoogle.tensorrt_8_2.static
  • cudaPackagesGoogle.tensorrt_8_4
  • cudaPackagesGoogle.tensorrt_8_4.bin
  • cudaPackagesGoogle.tensorrt_8_4.dev
  • cudaPackagesGoogle.tensorrt_8_4.lib
  • cudaPackagesGoogle.tensorrt_8_4.python
  • cudaPackagesGoogle.tensorrt_8_4.sample
  • cudaPackagesGoogle.tensorrt_8_4.static
  • cudaPackagesGoogle.tensorrt_8_5
  • cudaPackagesGoogle.tensorrt_8_5.bin
  • cudaPackagesGoogle.tensorrt_8_5.dev
  • cudaPackagesGoogle.tensorrt_8_5.lib
  • cudaPackagesGoogle.tensorrt_8_5.python
  • cudaPackagesGoogle.tensorrt_8_5.sample
  • cudaPackagesGoogle.tensorrt_8_5.static
  • cudaPackages_10.cudnn_7_4
  • cudaPackages_10.cudnn_7_4.dev
  • cudaPackages_10.cudnn_7_4.lib
  • cudaPackages_10.cudnn_7_4.static
  • cudaPackages_10.cudnn_8_8
  • cudaPackages_10.cudnn_8_8.dev
  • cudaPackages_10.cudnn_8_8.lib
  • cudaPackages_10.cudnn_8_8.static
  • cudaPackages_10.cudnn_8_9
  • cudaPackages_10.cudnn_8_9.dev
  • cudaPackages_10.cudnn_8_9.lib
  • cudaPackages_10.cudnn_8_9.static
  • cudaPackages_10.tensorrt
  • cudaPackages_10.tensorrt.bin
  • cudaPackages_10.tensorrt.dev
  • cudaPackages_10.tensorrt.lib
  • cudaPackages_10.tensorrt.python
  • cudaPackages_10.tensorrt.sample
  • cudaPackages_10.tensorrt.static
  • cudaPackages_10.tensorrt_8_0
  • cudaPackages_10.tensorrt_8_0.bin
  • cudaPackages_10.tensorrt_8_0.dev
  • cudaPackages_10.tensorrt_8_0.lib
  • cudaPackages_10.tensorrt_8_0.python
  • cudaPackages_10.tensorrt_8_0.sample
  • cudaPackages_10.tensorrt_8_0.static
  • cudaPackages_10.tensorrt_8_2
  • cudaPackages_10.tensorrt_8_2.bin
  • cudaPackages_10.tensorrt_8_2.dev
  • cudaPackages_10.tensorrt_8_2.lib
  • cudaPackages_10.tensorrt_8_2.python
  • cudaPackages_10.tensorrt_8_2.sample
  • cudaPackages_10.tensorrt_8_2.static
  • cudaPackages_10.tensorrt_8_4
  • cudaPackages_10.tensorrt_8_4.bin
  • cudaPackages_10.tensorrt_8_4.dev
  • cudaPackages_10.tensorrt_8_4.lib
  • cudaPackages_10.tensorrt_8_4.python
  • cudaPackages_10.tensorrt_8_4.sample
  • cudaPackages_10.tensorrt_8_4.static
  • cudaPackages_10.tensorrt_8_5
  • cudaPackages_10.tensorrt_8_5.bin
  • cudaPackages_10.tensorrt_8_5.dev
  • cudaPackages_10.tensorrt_8_5.lib
  • cudaPackages_10.tensorrt_8_5.python
  • cudaPackages_10.tensorrt_8_5.sample
  • cudaPackages_10.tensorrt_8_5.static
  • cudaPackages_10.tensorrt_8_6
  • cudaPackages_10.tensorrt_8_6.bin
  • cudaPackages_10.tensorrt_8_6.dev
  • cudaPackages_10.tensorrt_8_6.lib
  • cudaPackages_10.tensorrt_8_6.python
  • cudaPackages_10.tensorrt_8_6.sample
  • cudaPackages_10.tensorrt_8_6.static
  • cudaPackages_11.cudnn_7_4
  • cudaPackages_11.cudnn_7_4.dev
  • cudaPackages_11.cudnn_7_4.lib
  • cudaPackages_11.cudnn_7_4.static
  • cudaPackages_11.cudnn_7_6
  • cudaPackages_11.cudnn_7_6.dev
  • cudaPackages_11.cudnn_7_6.lib
  • cudaPackages_11.cudnn_7_6.static
  • cudaPackages_11.cudnn_8_0
  • cudaPackages_11.cudnn_8_0.dev
  • cudaPackages_11.cudnn_8_0.lib
  • cudaPackages_11.cudnn_8_0.static
  • cudaPackages_11.cudnn_8_1
  • cudaPackages_11.cudnn_8_1.dev
  • cudaPackages_11.cudnn_8_1.lib
  • cudaPackages_11.cudnn_8_1.static
  • cudaPackages_11.cudnn_8_2
  • cudaPackages_11.cudnn_8_2.dev
  • cudaPackages_11.cudnn_8_2.lib
  • cudaPackages_11.cudnn_8_2.static
  • cudaPackages_11.cudnn_8_3
  • cudaPackages_11.cudnn_8_3.dev
  • cudaPackages_11.cudnn_8_3.lib
  • cudaPackages_11.cudnn_8_3.static
  • cudaPackages_11.cudnn_8_4
  • cudaPackages_11.cudnn_8_4.dev
  • cudaPackages_11.cudnn_8_4.lib
  • cudaPackages_11.cudnn_8_4.static
  • cudaPackages_11.cudnn_8_5
  • cudaPackages_11.cudnn_8_5.dev
  • cudaPackages_11.cudnn_8_5.lib
  • cudaPackages_11.cudnn_8_5.static
  • cudaPackages_11.nvidia_driver
  • cudaPackages_11.nvidia_driver.bin
  • cudaPackages_11.nvidia_driver.lib
  • cudaPackages_11.tensorrt_8_0
  • cudaPackages_11.tensorrt_8_0.bin
  • cudaPackages_11.tensorrt_8_0.dev
  • cudaPackages_11.tensorrt_8_0.lib
  • cudaPackages_11.tensorrt_8_0.python
  • cudaPackages_11.tensorrt_8_0.sample
  • cudaPackages_11.tensorrt_8_0.static
  • cudaPackages_11.tensorrt_8_2
  • cudaPackages_11.tensorrt_8_2.bin
  • cudaPackages_11.tensorrt_8_2.dev
  • cudaPackages_11.tensorrt_8_2.lib
  • cudaPackages_11.tensorrt_8_2.python
  • cudaPackages_11.tensorrt_8_2.sample
  • cudaPackages_11.tensorrt_8_2.static
  • cudaPackages_11.tensorrt_8_4
  • cudaPackages_11.tensorrt_8_4.bin
  • cudaPackages_11.tensorrt_8_4.dev
  • cudaPackages_11.tensorrt_8_4.lib
  • cudaPackages_11.tensorrt_8_4.python
  • cudaPackages_11.tensorrt_8_4.sample
  • cudaPackages_11.tensorrt_8_4.static
  • cudaPackages_11.tensorrt_8_5
  • cudaPackages_11.tensorrt_8_5.bin
  • cudaPackages_11.tensorrt_8_5.dev
  • cudaPackages_11.tensorrt_8_5.lib
  • cudaPackages_11.tensorrt_8_5.python
  • cudaPackages_11.tensorrt_8_5.sample
  • cudaPackages_11.tensorrt_8_5.static
  • katagoTensorRT
  • python311Packages.caffe
  • python311Packages.caffe.bin
  • python311Packages.caffeWithCuda
  • python311Packages.caffeWithCuda.bin
  • python311Packages.openllm
  • python311Packages.openllm.dist
  • python311Packages.theanoWithCuda
  • python311Packages.theanoWithCuda.dist
  • truecrack-cuda
47 packages failed to build:
  • colmapWithCuda
  • cudaPackages.cuda-samples (tests.cuda.cudaPackages.cuda-samples ,tests.cuda.cudaPackages_12.cuda-samples ,tests.cuda.cudaPackages_12_2.cuda-samples)
  • cudaPackages.cutensor_1_3 (cudaPackages.cutensor_1_3.dev ,cudaPackages.cutensor_1_3.lib ,cudaPackages.cutensor_1_3.static)
  • cudaPackages.cutensor_1_4 (cudaPackages.cutensor_1_4.dev ,cudaPackages.cutensor_1_4.lib ,cudaPackages.cutensor_1_4.static)
  • cudaPackages.cutensor_1_5 (cudaPackages.cutensor_1_5.dev ,cudaPackages.cutensor_1_5.lib ,cudaPackages.cutensor_1_5.static)
  • cudaPackages.nsight_compute (cudaPackages.nsight_compute.bin)
  • cudaPackages_11.tensorrt (cudaPackagesGoogle.tensorrt ,cudaPackages_11.tensorrt.bin ,cudaPackages_11.tensorrt.dev ,cudaPackages_11.tensorrt.lib ,cudaPackages_11.tensorrt.python ,cudaPackages_11.tensorrt.sample ,cudaPackages_11.tensorrt.static ,cudaPackages_11.tensorrt_8_6 ,cudaPackages_11.tensorrt_8_6.bin ,cudaPackages_11.tensorrt_8_6.dev ,cudaPackages_11.tensorrt_8_6.lib ,cudaPackages_11.tensorrt_8_6.python ,cudaPackages_11.tensorrt_8_6.sample ,cudaPackages_11.tensorrt_8_6.static)
  • cudaPackages_10.cuda-samples (tests.cuda.cudaPackages_10.cuda-samples ,tests.cuda.cudaPackages_10_2.cuda-samples)
  • cudaPackages_10.nccl
  • cudaPackages_10.nccl-tests
  • cudaPackages_10.nccl.dev
  • dcgm
  • faissWithCuda
  • faissWithCuda.demos
  • katagoWithCuda
  • magma-cuda
  • magma-cuda-static
  • mathematica-cuda
  • mathematica-webdoc-cuda
  • prometheus-dcgm-exporter
  • python311Packages.bitsandbytes
  • python311Packages.bitsandbytes.dist
  • python311Packages.tensorrt
  • python311Packages.tensorrt.dist
  • python311Packages.tiny-cuda-nn
  • python311Packages.torchWithCuda
  • python311Packages.torchWithCuda.cxxdev
  • python311Packages.torchWithCuda.dev
  • python311Packages.torchWithCuda.dist
  • python311Packages.torchWithCuda.lib
  • python312Packages.pynvml
  • python312Packages.pynvml.dist
  • python312Packages.tensorrt
  • python312Packages.tensorrt.dist
  • tests.cuda.cudaPackages_11_0.cuda-samples
  • tests.cuda.cudaPackages_11_1.cuda-samples
  • tests.cuda.cudaPackages_11_2.cuda-samples
  • tests.cuda.cudaPackages_11_3.cuda-samples
  • tests.cuda.cudaPackages_11_4.cuda-samples
  • tests.cuda.cudaPackages_11_5.cuda-samples
  • tests.cuda.cudaPackages_11_6.cuda-samples
  • tests.cuda.cudaPackages_12_0.cuda-samples
  • tests.cuda.cudaPackages_12_1.cuda-samples
  • tests.cuda.cudaPackages_12_3.cuda-samples
  • tiny-cuda-nn
  • tts
  • tts.dist
174 packages built:
  • cudaPackages.autoAddDriverRunpathHook (cudaPackagesGoogle.autoAddDriverRunpathHook ,cudaPackages_10.autoAddDriverRunpathHook ,cudaPackages_11.autoAddDriverRunpathHook)
  • cudaPackages.autoFixElfFiles (cudaPackagesGoogle.autoFixElfFiles ,cudaPackages_10.autoFixElfFiles ,cudaPackages_11.autoFixElfFiles)
  • cudaPackages.cuda_cccl (cudaPackages.cuda_cccl.dev)
  • cudaPackages.cuda_cudart (cudaPackages.cuda_cudart.dev ,cudaPackages.cuda_cudart.lib ,cudaPackages.cuda_cudart.static ,cudaPackages.cuda_cudart.stubs)
  • cudaPackages.cuda_cuobjdump (cudaPackages.cuda_cuobjdump.bin)
  • cudaPackages.cuda_cupti (cudaPackages.cuda_cupti.dev ,cudaPackages.cuda_cupti.lib ,cudaPackages.cuda_cupti.sample ,cudaPackages.cuda_cupti.static)
  • cudaPackages.cuda_cuxxfilt (cudaPackages.cuda_cuxxfilt.bin ,cudaPackages.cuda_cuxxfilt.dev ,cudaPackages.cuda_cuxxfilt.static)
  • cudaPackages.cuda_demo_suite
  • cudaPackages.cuda_documentation
  • cudaPackages.cuda_gdb (cudaPackages.cuda_gdb.bin)
  • cudaPackages.cuda_nsight (cudaPackages.cuda_nsight.bin)
  • cudaPackages.cuda_nvcc (cudaPackages.cuda_nvcc.bin ,cudaPackages.cuda_nvcc.dev ,cudaPackages.cuda_nvcc.lib ,cudaPackages.cuda_nvcc.static)
  • cudaPackages.cuda_nvdisasm (cudaPackages.cuda_nvdisasm.bin)
  • cudaPackages.cuda_nvml_dev (cudaPackages.cuda_nvml_dev.dev ,cudaPackages.cuda_nvml_dev.lib)
  • cudaPackages.cuda_nvprof (cudaPackages.cuda_nvprof.bin ,cudaPackages.cuda_nvprof.lib)
  • cudaPackages.cuda_nvprune (cudaPackages.cuda_nvprune.bin)
  • cudaPackages.cuda_nvrtc (cudaPackages.cuda_nvrtc.dev ,cudaPackages.cuda_nvrtc.lib ,cudaPackages.cuda_nvrtc.static)
  • cudaPackages.cuda_nvtx (cudaPackages.cuda_nvtx.dev ,cudaPackages.cuda_nvtx.lib)
  • cudaPackages.cuda_nvvp (cudaPackages.cuda_nvvp.bin)
  • cudaPackages.cuda_opencl (cudaPackages.cuda_opencl.dev ,cudaPackages.cuda_opencl.lib)
  • cudaPackages.cuda_profiler_api (cudaPackages.cuda_profiler_api.dev)
  • cudaPackages.cuda_sanitizer_api (cudaPackages.cuda_sanitizer_api.bin)
  • cudatoolkit (cudaPackages.cudatoolkit)
  • cudatoolkit.doc (cudaPackages.cudatoolkit.doc)
  • cudatoolkit.lib (cudaPackages.cudatoolkit.lib)
  • cudaPackages.cudnn (cudaPackages.cudnn.dev ,cudaPackages.cudnn.lib ,cudaPackages.cudnn.static ,cudaPackages.cudnn_8_9 ,cudaPackages.cudnn_8_9.dev ,cudaPackages.cudnn_8_9.lib ,cudaPackages.cudnn_8_9.static)
  • cudaPackages.cutensor (cudaPackages.cutensor.dev ,cudaPackages.cutensor.lib ,cudaPackages.cutensor.static ,cudaPackages.cutensor_1_7 ,cudaPackages.cutensor_1_7.dev ,cudaPackages.cutensor_1_7.lib ,cudaPackages.cutensor_1_7.static)
  • cudaPackages.cutensor_1_6 (cudaPackages.cutensor_1_6.dev ,cudaPackages.cutensor_1_6.lib ,cudaPackages.cutensor_1_6.static)
  • cudaPackages.fabricmanager (cudaPackages.fabricmanager.bin ,cudaPackages.fabricmanager.dev ,cudaPackages.fabricmanager.lib)
  • cudaPackages.libcublas (cudaPackages.libcublas.dev ,cudaPackages.libcublas.lib ,cudaPackages.libcublas.static)
  • cudaPackages.libcufft (cudaPackages.libcufft.dev ,cudaPackages.libcufft.lib ,cudaPackages.libcufft.static)
  • cudaPackages.libcufile (cudaPackages.libcufile.dev ,cudaPackages.libcufile.lib ,cudaPackages.libcufile.sample ,cudaPackages.libcufile.static)
  • cudaPackages.libcurand (cudaPackages.libcurand.dev ,cudaPackages.libcurand.lib ,cudaPackages.libcurand.static)
  • cudaPackages.libcusolver (cudaPackages.libcusolver.dev ,cudaPackages.libcusolver.lib ,cudaPackages.libcusolver.static)
  • cudaPackages.libcusparse (cudaPackages.libcusparse.dev ,cudaPackages.libcusparse.lib ,cudaPackages.libcusparse.static)
  • cudaPackages.libnpp (cudaPackages.libnpp.dev ,cudaPackages.libnpp.lib ,cudaPackages.libnpp.static)
  • cudaPackages.libnvidia_nscq (cudaPackages.libnvidia_nscq.lib)
  • cudaPackages.libnvjitlink (cudaPackages.libnvjitlink.dev ,cudaPackages.libnvjitlink.lib ,cudaPackages.libnvjitlink.static)
  • cudaPackages.libnvjpeg (cudaPackages.libnvjpeg.dev ,cudaPackages.libnvjpeg.lib ,cudaPackages.libnvjpeg.static)
  • cudaPackages.nccl
  • cudaPackages.nccl-tests
  • cudaPackages.nccl.dev
  • cudaPackages.nsight_systems (cudaPackages.nsight_systems.bin)
  • cudaPackages.nvidia_fs
  • cudaPackages.saxpy (tests.cuda.cudaPackages.saxpy ,tests.cuda.cudaPackages_12.saxpy ,tests.cuda.cudaPackages_12_2.saxpy)
  • cudaPackages_11.cuda-samples (cudaPackagesGoogle.cuda-samples ,tests.cuda.cudaPackagesGoogle.cuda-samples ,tests.cuda.cudaPackages_11.cuda-samples ,tests.cuda.cudaPackages_11_8.cuda-samples)
  • cudaPackages_11.cuda_cccl (cudaPackagesGoogle.cuda_cccl ,cudaPackages_11.cuda_cccl.dev)
  • cudaPackages_11.cuda_cudart (cudaPackagesGoogle.cuda_cudart ,cudaPackages_11.cuda_cudart.dev ,cudaPackages_11.cuda_cudart.lib ,cudaPackages_11.cuda_cudart.static ,cudaPackages_11.cuda_cudart.stubs)
  • cudaPackages_11.cuda_cuobjdump (cudaPackagesGoogle.cuda_cuobjdump ,cudaPackages_11.cuda_cuobjdump.bin)
  • cudaPackages_11.cuda_cupti (cudaPackagesGoogle.cuda_cupti ,cudaPackages_11.cuda_cupti.dev ,cudaPackages_11.cuda_cupti.lib ,cudaPackages_11.cuda_cupti.sample ,cudaPackages_11.cuda_cupti.static)
  • cudaPackages_11.cuda_cuxxfilt (cudaPackagesGoogle.cuda_cuxxfilt ,cudaPackages_11.cuda_cuxxfilt.bin ,cudaPackages_11.cuda_cuxxfilt.dev ,cudaPackages_11.cuda_cuxxfilt.static)
  • cudaPackages_11.cuda_demo_suite (cudaPackagesGoogle.cuda_demo_suite)
  • cudaPackages_11.cuda_documentation (cudaPackagesGoogle.cuda_documentation)
  • cudaPackages_11.cuda_gdb (cudaPackagesGoogle.cuda_gdb ,cudaPackages_11.cuda_gdb.bin)
  • cudaPackages_11.cuda_memcheck (cudaPackagesGoogle.cuda_memcheck ,cudaPackages_11.cuda_memcheck.bin)
  • cudaPackages_11.cuda_nsight (cudaPackagesGoogle.cuda_nsight ,cudaPackages_11.cuda_nsight.bin)
  • cudaPackages_11.cuda_nvcc (cudaPackagesGoogle.cuda_nvcc ,cudaPackages_11.cuda_nvcc.bin ,cudaPackages_11.cuda_nvcc.dev ,cudaPackages_11.cuda_nvcc.lib ,cudaPackages_11.cuda_nvcc.static)
  • cudaPackages_11.cuda_nvdisasm (cudaPackagesGoogle.cuda_nvdisasm ,cudaPackages_11.cuda_nvdisasm.bin)
  • cudaPackages_11.cuda_nvml_dev (cudaPackagesGoogle.cuda_nvml_dev ,cudaPackages_11.cuda_nvml_dev.dev ,cudaPackages_11.cuda_nvml_dev.lib)
  • cudaPackages_11.cuda_nvprof (cudaPackagesGoogle.cuda_nvprof ,cudaPackages_11.cuda_nvprof.bin ,cudaPackages_11.cuda_nvprof.lib)
  • cudaPackages_11.cuda_nvprune (cudaPackagesGoogle.cuda_nvprune ,cudaPackages_11.cuda_nvprune.bin)
  • cudaPackages_11.cuda_nvrtc (cudaPackagesGoogle.cuda_nvrtc ,cudaPackages_11.cuda_nvrtc.dev ,cudaPackages_11.cuda_nvrtc.lib ,cudaPackages_11.cuda_nvrtc.static)
  • cudaPackages_11.cuda_nvtx (cudaPackagesGoogle.cuda_nvtx ,cudaPackages_11.cuda_nvtx.dev ,cudaPackages_11.cuda_nvtx.lib)
  • cudaPackages_11.cuda_nvvp (cudaPackagesGoogle.cuda_nvvp ,cudaPackages_11.cuda_nvvp.bin)
  • cudaPackages_11.cuda_profiler_api (cudaPackagesGoogle.cuda_profiler_api ,cudaPackages_11.cuda_profiler_api.dev)
  • cudaPackages_11.cuda_sanitizer_api (cudaPackagesGoogle.cuda_sanitizer_api ,cudaPackages_11.cuda_sanitizer_api.bin)
  • cudatoolkit_11 (cudaPackages_11.cudatoolkit)
  • cudatoolkit_11.doc (cudaPackages_11.cudatoolkit.doc)
  • cudatoolkit_11.lib (cudaPackages_11.cudatoolkit.lib)
  • cudaPackages_11.cudnn (cudaPackagesGoogle.cudnn ,cudaPackages_11.cudnn.dev ,cudaPackages_11.cudnn.lib ,cudaPackages_11.cudnn.static ,cudaPackages_11.cudnn_8_9 ,cudaPackages_11.cudnn_8_9.dev ,cudaPackages_11.cudnn_8_9.lib ,cudaPackages_11.cudnn_8_9.static)
  • cudaPackages_11.cudnn_8_6 (cudaPackagesGoogle.cudnn_8_6 ,cudaPackages_11.cudnn_8_6.dev ,cudaPackages_11.cudnn_8_6.lib ,cudaPackages_11.cudnn_8_6.static)
  • cudaPackages_11.cudnn_8_7 (cudaPackagesGoogle.cudnn_8_7 ,cudaPackages_11.cudnn_8_7.dev ,cudaPackages_11.cudnn_8_7.lib ,cudaPackages_11.cudnn_8_7.static)
  • cudaPackages_11.cudnn_8_8 (cudaPackagesGoogle.cudnn_8_8 ,cudaPackages_11.cudnn_8_8.dev ,cudaPackages_11.cudnn_8_8.lib ,cudaPackages_11.cudnn_8_8.static)
  • cudaPackages_11.cutensor (cudaPackagesGoogle.cutensor ,cudaPackages_11.cutensor.dev ,cudaPackages_11.cutensor.lib ,cudaPackages_11.cutensor.static ,cudaPackages_11.cutensor_1_7 ,cudaPackages_11.cutensor_1_7.dev ,cudaPackages_11.cutensor_1_7.lib ,cudaPackages_11.cutensor_1_7.static)
  • cudaPackages_11.cutensor_1_3 (cudaPackagesGoogle.cutensor_1_3 ,cudaPackages_11.cutensor_1_3.dev ,cudaPackages_11.cutensor_1_3.lib ,cudaPackages_11.cutensor_1_3.static)
  • cudaPackages_11.cutensor_1_4 (cudaPackagesGoogle.cutensor_1_4 ,cudaPackages_11.cutensor_1_4.dev ,cudaPackages_11.cutensor_1_4.lib ,cudaPackages_11.cutensor_1_4.static)
  • cudaPackages_11.cutensor_1_5 (cudaPackagesGoogle.cutensor_1_5 ,cudaPackages_11.cutensor_1_5.dev ,cudaPackages_11.cutensor_1_5.lib ,cudaPackages_11.cutensor_1_5.static)
  • cudaPackages_11.cutensor_1_6 (cudaPackagesGoogle.cutensor_1_6 ,cudaPackages_11.cutensor_1_6.dev ,cudaPackages_11.cutensor_1_6.lib ,cudaPackages_11.cutensor_1_6.static)
  • cudaPackages_11.fabricmanager (cudaPackagesGoogle.fabricmanager ,cudaPackages_11.fabricmanager.bin ,cudaPackages_11.fabricmanager.dev ,cudaPackages_11.fabricmanager.lib)
  • cudaPackages_11.libcublas (cudaPackagesGoogle.libcublas ,cudaPackages_11.libcublas.dev ,cudaPackages_11.libcublas.lib ,cudaPackages_11.libcublas.static)
  • cudaPackages_11.libcufft (cudaPackagesGoogle.libcufft ,cudaPackages_11.libcufft.dev ,cudaPackages_11.libcufft.lib ,cudaPackages_11.libcufft.static)
  • cudaPackages_11.libcufile (cudaPackagesGoogle.libcufile ,cudaPackages_11.libcufile.dev ,cudaPackages_11.libcufile.lib ,cudaPackages_11.libcufile.sample ,cudaPackages_11.libcufile.static)
  • cudaPackages_11.libcurand (cudaPackagesGoogle.libcurand ,cudaPackages_11.libcurand.dev ,cudaPackages_11.libcurand.lib ,cudaPackages_11.libcurand.static)
  • cudaPackages_11.libcusolver (cudaPackagesGoogle.libcusolver ,cudaPackages_11.libcusolver.dev ,cudaPackages_11.libcusolver.lib ,cudaPackages_11.libcusolver.static)
  • cudaPackages_11.libcusparse (cudaPackagesGoogle.libcusparse ,cudaPackages_11.libcusparse.dev ,cudaPackages_11.libcusparse.lib ,cudaPackages_11.libcusparse.static)
  • cudaPackages_11.libnpp (cudaPackagesGoogle.libnpp ,cudaPackages_11.libnpp.dev ,cudaPackages_11.libnpp.lib ,cudaPackages_11.libnpp.static)
  • cudaPackages_11.libnvidia_nscq (cudaPackagesGoogle.libnvidia_nscq ,cudaPackages_11.libnvidia_nscq.lib)
  • cudaPackages_11.libnvjpeg (cudaPackagesGoogle.libnvjpeg ,cudaPackages_11.libnvjpeg.dev ,cudaPackages_11.libnvjpeg.lib ,cudaPackages_11.libnvjpeg.static)
  • cudaPackages_11.nccl (cudaPackagesGoogle.nccl)
  • cudaPackages_11.nccl-tests (cudaPackagesGoogle.nccl-tests)
  • cudaPackages_11.nccl.dev (cudaPackagesGoogle.nccl.dev)
  • cudaPackages_11.nsight_compute (cudaPackagesGoogle.nsight_compute ,cudaPackages_11.nsight_compute.bin)
  • cudaPackages_11.nsight_systems (cudaPackagesGoogle.nsight_systems ,cudaPackages_11.nsight_systems.bin)
  • cudaPackages_11.nvidia_fs (cudaPackagesGoogle.nvidia_fs)
  • cudaPackages_11.saxpy (cudaPackagesGoogle.saxpy ,tests.cuda.cudaPackagesGoogle.saxpy ,tests.cuda.cudaPackages_11.saxpy ,tests.cuda.cudaPackages_11_8.saxpy)
  • cudaPackages_10.cudatoolkit
  • cudaPackages_10.cudatoolkit.doc
  • cudaPackages_10.cudatoolkit.lib
  • cudaPackages_10.cudnn (cudaPackages_10.cudnn.dev ,cudaPackages_10.cudnn.lib ,cudaPackages_10.cudnn.static ,cudaPackages_10.cudnn_8_7 ,cudaPackages_10.cudnn_8_7.dev ,cudaPackages_10.cudnn_8_7.lib ,cudaPackages_10.cudnn_8_7.static)
  • cudaPackages_10.cudnn_7_6 (cudaPackages_10.cudnn_7_6.dev ,cudaPackages_10.cudnn_7_6.lib ,cudaPackages_10.cudnn_7_6.static)
  • cudaPackages_10.cudnn_8_0 (cudaPackages_10.cudnn_8_0.dev ,cudaPackages_10.cudnn_8_0.lib ,cudaPackages_10.cudnn_8_0.static)
  • cudaPackages_10.cudnn_8_1 (cudaPackages_10.cudnn_8_1.dev ,cudaPackages_10.cudnn_8_1.lib ,cudaPackages_10.cudnn_8_1.static)
  • cudaPackages_10.cudnn_8_2 (cudaPackages_10.cudnn_8_2.dev ,cudaPackages_10.cudnn_8_2.lib ,cudaPackages_10.cudnn_8_2.static)
  • cudaPackages_10.cudnn_8_3 (cudaPackages_10.cudnn_8_3.dev ,cudaPackages_10.cudnn_8_3.lib ,cudaPackages_10.cudnn_8_3.static)
  • cudaPackages_10.cudnn_8_4 (cudaPackages_10.cudnn_8_4.dev ,cudaPackages_10.cudnn_8_4.lib ,cudaPackages_10.cudnn_8_4.static)
  • cudaPackages_10.cudnn_8_5 (cudaPackages_10.cudnn_8_5.dev ,cudaPackages_10.cudnn_8_5.lib ,cudaPackages_10.cudnn_8_5.static)
  • cudaPackages_10.cudnn_8_6 (cudaPackages_10.cudnn_8_6.dev ,cudaPackages_10.cudnn_8_6.lib ,cudaPackages_10.cudnn_8_6.static)
  • cudaPackages_10.cutensor (cudaPackages_10.cutensor.dev ,cudaPackages_10.cutensor.lib ,cudaPackages_10.cutensor.static ,cudaPackages_10.cutensor_1_7 ,cudaPackages_10.cutensor_1_7.dev ,cudaPackages_10.cutensor_1_7.lib ,cudaPackages_10.cutensor_1_7.static)
  • cudaPackages_10.cutensor_1_3 (cudaPackages_10.cutensor_1_3.dev ,cudaPackages_10.cutensor_1_3.lib ,cudaPackages_10.cutensor_1_3.static)
  • cudaPackages_10.cutensor_1_4 (cudaPackages_10.cutensor_1_4.dev ,cudaPackages_10.cutensor_1_4.lib ,cudaPackages_10.cutensor_1_4.static)
  • cudaPackages_10.cutensor_1_5 (cudaPackages_10.cutensor_1_5.dev ,cudaPackages_10.cutensor_1_5.lib ,cudaPackages_10.cutensor_1_5.static)
  • cudaPackages_10.cutensor_1_6 (cudaPackages_10.cutensor_1_6.dev ,cudaPackages_10.cutensor_1_6.lib ,cudaPackages_10.cutensor_1_6.static)
  • cudaPackages_10.saxpy (tests.cuda.cudaPackages_10.saxpy ,tests.cuda.cudaPackages_10_2.saxpy)
  • gpu-burn
  • gromacsCudaMpi
  • gromacsCudaMpi.dev
  • gromacsCudaMpi.man
  • gwe
  • lammps
  • lammps-mpi
  • librealsenseWithCuda
  • librealsenseWithCuda.dev
  • nvtop
  • nvtop-nvidia
  • python311Packages.cupy
  • python311Packages.cupy.dist
  • python311Packages.encodec
  • python311Packages.encodec.dist
  • python311Packages.jaxlibWithCuda
  • python311Packages.jaxlibWithCuda.dist
  • python311Packages.numbaWithCuda
  • python311Packages.numbaWithCuda.dist
  • python311Packages.openai-triton-bin
  • python311Packages.openai-triton-bin.dist
  • python311Packages.openai-triton-cuda
  • python311Packages.openai-triton-cuda.dist
  • python311Packages.pycuda
  • python311Packages.pycuda.dist
  • python311Packages.pynvml
  • python311Packages.pynvml.dist
  • python311Packages.pyrealsense2WithCuda
  • python311Packages.pyrealsense2WithCuda.dev
  • python311Packages.tensorflowWithCuda
  • python311Packages.tensorflowWithCuda.dist
  • python311Packages.torchaudio-bin
  • python311Packages.torchaudio-bin.dist
  • python311Packages.torchvision-bin
  • python311Packages.torchvision-bin.dist
  • python312Packages.cupy
  • python312Packages.cupy.dist
  • python312Packages.jaxlibWithCuda
  • python312Packages.jaxlibWithCuda.dist
  • python312Packages.openai-triton-cuda
  • python312Packages.openai-triton-cuda.dist
  • python312Packages.pycuda
  • python312Packages.pycuda.dist
  • python312Packages.pyrealsense2WithCuda
  • python312Packages.pyrealsense2WithCuda.dev
  • tests.cuda.cudaPackages_10_0.cuda-samples
  • tests.cuda.cudaPackages_10_0.saxpy
  • tests.cuda.cudaPackages_10_1.cuda-samples
  • tests.cuda.cudaPackages_10_1.saxpy
  • tests.cuda.cudaPackages_11_0.saxpy
  • tests.cuda.cudaPackages_11_1.saxpy
  • tests.cuda.cudaPackages_11_2.saxpy
  • tests.cuda.cudaPackages_11_3.saxpy
  • tests.cuda.cudaPackages_11_4.saxpy
  • tests.cuda.cudaPackages_11_5.saxpy
  • tests.cuda.cudaPackages_11_6.saxpy
  • tests.cuda.cudaPackages_11_7.saxpy
  • tests.cuda.cudaPackages_12_0.saxpy
  • tests.cuda.cudaPackages_12_1.saxpy
  • tests.cuda.cudaPackages_12_3.saxpy
  • xgboostWithCuda

@yannham
Copy link
Contributor Author

yannham commented Feb 1, 2024

@SomeoneSerge thanks a lot for running nipxkgs review. I'm not sure how to interpret the results; are the failing packages related to this PR?

@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch from f401692 to f1f173c Compare March 8, 2024 11:50
@yannham
Copy link
Contributor Author

yannham commented Mar 8, 2024

@ConnorBaker @SomeoneSerge sorry to annoy you, I know you have a lot on your plate, but although it's a small PR I would like to not let it bitrot. Is there any other action required on my side to get this merged? I just rebase on the latest master.

@SomeoneSerge
Copy link
Contributor

SomeoneSerge commented Mar 8, 2024

@yannham sorry for silence; let's fix eval errors and merge.

How I see the subsequent maintenance is that I'm skeptical about how composable the call-a-function style of autoFixElfFiles (say we have multiple autoFixElfFiles users in the same derivation) is going to be, and I'm also concerned much stat (and real io, depending on the hooks) noise we're generating, but the effect this code has on the final output is correct -> by merging this we establish a baseline (for the cuda_compat stuff) that we can compare against later when/if refactoring

@yannham
Copy link
Contributor Author

yannham commented Mar 8, 2024

No worries! Thanks for following up on this one. I'll take a look at what's failing ofborg.

I'm also concerned much stat (and real io, depending on the hooks)

Are you referring to the fact that we generate a lot of file accesses? That is, the comment you wrote in #277213 (comment) ? If it is, it was more or less the next thing on my radar to take a look at after this PR 🙂 (well, when I find time)

@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch from f1f173c to 4771791 Compare March 8, 2024 14:45
@yannham
Copy link
Contributor Author

yannham commented Mar 11, 2024

@SomeoneSerge aaaaand the eval is passing now 🙂

@SomeoneSerge
Copy link
Contributor

@yannham aaaand here are the build-logs (I pushed your commit to the cuda-updates branch): https://hercules-ci.com/github/SomeoneSerge/nixpkgs-cuda-ci/jobs/9871

I haven't read those myself yet

@yannham
Copy link
Contributor Author

yannham commented Mar 12, 2024

Here is a summary of build failures (

  • colmapWithCuda: depends on free-image marked as insecure
  • cudaPackages.cuda-samples: same
  • cudaPackages.cuda_compat: unsupported platform
  • cudaPackages.cudnn_7_4/7_6/8_0/8_1/8_2/8_3/8_4/8_5/8_6/8_7/8_8: marked as broken
  • cudaPackages.cutensor_1_3/4/5/:
    > libcutensor: 'lib/12' does not exist, only found:
    > lib/11.0 
    > lib/10.2
    > lib/11
    > This release might not support your CUDA version
    
  • cudaPackages.libcudla: unsupported platform
  • nsight_compute: unsatisfied deps for autopatch elf (doesn't look like cuda-related, it's missing libgstreamer, libtiff, etc.)
  • python3-jax: tests failing (FAILED tests/sparse_test.py::cuSparseTest::test_coo_spmv9 - NotImplementedError: MLIR translation rule for primitive 'coo_spmv' not fou...)
  • python3Packages.tnesorflowWithCuda/tts: failure loading derivations (seems like a CI error)

All the rest is passing. Is there anything in here that wasn't failing already? It doesn't look like so, but I can't be 100% percent sure. Let me also retry the current version of this PR on the jetson.

This PR refactor CUDA setup hooks, and in particular
autoAddOpenGLRunpath and autoAddCudaCompatRunpathHook, that were using a
lot of code in common (in fact, I introduced the latter by copy pasting
most of the bash script of the former). This is not satisfying for
maintenance, as a recent patch showed, because we need to duplicate
changes to both hooks.

This commit abstract the common part in a single shell script that
applies a generic patch action to every elf file in the output. For
autoAddOpenGLRunpath the action is just addOpenGLRunpath (now
addDriverRunpath), and is few line function for
autoAddCudaCompatRunpathHook.

Doing so, we also takes the occasion to use the newer addDriverRunpath
instead of the previous addOpenGLRunpath, and rename the CUDA hook to
reflect that as well.

Co-Authored-By: Connor Baker <connor.baker@tweag.io>
@yannham yannham force-pushed the refactor/cuda-setup-hooks-refactor branch from 5e3b5c3 to 63746ca Compare March 15, 2024 14:54
@@ -32,31 +47,36 @@ final: _: {
{}
);

autoAddOpenGLRunpathHook =
autoAddDriverRunpath =
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The very last question, I promise: why don't we just move autoFixElfFiles and autoAddDriverRunpath to pkgs/by-name right away? We'll have to anyway, eventually

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no good answer, I just copied what was existing already. So let's do that as well, sure! So those would just become stand-alone packages somewhere?

Copy link
Contributor

@SomeoneSerge SomeoneSerge Mar 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think it's enough to just create the pkgs/by-name/{autoFixElfFiles,autoAddDriverRunpath}/package.nix

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, let's do this in subsequent PRs

@@ -32,31 +47,36 @@ final: _: {
{}
);

autoAddOpenGLRunpathHook =
autoAddDriverRunpath =
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +63 to +64
# Deprecated: an alias kept for compatibility. Consider removing after 24.11
autoAddOpenGLRunpathHook = final.autoAddDriverRunpath;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there have been more instances added since this PR was last updated.

@SomeoneSerge SomeoneSerge merged commit e779726 into NixOS:master Mar 19, 2024
20 checks passed
@SomeoneSerge
Copy link
Contributor

Actually... I maybe just did something stupid:

  1. I should've explicitly consulted with @jonringer about autoAddDriverRunpathHook: init #297212
  2. cudaPackages/aliases: init #297218 now would need to be updated to already populate aliases.nix

# Run addDriverRunpath on all dynamically linked ELF files
echo "Sourcing auto-add-driver-runpath-hook"

if [ -z "${dontUseAutoAddDriverRunpath-}" ]; then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jonringer
Copy link
Contributor

I should've explicitly consulted with @jonringer about #297212

I'm fine with this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

6 participants