Cldfire/nvml-wrapper

FailedToLoadSymbol("GetProcAddress failed") with Windows studio driver v536.99

joshhunt opened this issue ยท 2 comments

I just upgraded nvidia windows drivers to "NVIDIA Studio Driver version 536.99" and I now get FailedToLoadSymbol("GetProcAddress failed") error when trying to initialize the library. I suspect this is due to the bindings being out of sync or something?

Is it possible to self re-generate/re-build the project to get compatibility with latest drivers? I've tried to find the source of nvml.h but haven't managed to track it down.

I've never tried this with the studio driver personally, so I'm not sure what would be going on there.

If you're hitting FailedToLoadSymbol("GetProcAddress failed") when trying to initialize, that's likely coming from our attempt to call nvmlInit_v2 in Nvml::init_internal:

let sym = nvml_sym(lib.nvmlInit_v2.as_ref())?;

If you can confirm that's the source of the error, it's unlikely newer generated bindings will fix this (although you're welcome to try, I just committed #50 into main). nvmlInit_v2 has existed for years, here's a commit from 2020:

#define nvmlInit nvmlInit_v2

Is it possible to self re-generate/re-build the project to get compatibility with latest drivers? I've tried to find the source of nvml.h but haven't managed to track it down.

Yes, you could try that as well. I get nvml.h from the CUDA toolkit download: https://developer.nvidia.com/cuda-downloads. After installation I copy C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\include\nvml.h to nvml-wrapper-sys\nvml.h, and then you can run nvml-wrapper-sys\gen_bindings.sh to regenerate bindings (on Windows I run that script through WSL2).

Let me know if that gets you anywhere ๐Ÿ˜„.

Ahhh - it must have been the studio driver. Since updated/changed to the normal 'game ready' drivers and it's working all fine now. It didn't quite occur to me that could be the issue.

Reverting from the Studio drivers to the Game Ready drivers fixed the issue. Thanks!