gpustack-runtime 0.2.2.post3__tar.gz → 0.2.2.post4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/PKG-INFO +1 -1
  2. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/_version.py +2 -2
  3. gpustack_runtime-0.2.2.post4/gpustack_runtime/_version_appendix.py +1 -0
  4. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/nvidia.py +76 -80
  5. gpustack_runtime-0.2.2.post3/gpustack_runtime/_version_appendix.py +0 -1
  6. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.codespelldict +0 -0
  7. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.codespellrc +0 -0
  8. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.dockerignore +0 -0
  9. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.gitattributes +0 -0
  10. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.gitignore +0 -0
  11. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.pre-commit-config.yaml +0 -0
  12. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/.python-version +0 -0
  13. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/LICENSE +0 -0
  14. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/Makefile +0 -0
  15. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/README.md +0 -0
  16. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/deploy/manifests/docker-compose.yaml +0 -0
  17. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/deploy/manifests/kubernetes.yaml +0 -0
  18. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/docs/index.md +0 -0
  19. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/docs/modules/gpustack_runtime.deployer.md +0 -0
  20. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/docs/modules/gpustack_runtime.detector.md +0 -0
  21. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/docs/modules/gpustack_runtime.md +0 -0
  22. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/__init__.py +0 -0
  23. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/__main__.py +0 -0
  24. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/_version.pyi +0 -0
  25. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/cmds/__init__.py +0 -0
  26. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/cmds/__types__.py +0 -0
  27. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/cmds/deployer.py +0 -0
  28. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/cmds/detector.py +0 -0
  29. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/cmds/images.py +0 -0
  30. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/__init__.py +0 -0
  31. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/__patches__.py +0 -0
  32. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/__types__.py +0 -0
  33. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/__utils__.py +0 -0
  34. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/__init__.py +0 -0
  35. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/__types__.py +0 -0
  36. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/__utils__.py +0 -0
  37. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/amd.py +0 -0
  38. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/ascend.py +0 -0
  39. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/hygon.py +0 -0
  40. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/iluvatar.py +0 -0
  41. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/metax.py +0 -0
  42. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/cdi/thead.py +0 -0
  43. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/docker.py +0 -0
  44. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/k8s/devicemanager/__init__.py +0 -0
  45. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/kuberentes.py +0 -0
  46. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/deployer/podman.py +0 -0
  47. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/__init__.py +0 -0
  48. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/__types__.py +0 -0
  49. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/__utils__.py +0 -0
  50. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/amd.py +0 -0
  51. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/ascend.py +0 -0
  52. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/cambricon.py +0 -0
  53. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/hygon.py +0 -0
  54. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/iluvatar.py +0 -0
  55. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/metax.py +0 -0
  56. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/mthreads.py +0 -0
  57. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyamdgpu/__init__.py +0 -0
  58. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyamdsmi/__init__.py +0 -0
  59. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pydcmi/__init__.py +0 -0
  60. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyhgml/__init__.py +0 -0
  61. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyhgml/libhgml.so +0 -0
  62. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyhgml/libuki.so +0 -0
  63. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyhsa/__init__.py +0 -0
  64. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyixml/__init__.py +0 -0
  65. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pymtml/__init__.py +0 -0
  66. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pymxsml/__init__.py +0 -0
  67. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pynvml/__init__.py +0 -0
  68. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/pyrocmsmi/__init__.py +0 -0
  69. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/detector/thead.py +0 -0
  70. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/envs.py +0 -0
  71. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/gpustack_runtime/logging.py +0 -0
  72. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/hatch.toml +0 -0
  73. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/mkdocs.yml +0 -0
  74. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/pack/Dockerfile +0 -0
  75. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/pack/Dockerfile.dummy +0 -0
  76. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/pyproject.toml +0 -0
  77. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/pytest.ini +0 -0
  78. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/ruff.toml +0 -0
  79. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/__init__.py +0 -0
  80. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_compare_versions.json +0 -0
  81. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_correct_runner_image.json +0 -0
  82. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json.json +0 -0
  83. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_multiple_jsons.json +0 -0
  84. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_multiple_yamls.yaml +0 -0
  85. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_single_json.json +0 -0
  86. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_single_yaml.yaml +0 -0
  87. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/fixtures/test_nginx_entrypoint.sh +0 -0
  88. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/test_utils.py +0 -0
  89. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/deployer/test_workload_status.py +0 -0
  90. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/fixtures/__init__.py +0 -0
  91. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/README.md +0 -0
  92. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_amd_mi300x.json +0 -0
  93. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_amd_mi308x.json +0 -0
  94. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_amd_rx7800xt.json +0 -0
  95. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_ascend_310p3.json +0 -0
  96. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_ascend_910b2.json +0 -0
  97. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_hygon_k100ai.json +0 -0
  98. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_metax_c500.json +0 -0
  99. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_gb10.json +0 -0
  100. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h100.json +0 -0
  101. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h100_mig.json +0 -0
  102. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h200.json +0 -0
  103. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4080super.json +0 -0
  104. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4090d.json +0 -0
  105. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx5090d.json +0 -0
  106. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/detect_output_thead_ppu.json +0 -0
  107. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_amd_mi300x.json +0 -0
  108. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_amd_mi308x.json +0 -0
  109. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_amd_rx7800xt.json +0 -0
  110. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_ascend_310p3.json +0 -0
  111. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_ascend_910b2.json +0 -0
  112. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_hygon_k100ai.json +0 -0
  113. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_metax_c500.json +0 -0
  114. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_mthreads_s5000.json +0 -0
  115. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h100.json +0 -0
  116. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h100_mig.json +0 -0
  117. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h200.json +0 -0
  118. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4080super.json +0 -0
  119. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4090d.json +0 -0
  120. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx5090d.json +0 -0
  121. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/samples/topology_output_thead_ppu.json +0 -0
  122. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_amd.py +0 -0
  123. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_ascend.py +0 -0
  124. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_cambricon.py +0 -0
  125. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_detector_utils.py +0 -0
  126. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_hygon.py +0 -0
  127. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_iluvatar.py +0 -0
  128. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_metax.py +0 -0
  129. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_mthreads.py +0 -0
  130. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/tests/gpustack_runtime/detector/test_nvidia.py +0 -0
  131. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/uv.lock +0 -0
  132. {gpustack_runtime-0.2.2.post3 → gpustack_runtime-0.2.2.post4}/uv.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gpustack-runtime
3
- Version: 0.2.2.post3
3
+ Version: 0.2.2.post4
4
4
  Summary: GPUStack Runtime is library for detecting GPU resources and launching GPU workloads.
5
5
  Project-URL: Homepage, https://github.com/gpustack/runtime
6
6
  Project-URL: Bug Tracker, https://github.com/gpustack/gpustack/issues
@@ -27,8 +27,8 @@ version_tuple: VERSION_TUPLE
27
27
  __commit_id__: COMMIT_ID
28
28
  commit_id: COMMIT_ID
29
29
 
30
- __version__ = version = '0.2.2.post3'
31
- __version_tuple__ = version_tuple = (0, 2, 2, 'post3')
30
+ __version__ = version = '0.2.2.post4'
31
+ __version_tuple__ = version_tuple = (0, 2, 2, 'post4')
32
32
  try:
33
33
  from ._version_appendix import git_commit
34
34
  __commit_id__ = commit_id = git_commit
@@ -0,0 +1 @@
1
+ git_commit = "c736814"
@@ -164,92 +164,88 @@ class NVIDIADetector(Detector):
164
164
  # in this inventory. A MIG-enabled card is marked ``mig``
165
165
  # in the appendix instead.
166
166
 
167
- if True:
168
- dev_name = pynvml.nvmlDeviceGetName(dev)
167
+ dev_name = pynvml.nvmlDeviceGetName(dev)
169
168
 
170
- dev_uuid = pynvml.nvmlDeviceGetUUID(dev)
169
+ dev_uuid = pynvml.nvmlDeviceGetUUID(dev)
171
170
 
172
- dev_cores = None
173
- with contextlib.suppress(pynvml.NVMLError):
174
- dev_cores = pynvml.nvmlDeviceGetNumGpuCores(dev)
175
-
176
- dev_cores_util = _get_sm_util_from_gpm_metrics(dev)
177
- if dev_cores_util is None:
178
- with contextlib.suppress(pynvml.NVMLError):
179
- dev_util_rates = pynvml.nvmlDeviceGetUtilizationRates(dev)
180
- dev_cores_util = dev_util_rates.gpu
181
- if dev_cores_util is None:
182
- debug_log_warning(
183
- logger,
184
- "Failed to get device %d cores utilization, setting to 0",
185
- dev_index,
186
- )
187
- dev_cores_util = 0
171
+ dev_cores = None
172
+ with contextlib.suppress(pynvml.NVMLError):
173
+ dev_cores = pynvml.nvmlDeviceGetNumGpuCores(dev)
188
174
 
189
- dev_mem = 0
190
- dev_mem_used = 0
191
- dev_mem_status = DeviceMemoryStatusEnum.HEALTHY
175
+ dev_cores_util = _get_sm_util_from_gpm_metrics(dev)
176
+ if dev_cores_util is None:
192
177
  with contextlib.suppress(pynvml.NVMLError):
193
- dev_mem_info = pynvml.nvmlDeviceGetMemoryInfo(dev)
194
- dev_mem = byte_to_mebibyte( # byte to MiB
195
- dev_mem_info.total,
196
- )
197
- dev_mem_used = byte_to_mebibyte( # byte to MiB
198
- dev_mem_info.used,
199
- )
200
- if not envs.GPUSTACK_RUNTIME_DETECT_NO_HEALTH_CHECK:
201
- dev_mem_ecc_errors = pynvml.nvmlDeviceGetMemoryErrorCounter(
202
- dev,
203
- pynvml.NVML_MEMORY_ERROR_TYPE_UNCORRECTED,
204
- pynvml.NVML_VOLATILE_ECC,
205
- pynvml.NVML_MEMORY_LOCATION_DRAM,
206
- )
207
- if dev_mem_ecc_errors > 0:
208
- dev_mem_status = DeviceMemoryStatusEnum.UNHEALTHY
209
- if dev_mem == 0:
210
- dev_mem, dev_mem_used = get_memory()
211
-
212
- dev_is_vgpu = False
213
- if dev_bdf in pci_devs:
214
- dev_is_vgpu = _is_vgpu(pci_devs[dev_bdf].config)
215
-
216
- dev_appendix = {
217
- "arch_family": _get_arch_family(dev_cc_t),
218
- "vgpu": dev_is_vgpu,
219
- "mig": dev_mig_mode != pynvml.NVML_DEVICE_MIG_DISABLE,
220
- "bdf": dev_bdf,
221
- }
222
- if dev_numa:
223
- dev_appendix["numa"] = dev_numa
224
-
225
- if dev_fabric_info := _get_fabric_info(dev):
226
- dev_appendix.update(dev_fabric_info)
227
-
228
- ret.append(
229
- Device(
230
- manufacturer=self.manufacturer,
231
- index=dev_index,
232
- name=dev_name,
233
- uuid=dev_uuid,
234
- driver_version=sys_driver_ver,
235
- runtime_version=sys_runtime_ver,
236
- runtime_version_original=sys_runtime_ver_original,
237
- compute_capability=dev_cc,
238
- cores=dev_cores,
239
- cores_utilization=dev_cores_util,
240
- memory=dev_mem,
241
- memory_used=dev_mem_used,
242
- memory_utilization=get_utilization(dev_mem_used, dev_mem),
243
- memory_status=dev_mem_status,
244
- temperature=dev_temp,
245
- power=dev_power,
246
- power_used=dev_power_used,
247
- appendix=dev_appendix,
248
- ),
178
+ dev_util_rates = pynvml.nvmlDeviceGetUtilizationRates(dev)
179
+ dev_cores_util = dev_util_rates.gpu
180
+ if dev_cores_util is None:
181
+ debug_log_warning(
182
+ logger,
183
+ "Failed to get device %d cores utilization, setting to 0",
184
+ dev_index,
249
185
  )
186
+ dev_cores_util = 0
250
187
 
251
- continue
252
-
188
+ dev_mem = 0
189
+ dev_mem_used = 0
190
+ dev_mem_status = DeviceMemoryStatusEnum.HEALTHY
191
+ with contextlib.suppress(pynvml.NVMLError):
192
+ dev_mem_info = pynvml.nvmlDeviceGetMemoryInfo(dev)
193
+ dev_mem = byte_to_mebibyte( # byte to MiB
194
+ dev_mem_info.total,
195
+ )
196
+ dev_mem_used = byte_to_mebibyte( # byte to MiB
197
+ dev_mem_info.used,
198
+ )
199
+ if not envs.GPUSTACK_RUNTIME_DETECT_NO_HEALTH_CHECK:
200
+ dev_mem_ecc_errors = pynvml.nvmlDeviceGetMemoryErrorCounter(
201
+ dev,
202
+ pynvml.NVML_MEMORY_ERROR_TYPE_UNCORRECTED,
203
+ pynvml.NVML_VOLATILE_ECC,
204
+ pynvml.NVML_MEMORY_LOCATION_DRAM,
205
+ )
206
+ if dev_mem_ecc_errors > 0:
207
+ dev_mem_status = DeviceMemoryStatusEnum.UNHEALTHY
208
+ if dev_mem == 0:
209
+ dev_mem, dev_mem_used = get_memory()
210
+
211
+ dev_is_vgpu = False
212
+ if dev_bdf in pci_devs:
213
+ dev_is_vgpu = _is_vgpu(pci_devs[dev_bdf].config)
214
+
215
+ dev_appendix = {
216
+ "arch_family": _get_arch_family(dev_cc_t),
217
+ "vgpu": dev_is_vgpu,
218
+ "mig": dev_mig_mode != pynvml.NVML_DEVICE_MIG_DISABLE,
219
+ "bdf": dev_bdf,
220
+ }
221
+ if dev_numa:
222
+ dev_appendix["numa"] = dev_numa
223
+
224
+ if dev_fabric_info := _get_fabric_info(dev):
225
+ dev_appendix.update(dev_fabric_info)
226
+
227
+ ret.append(
228
+ Device(
229
+ manufacturer=self.manufacturer,
230
+ index=dev_index,
231
+ name=dev_name,
232
+ uuid=dev_uuid,
233
+ driver_version=sys_driver_ver,
234
+ runtime_version=sys_runtime_ver,
235
+ runtime_version_original=sys_runtime_ver_original,
236
+ compute_capability=dev_cc,
237
+ cores=dev_cores,
238
+ cores_utilization=dev_cores_util,
239
+ memory=dev_mem,
240
+ memory_used=dev_mem_used,
241
+ memory_utilization=get_utilization(dev_mem_used, dev_mem),
242
+ memory_status=dev_mem_status,
243
+ temperature=dev_temp,
244
+ power=dev_power,
245
+ power_used=dev_power_used,
246
+ appendix=dev_appendix,
247
+ ),
248
+ )
253
249
  except pynvml.NVMLError:
254
250
  debug_log_exception(logger, "Failed to fetch devices")
255
251
  raise
@@ -1 +0,0 @@
1
- git_commit = "e93cb90"