Skip to content

Nvml v13.2#1

Merged
blthayer merged 9 commits into
mainfrom
nvml-v13.2
Mar 24, 2026
Merged

Nvml v13.2#1
blthayer merged 9 commits into
mainfrom
nvml-v13.2

Conversation

@blthayer
Copy link
Copy Markdown

@blthayer blthayer commented Mar 23, 2026

I accidentally also opened a PR here. Whoops 🤷

Overview

  • Update nvml.h with latest v13 header file (details below). Simple cp clobbering.
  • Use provided helper script to update the bindings.
  • Manually update device field_values_for test to exercise all NVML_FI_DEV fields that aren't NVLINK.
  • Bump dependencies (some were quite old). After dep bumps, the only required code changes were tiny trait tweaks for libloading 0.9.0, documented here and implemented in this commit.

More Details

To obtain the v13 header file:

curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-nvml-dev-13-2_13.2.51-1_amd64.deb
mkdir nvml-v13 && cd nvml-v13
ar x ../cuda-nvml-dev-13-2_13.2.51-1_amd64.deb
tar -xf data.tar.*
# Header is at:
# ./usr/local/cuda-13.2/targets/x86_64-linux/include/nvml.h

Test Results

Not all tests pass on my machine on the main branch. So the goal here was to ensure that all test failures are the same between main and this branch. In other words, ensure this branch/updates didn't cause new test failures.

Tests executed from the top-level with cargo test --workspace --no-fail-fast | tee <file name>. I have manually compared which tests failed to ensure that not only are the number of failures correct, but also that the same tests failed.

main branch

tests_main.txt

$ cat tests_main.txt| grep 'test result'
test result: FAILED. 100 passed; 21 failed; 40 ignored; 0 measured; 0 filtered out; finished in 10.19s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

nvml-v13.2 branch at rust-nvml@3647f80

This is before doing some version-bumping in the sub-project Cargo.toml files, but after an initial update of the top-level Cargo.lock file.

tests_3647f80.txt

cat tests_3647f80.txt| grep 'test result'
test result: FAILED. 100 passed; 21 failed; 40 ignored; 0 measured; 0 filtered out; finished in 10.17s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

nvml-v13.2 branch at rust-nvml@298161f

tests_298161f.txt

cat tests_298161f.txt| grep 'test result'
test result: FAILED. 100 passed; 21 failed; 40 ignored; 0 measured; 0 filtered out; finished in 0.24s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

@blthayer blthayer requested a review from jtegtmeier March 23, 2026 22:33
@blthayer blthayer marked this pull request as ready for review March 23, 2026 22:33
Copy link
Copy Markdown
Collaborator

@jtegtmeier jtegtmeier left a comment

Choose a reason for hiding this comment

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

Looks good. I'm assuming the generated code is still correct. Let test it out.

I wonder if a pre-release syntax could be useful to make it very clear this is not a full release from upstream. It should be fairly clear already, as we will use the github ref for our repo, but we could do something like this:

# nvml-wrapper-sys/Cargo.toml
version = "0.10.0-utilidata.1"

# nvml-wrapper/Cargo.toml
version = "0.13.0-utilidata.1"
nvml-wrapper-sys = { version = "=0.10.0-utilidata.1", path = "../nvml-wrapper-sys" }

Then downstream:

nvml-wrapper = { git = "https://github.com/utilidata/nvml-wrapper", tag = "v0.13.0-utilidata.1" }

@blthayer
Copy link
Copy Markdown
Author

After a little light testing on a B200, the functionality relevant to Utilidata seems to be working. Merging (and then manually tagging)...

@blthayer blthayer merged commit d130787 into main Mar 24, 2026
@blthayer
Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants