问题标签 [nvml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 哪个函数在 cuda/nvml 库中返回“nvmlDevice_t”类型变量?
我正在使用 gpu 并想获取 gpu 的序列号。在 NVIDIA 管理库中有一个我可以使用的功能。函数原型是。
nvmlReturn_t nvmlDeviceGetSerial ( nvmlDevice_t device, char* serial, unsigned int length );
第一个参数是“nvmlDevice_t device”。我搜索了很多,但没有找到任何返回这种类型的函数。那么我怎样才能得到这个呢?
c++ - NVidia NVML nvmlDeviceGetMemoryInfo() 立即加载和卸载 nvapi64.dll
我使用一些 NVIDIA 管理库功能在我的应用程序中生成指标。
每 1 秒我在一个线程中调用 nvmlDeviceGetMemoryInfo(),几分钟后,在 Visual Studio 的输出中,我可以读取数百个:
NVML 中的其他函数,如 nvmlDeviceGetCount()、nvmlDeviceGetHandleByIndex()、nvmlDeviceGetClockInfo() 或 nvmlDeviceGetUtilizationRates() 不会产生 nvapi64.dll 的这种加载/卸载。
是否可以避免卸载此 dll,以使其在下次调用 nvmlDeviceGetMemoryInfo() 时可用?
编辑 :
我调用这个函数来检索 gpu 内存统计信息:
我在调试和发布中看到这些输出行,每次我调用 nvmlDeviceGetMemoryInfo() 时,都会有几个Loaded nvapi64.dll / Unloaded nvapi64.dll
NVML 与 Cuda V10.2 一起提供。
slurm - Slurm 没有最佳地分配多个 GPU
我们正在使用带有 NVML 自动检测功能的 Slurm 20.02,在一些带有 NVLink 的 8-GPU 节点上,Slurm 以一种令人惊讶的方式分配了 4-GPU 作业,这似乎是次优的。
在具有 8 个 Nvidia A40 GPU、4 个 NVLink 桥接器和两个 AMD EPYC 7302 CPU 的系统上,我们具有以下拓扑:
我们看到 Slurm 在 [0,1,2,4]、[1,2,3,7]、[0,4,5,6] 等组中分配 4-GPU 作业(使用 nvidia-smi 编号,不次要数字,即上表中的 NUMA Affinity),具有一对 NVLinked GPU 和 2 个未链接 GPU。
我们期待看到具有多对 NVLinked GPU 的组,例如 [0,1,2,3] 或 [0,1,4,5]。
一些可能相关的规格/设置:
问题:
- 这种行为是预期的吗?
- 有没有办法强制 Slurm 分配多对 NVLinked GPU?
c++ - nvmlDeviceResetMemoryLockedClocks 什么都不做
我正在将 nvml 库用于 c++ 项目,并且我正在尝试设置核心和内存时钟速率。看来,安培卡不支持 nvmlDeviceSetApplicationsClocks,我总是得到NVML_ERROR_NOT_SUPPORTED
.
所以我找到了锁定的时钟功能,nvmlDeviceSetGpuLockedClocks
,nvmlDeviceResetGpuLockedClocks
,nvmlDeviceSetMemoryLockedClocks
和nvmlDeviceResetMemoryLockedClocks
。nvmlDeviceSetGpuLockedClocks
并且nvmlDeviceResetGpuLockedClocks
工作完美,我可以重置和设置核心时钟。
然而,nvmlDeviceSetMemoryLockedClocks
什么nvmlDeviceResetMemoryLockedClocks
都不做。它们都返回NVML_SUCCESS
,与 gpu 锁定时钟功能相同,但安培(30 系列 Nvidia 卡)上的内存时钟速率根本没有变化。基本上没有关于这些的文档,而且这些似乎是新的。
我尝试使用设置应用程序时钟功能所需的支持时钟速率,以及手动整数,但如上所述,只有 gpu 锁定时钟功能按预期工作。
我需要做什么才能获得nvmlDeviceSetMemoryLockedClocks
并nvmlDeviceResetMemoryLockedClocks
实际调整卡上的内存时钟?
我需要一个 windows 和一个 linux 解决方案,这就是为什么我一直使用 nvml 而不是 nvapi,只是为了更多的上下文。
visual-studio - Visual Studio 命令行 cl.exe 编译 nvidia nvml 代码?
我写了一个简单的 nvml 测试代码。
在 Linux 上,我可以使用 gcc 毫无问题地编译和运行它。
gcc test.c -I /usr/local/cuda-11.5/include -l:libnvidia-ml.so -o test
但是,如何使用 Visual Studio cl.exe 在 Windows 上做同样的事情?
我尝试了以下,没有运气。
cl.exe test.c /EHsc /I "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\include" /link /LIBPATH:"c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11 .5\lib\x64"
似乎 cl.exe 没有相当于 gcc 的“-l:libnvidia-ml.so”
cmd - 初始化 NVML 失败:未找到
我在运行“nvidia-smi”命令时遇到问题 - 每当我尝试运行时。我收到以下错误: 无法初始化 NVML:未找到
machine-learning - 如何在 ML 推理期间检查 GPU 的总线利用率/总线负载?
我正在使用 onnxruntime 在 GPU 上运行 ML 推理以进行图像识别,我看到图像批处理给我带来多少性能改进的上限 - 推理时间减少到大约 8 的 batch_size,超过该时间仍然存在持续的。我认为这一定是因为 GPU 资源的一些最大利用率,因为我没有看到 onnx 文档中提到的任何此类限制。我尝试使用包 pynmvl.smi 来获取 nvidia_smi 并在推理过程中打印一些利用率因子 -
我所看到的是 gpu_util 和 memory_util 在我的整个推理运行中都在 25% 以内,即使批量大小为 32 或 64,所以这些不太可能是造成瓶颈的原因。然后我假设它一定是总线负载限制可能导致这种情况。我在 nvidia-smi 中没有找到任何打印 GPU 总线负载的选项。如何在推理过程中找到总线负载?