gpustack-runtime 0.1.41.post3__py3-none-any.whl → 0.1.42.post1__py3-none-any.whl
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.
- gpustack_runtime/_version.py +2 -2
- gpustack_runtime/_version_appendix.py +1 -1
- gpustack_runtime/cmds/detector.py +4 -2
- gpustack_runtime/deployer/__types__.py +314 -233
- gpustack_runtime/deployer/cdi/__init__.py +1 -1
- gpustack_runtime/deployer/cdi/__types__.py +2 -2
- gpustack_runtime/deployer/cdi/__utils__.py +4 -1
- gpustack_runtime/deployer/cdi/amd.py +6 -8
- gpustack_runtime/deployer/cdi/ascend.py +7 -9
- gpustack_runtime/deployer/cdi/hygon.py +6 -8
- gpustack_runtime/deployer/cdi/iluvatar.py +6 -8
- gpustack_runtime/deployer/cdi/metax.py +6 -8
- gpustack_runtime/deployer/cdi/thead.py +6 -8
- gpustack_runtime/deployer/docker.py +133 -146
- gpustack_runtime/deployer/k8s/deviceplugin/__init__.py +13 -8
- gpustack_runtime/deployer/k8s/deviceplugin/plugin.py +26 -21
- gpustack_runtime/deployer/kuberentes.py +89 -108
- gpustack_runtime/deployer/podman.py +113 -120
- gpustack_runtime/detector/__init__.py +2 -0
- gpustack_runtime/detector/__types__.py +26 -0
- gpustack_runtime/detector/__utils__.py +3 -0
- gpustack_runtime/detector/amd.py +32 -10
- gpustack_runtime/detector/ascend.py +67 -13
- gpustack_runtime/detector/cambricon.py +3 -0
- gpustack_runtime/detector/hygon.py +22 -3
- gpustack_runtime/detector/iluvatar.py +15 -7
- gpustack_runtime/detector/metax.py +16 -6
- gpustack_runtime/detector/mthreads.py +22 -8
- gpustack_runtime/detector/nvidia.py +148 -140
- gpustack_runtime/detector/pyacl/__init__.py +34 -14
- gpustack_runtime/detector/pydcmi/__init__.py +4 -2
- gpustack_runtime/detector/pyixml/__init__.py +16 -0
- gpustack_runtime/detector/pyrocmsmi/__init__.py +14 -0
- gpustack_runtime/detector/thead.py +145 -134
- gpustack_runtime/envs.py +7 -6
- {gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/METADATA +2 -2
- gpustack_runtime-0.1.42.post1.dist-info/RECORD +67 -0
- gpustack_runtime-0.1.41.post3.dist-info/RECORD +0 -67
- {gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/WHEEL +0 -0
- {gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/entry_points.txt +0 -0
- {gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/licenses/LICENSE +0 -0
|
@@ -12,6 +12,7 @@ from . import pyhgml
|
|
|
12
12
|
from .__types__ import (
|
|
13
13
|
Detector,
|
|
14
14
|
Device,
|
|
15
|
+
DeviceMemoryStatusEnum,
|
|
15
16
|
Devices,
|
|
16
17
|
ManufacturerEnum,
|
|
17
18
|
Topology,
|
|
@@ -49,7 +50,7 @@ class THeadDetector(Detector):
|
|
|
49
50
|
|
|
50
51
|
"""
|
|
51
52
|
supported = False
|
|
52
|
-
if envs.GPUSTACK_RUNTIME_DETECT.lower() not in ("auto", "
|
|
53
|
+
if envs.GPUSTACK_RUNTIME_DETECT.lower() not in ("auto", "thead"):
|
|
53
54
|
logger.debug("T-Head detection is disabled by environment variable")
|
|
54
55
|
return supported
|
|
55
56
|
|
|
@@ -131,24 +132,41 @@ class THeadDetector(Detector):
|
|
|
131
132
|
|
|
132
133
|
dev_numa = get_numa_node_by_bdf(dev_bdf)
|
|
133
134
|
if not dev_numa:
|
|
134
|
-
|
|
135
|
+
with contextlib.suppress(pyhgml.HGMLError):
|
|
136
|
+
dev_node_affinity = pyhgml.hgmlDeviceGetMemoryAffinity(
|
|
137
|
+
dev,
|
|
138
|
+
get_numa_nodeset_size(),
|
|
139
|
+
pyhgml.HGML_AFFINITY_SCOPE_NODE,
|
|
140
|
+
)
|
|
141
|
+
dev_numa = bitmask_to_str(list(dev_node_affinity))
|
|
142
|
+
|
|
143
|
+
dev_temp = None
|
|
144
|
+
with contextlib.suppress(pyhgml.HGMLError):
|
|
145
|
+
dev_temp = pyhgml.hgmlDeviceGetTemperature(
|
|
135
146
|
dev,
|
|
136
|
-
|
|
137
|
-
pyhgml.HGML_AFFINITY_SCOPE_NODE,
|
|
147
|
+
pyhgml.HGML_TEMPERATURE_GPU,
|
|
138
148
|
)
|
|
139
|
-
|
|
149
|
+
|
|
150
|
+
dev_power = None
|
|
151
|
+
dev_power_used = None
|
|
152
|
+
with contextlib.suppress(pyhgml.HGMLError):
|
|
153
|
+
dev_power = pyhgml.hgmlDeviceGetPowerManagementDefaultLimit(dev)
|
|
154
|
+
dev_power = dev_power // 1000 # mW to W
|
|
155
|
+
dev_power_used = (
|
|
156
|
+
pyhgml.hgmlDeviceGetPowerUsage(dev) // 1000
|
|
157
|
+
) # mW to W
|
|
140
158
|
|
|
141
159
|
dev_mig_mode = pyhgml.HGML_DEVICE_MIG_DISABLE
|
|
142
160
|
with contextlib.suppress(pyhgml.HGMLError):
|
|
143
161
|
dev_mig_mode, _ = pyhgml.hgmlDeviceGetMigMode(dev)
|
|
144
162
|
|
|
163
|
+
dev_index = dev_idx
|
|
164
|
+
if envs.GPUSTACK_RUNTIME_DETECT_PHYSICAL_INDEX_PRIORITY:
|
|
165
|
+
dev_index = pyhgml.hgmlDeviceGetMinorNumber(dev)
|
|
166
|
+
|
|
145
167
|
# With MIG disabled, treat as a single device.
|
|
146
168
|
|
|
147
169
|
if dev_mig_mode == pyhgml.HGML_DEVICE_MIG_DISABLE:
|
|
148
|
-
dev_index = dev_idx
|
|
149
|
-
if envs.GPUSTACK_RUNTIME_DETECT_PHYSICAL_INDEX_PRIORITY:
|
|
150
|
-
dev_index = pyhgml.hgmlDeviceGetMinorNumber(dev)
|
|
151
|
-
|
|
152
170
|
dev_name = pyhgml.hgmlDeviceGetName(dev)
|
|
153
171
|
|
|
154
172
|
dev_uuid = pyhgml.hgmlDeviceGetUUID(dev)
|
|
@@ -171,6 +189,7 @@ class THeadDetector(Detector):
|
|
|
171
189
|
|
|
172
190
|
dev_mem = 0
|
|
173
191
|
dev_mem_used = 0
|
|
192
|
+
dev_mem_status = DeviceMemoryStatusEnum.HEALTHY
|
|
174
193
|
with contextlib.suppress(pyhgml.HGMLError):
|
|
175
194
|
dev_mem_info = pyhgml.hgmlDeviceGetMemoryInfo(dev)
|
|
176
195
|
dev_mem = byte_to_mebibyte( # byte to MiB
|
|
@@ -179,22 +198,14 @@ class THeadDetector(Detector):
|
|
|
179
198
|
dev_mem_used = byte_to_mebibyte( # byte to MiB
|
|
180
199
|
dev_mem_info.used,
|
|
181
200
|
)
|
|
182
|
-
|
|
183
|
-
dev_temp = None
|
|
184
|
-
with contextlib.suppress(pyhgml.HGMLError):
|
|
185
|
-
dev_temp = pyhgml.hgmlDeviceGetTemperature(
|
|
201
|
+
dev_mem_ecc_errors = pyhgml.hgmlDeviceGetMemoryErrorCounter(
|
|
186
202
|
dev,
|
|
187
|
-
pyhgml.
|
|
203
|
+
pyhgml.HGML_MEMORY_ERROR_TYPE_UNCORRECTED,
|
|
204
|
+
pyhgml.HGML_VOLATILE_ECC,
|
|
205
|
+
pyhgml.HGML_MEMORY_LOCATION_DRAM,
|
|
188
206
|
)
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
dev_power_used = None
|
|
192
|
-
with contextlib.suppress(pyhgml.HGMLError):
|
|
193
|
-
dev_power = pyhgml.hgmlDeviceGetPowerManagementDefaultLimit(dev)
|
|
194
|
-
dev_power = dev_power // 1000 # mW to W
|
|
195
|
-
dev_power_used = (
|
|
196
|
-
pyhgml.hgmlDeviceGetPowerUsage(dev) // 1000
|
|
197
|
-
) # mW to W
|
|
207
|
+
if dev_mem_ecc_errors > 0:
|
|
208
|
+
dev_mem_status = DeviceMemoryStatusEnum.UNHEALTHY
|
|
198
209
|
|
|
199
210
|
dev_is_vgpu = False
|
|
200
211
|
if dev_bdf:
|
|
@@ -203,8 +214,9 @@ class THeadDetector(Detector):
|
|
|
203
214
|
dev_appendix = {
|
|
204
215
|
"vgpu": dev_is_vgpu,
|
|
205
216
|
"bdf": dev_bdf,
|
|
206
|
-
"numa": dev_numa,
|
|
207
217
|
}
|
|
218
|
+
if dev_numa:
|
|
219
|
+
dev_appendix["numa"] = dev_numa
|
|
208
220
|
|
|
209
221
|
ret.append(
|
|
210
222
|
Device(
|
|
@@ -221,6 +233,7 @@ class THeadDetector(Detector):
|
|
|
221
233
|
memory=dev_mem,
|
|
222
234
|
memory_used=dev_mem_used,
|
|
223
235
|
memory_utilization=get_utilization(dev_mem_used, dev_mem),
|
|
236
|
+
memory_status=dev_mem_status,
|
|
224
237
|
temperature=dev_temp,
|
|
225
238
|
power=dev_power,
|
|
226
239
|
power_used=dev_power_used,
|
|
@@ -236,41 +249,41 @@ class THeadDetector(Detector):
|
|
|
236
249
|
mdev_cores = None
|
|
237
250
|
mdev_count = pyhgml.hgmlDeviceGetMaxMigDeviceCount(dev)
|
|
238
251
|
for mdev_idx in range(mdev_count):
|
|
239
|
-
mdev =
|
|
252
|
+
mdev = None
|
|
253
|
+
with contextlib.suppress(pyhgml.HGMLError):
|
|
254
|
+
mdev = pyhgml.hgmlDeviceGetMigDeviceHandleByIndex(dev, mdev_idx)
|
|
255
|
+
if not mdev:
|
|
256
|
+
continue
|
|
240
257
|
|
|
241
|
-
mdev_index = mdev_idx
|
|
258
|
+
mdev_index = mdev_idx + dev_count * (dev_idx + 1)
|
|
242
259
|
mdev_uuid = pyhgml.hgmlDeviceGetUUID(mdev)
|
|
243
260
|
|
|
244
|
-
mdev_mem
|
|
261
|
+
mdev_mem = 0
|
|
262
|
+
mdev_mem_used = 0
|
|
263
|
+
mdev_mem_status = DeviceMemoryStatusEnum.HEALTHY
|
|
245
264
|
with contextlib.suppress(pyhgml.HGMLError):
|
|
246
265
|
mdev_mem_info = pyhgml.hgmlDeviceGetMemoryInfo(mdev)
|
|
247
|
-
byte_to_mebibyte( # byte to MiB
|
|
266
|
+
mdev_mem = byte_to_mebibyte( # byte to MiB
|
|
248
267
|
mdev_mem_info.total,
|
|
249
268
|
)
|
|
250
|
-
byte_to_mebibyte( # byte to MiB
|
|
269
|
+
mdev_mem_used = byte_to_mebibyte( # byte to MiB
|
|
251
270
|
mdev_mem_info.used,
|
|
252
271
|
)
|
|
253
|
-
|
|
254
|
-
mdev_temp = pyhgml.hgmlDeviceGetTemperature(
|
|
255
|
-
mdev,
|
|
256
|
-
pyhgml.HGML_TEMPERATURE_GPU,
|
|
257
|
-
)
|
|
258
|
-
|
|
259
|
-
mdev_power = None
|
|
260
|
-
with contextlib.suppress(pyhgml.HGMLError):
|
|
261
|
-
mdev_power = pyhgml.hgmlDeviceGetPowerManagementDefaultLimit(
|
|
272
|
+
mdev_mem_ecc_errors = pyhgml.hgmlDeviceGetMemoryErrorCounter(
|
|
262
273
|
mdev,
|
|
274
|
+
pyhgml.HGML_MEMORY_ERROR_TYPE_UNCORRECTED,
|
|
275
|
+
pyhgml.HGML_AGGREGATE_ECC,
|
|
276
|
+
pyhgml.HGML_MEMORY_LOCATION_SRAM,
|
|
263
277
|
)
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
pyhgml.hgmlDeviceGetPowerUsage(mdev) // 1000
|
|
267
|
-
) # mW to W
|
|
278
|
+
if mdev_mem_ecc_errors > 0:
|
|
279
|
+
mdev_mem_status = DeviceMemoryStatusEnum.UNHEALTHY
|
|
268
280
|
|
|
269
281
|
mdev_appendix = {
|
|
270
282
|
"vgpu": True,
|
|
271
283
|
"bdf": dev_bdf,
|
|
272
|
-
"numa": dev_numa,
|
|
273
284
|
}
|
|
285
|
+
if dev_numa:
|
|
286
|
+
mdev_appendix["numa"] = dev_numa
|
|
274
287
|
|
|
275
288
|
mdev_gi_id = pyhgml.hgmlDeviceGetGpuInstanceId(mdev)
|
|
276
289
|
mdev_appendix["gpu_instance_id"] = mdev_gi_id
|
|
@@ -279,63 +292,64 @@ class THeadDetector(Detector):
|
|
|
279
292
|
|
|
280
293
|
mdev_cores_util = _get_sm_util_from_gpm_metrics(dev, mdev_gi_id)
|
|
281
294
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
if dev_gi_prf.id != mdev_gi_info.profileId:
|
|
299
|
-
continue
|
|
300
|
-
except pyhgml.HGMLError:
|
|
295
|
+
mdev_gi = pyhgml.hgmlDeviceGetGpuInstanceById(dev, mdev_gi_id)
|
|
296
|
+
mdev_ci = pyhgml.hgmlGpuInstanceGetComputeInstanceById(
|
|
297
|
+
mdev_gi,
|
|
298
|
+
mdev_ci_id,
|
|
299
|
+
)
|
|
300
|
+
mdev_gi_info = pyhgml.hgmlGpuInstanceGetInfo(mdev_gi)
|
|
301
|
+
mdev_ci_info = pyhgml.hgmlComputeInstanceGetInfo(mdev_ci)
|
|
302
|
+
for dev_gi_prf_id in range(
|
|
303
|
+
pyhgml.HGML_GPU_INSTANCE_PROFILE_COUNT,
|
|
304
|
+
):
|
|
305
|
+
try:
|
|
306
|
+
dev_gi_prf = pyhgml.hgmlDeviceGetGpuInstanceProfileInfo(
|
|
307
|
+
dev,
|
|
308
|
+
dev_gi_prf_id,
|
|
309
|
+
)
|
|
310
|
+
if dev_gi_prf.id != mdev_gi_info.profileId:
|
|
301
311
|
continue
|
|
312
|
+
except pyhgml.HGMLError:
|
|
313
|
+
continue
|
|
302
314
|
|
|
303
|
-
|
|
304
|
-
|
|
315
|
+
for dev_ci_prf_id in range(
|
|
316
|
+
pyhgml.HGML_COMPUTE_INSTANCE_PROFILE_COUNT,
|
|
317
|
+
):
|
|
318
|
+
for dev_cig_prf_id in range(
|
|
319
|
+
pyhgml.HGML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNT,
|
|
305
320
|
):
|
|
306
|
-
|
|
307
|
-
pyhgml.
|
|
308
|
-
|
|
309
|
-
try:
|
|
310
|
-
mdev_ci_prf = pyhgml.hgmlGpuInstanceGetComputeInstanceProfileInfo(
|
|
311
|
-
mdev_gi,
|
|
312
|
-
dev_ci_prf_id,
|
|
313
|
-
dev_cig_prf_id,
|
|
314
|
-
)
|
|
315
|
-
if mdev_ci_prf.id != mdev_ci_info.profileId:
|
|
316
|
-
continue
|
|
317
|
-
except pyhgml.HGMLError:
|
|
318
|
-
continue
|
|
319
|
-
|
|
320
|
-
ci_slice = _get_compute_instance_slice(
|
|
321
|
+
try:
|
|
322
|
+
mdev_ci_prf = pyhgml.hgmlGpuInstanceGetComputeInstanceProfileInfo(
|
|
323
|
+
mdev_gi,
|
|
321
324
|
dev_ci_prf_id,
|
|
325
|
+
dev_cig_prf_id,
|
|
322
326
|
)
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
)
|
|
327
|
+
if mdev_ci_prf.id != mdev_ci_info.profileId:
|
|
328
|
+
continue
|
|
329
|
+
except pyhgml.HGMLError:
|
|
330
|
+
continue
|
|
328
331
|
|
|
329
|
-
|
|
330
|
-
|
|
332
|
+
ci_slice = _get_compute_instance_slice(dev_ci_prf_id)
|
|
333
|
+
gi_slice = _get_gpu_instance_slice(dev_gi_prf_id)
|
|
334
|
+
if ci_slice == gi_slice:
|
|
335
|
+
if hasattr(dev_gi_prf, "name"):
|
|
336
|
+
mdev_name = dev_gi_prf.name
|
|
331
337
|
else:
|
|
332
|
-
|
|
333
|
-
|
|
338
|
+
gi_mem = round(
|
|
339
|
+
math.ceil(dev_gi_prf.memorySizeMB >> 10),
|
|
334
340
|
)
|
|
341
|
+
mdev_name = f"{gi_slice}g.{gi_mem}gb"
|
|
342
|
+
elif hasattr(mdev_ci_prf, "name"):
|
|
343
|
+
mdev_name = mdev_ci_prf.name
|
|
344
|
+
else:
|
|
345
|
+
gi_mem = round(
|
|
346
|
+
math.ceil(dev_gi_prf.memorySizeMB >> 10),
|
|
347
|
+
)
|
|
348
|
+
mdev_name = f"{ci_slice}u.{gi_slice}g.{gi_mem}gb"
|
|
335
349
|
|
|
336
|
-
|
|
350
|
+
mdev_cores = mdev_ci_prf.multiprocessorCount
|
|
337
351
|
|
|
338
|
-
|
|
352
|
+
break
|
|
339
353
|
|
|
340
354
|
ret.append(
|
|
341
355
|
Device(
|
|
@@ -352,9 +366,10 @@ class THeadDetector(Detector):
|
|
|
352
366
|
memory=mdev_mem,
|
|
353
367
|
memory_used=mdev_mem_used,
|
|
354
368
|
memory_utilization=get_utilization(mdev_mem_used, mdev_mem),
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
369
|
+
memory_status=mdev_mem_status,
|
|
370
|
+
temperature=dev_temp,
|
|
371
|
+
power=dev_power,
|
|
372
|
+
power_used=dev_power_used,
|
|
358
373
|
appendix=mdev_appendix,
|
|
359
374
|
),
|
|
360
375
|
)
|
|
@@ -392,11 +407,17 @@ class THeadDetector(Detector):
|
|
|
392
407
|
devices_count=len(devices),
|
|
393
408
|
)
|
|
394
409
|
|
|
410
|
+
get_links_cache = {}
|
|
411
|
+
|
|
395
412
|
try:
|
|
396
413
|
pyhgml.hgmlInit()
|
|
397
414
|
|
|
398
415
|
for i, dev_i in enumerate(devices):
|
|
399
|
-
|
|
416
|
+
dev_i_bdf = dev_i.appendix.get("bdf")
|
|
417
|
+
if dev_i.appendix.get("vgpu", False):
|
|
418
|
+
dev_i_handle = pyhgml.hgmlDeviceGetHandleByPciBusId(dev_i_bdf)
|
|
419
|
+
else:
|
|
420
|
+
dev_i_handle = pyhgml.hgmlDeviceGetHandleByUUID(dev_i.uuid)
|
|
400
421
|
|
|
401
422
|
# Get NUMA and CPU affinities.
|
|
402
423
|
ret.devices_numa_affinities[i] = dev_i.appendix.get("numa", "")
|
|
@@ -405,7 +426,12 @@ class THeadDetector(Detector):
|
|
|
405
426
|
)
|
|
406
427
|
|
|
407
428
|
# Get links state if applicable.
|
|
408
|
-
if
|
|
429
|
+
if dev_i_bdf in get_links_cache:
|
|
430
|
+
dev_i_links_state = get_links_cache[dev_i_bdf]
|
|
431
|
+
else:
|
|
432
|
+
dev_i_links_state = _get_links_state(dev_i_handle)
|
|
433
|
+
get_links_cache[dev_i_bdf] = dev_i_links_state
|
|
434
|
+
if dev_i_links_state:
|
|
409
435
|
ret.appendices[i].update(dev_i_links_state)
|
|
410
436
|
# In practice, if a card has an active *Link,
|
|
411
437
|
# then other cards in the same machine should be interconnected with it through the *Link.
|
|
@@ -422,21 +448,30 @@ class THeadDetector(Detector):
|
|
|
422
448
|
if dev_i.index == dev_j.index or ret.devices_distances[i][j] != 0:
|
|
423
449
|
continue
|
|
424
450
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
451
|
+
dev_j_bdf = dev_j.appendix.get("bdf")
|
|
452
|
+
if dev_i_bdf == dev_j_bdf:
|
|
453
|
+
distance = TopologyDistanceEnum.SELF
|
|
454
|
+
else:
|
|
455
|
+
if dev_j.appendix.get("vgpu", False):
|
|
456
|
+
dev_j_handle = pyhgml.hgmlDeviceGetHandleByPciBusId(
|
|
457
|
+
dev_j_bdf,
|
|
458
|
+
)
|
|
459
|
+
else:
|
|
460
|
+
dev_j_handle = pyhgml.hgmlDeviceGetHandleByUUID(dev_j.uuid)
|
|
461
|
+
|
|
462
|
+
distance = TopologyDistanceEnum.UNK
|
|
463
|
+
try:
|
|
464
|
+
distance = pyhgml.hgmlDeviceGetTopologyCommonAncestor(
|
|
465
|
+
dev_i_handle,
|
|
466
|
+
dev_j_handle,
|
|
467
|
+
)
|
|
468
|
+
except pyhgml.HGMLError:
|
|
469
|
+
debug_log_exception(
|
|
470
|
+
logger,
|
|
471
|
+
"Failed to get distance between device %d and %d",
|
|
472
|
+
dev_i.index,
|
|
473
|
+
dev_j.index,
|
|
474
|
+
)
|
|
440
475
|
|
|
441
476
|
ret.devices_distances[i][j] = distance
|
|
442
477
|
ret.devices_distances[j][i] = distance
|
|
@@ -655,30 +690,6 @@ def _get_gpu_instance_slice(dev_gi_prf_id: int) -> int:
|
|
|
655
690
|
raise AttributeError(msg)
|
|
656
691
|
|
|
657
692
|
|
|
658
|
-
def _get_gpu_instance_memory(dev_mem, dev_gi_prf) -> int:
|
|
659
|
-
"""
|
|
660
|
-
Compute the memory size of a MIG compute instance in GiB.
|
|
661
|
-
|
|
662
|
-
Args:
|
|
663
|
-
dev_mem:
|
|
664
|
-
The total memory info of the parent GPU device.
|
|
665
|
-
dev_gi_prf:
|
|
666
|
-
The profile info of the GPU instance.
|
|
667
|
-
|
|
668
|
-
Returns:
|
|
669
|
-
The memory size in GiB.
|
|
670
|
-
|
|
671
|
-
"""
|
|
672
|
-
mem = dev_gi_prf.memorySizeMB * (1 << 20) # MiB to byte
|
|
673
|
-
|
|
674
|
-
gib = round(
|
|
675
|
-
math.ceil(mem / dev_mem.total * 8)
|
|
676
|
-
/ 8
|
|
677
|
-
* ((dev_mem.total + (1 << 30) - 1) / (1 << 30)),
|
|
678
|
-
)
|
|
679
|
-
return gib
|
|
680
|
-
|
|
681
|
-
|
|
682
693
|
def _get_compute_instance_slice(dev_ci_prf_id: int) -> int:
|
|
683
694
|
"""
|
|
684
695
|
Get the number of slice for a given Compute Instance Profile ID.
|
gpustack_runtime/envs.py
CHANGED
|
@@ -246,7 +246,7 @@ if TYPE_CHECKING:
|
|
|
246
246
|
GPUSTACK_RUNTIME_DOCKER_CDI_SPECS_GENERATE: bool = True
|
|
247
247
|
"""
|
|
248
248
|
Generate CDI specifications during deployment when using CDI resource injection policy,
|
|
249
|
-
requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to
|
|
249
|
+
requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to exist.
|
|
250
250
|
Works only when `GPUSTACK_RUNTIME_DOCKER_RESOURCE_INJECTION_POLICY` is set to `CDI`.
|
|
251
251
|
Using internal knowledge to generate the CDI specifications for deployer,
|
|
252
252
|
if the output file conflicts with other tools generating CDI specifications(e.g., NVIDIA Container Toolkit),
|
|
@@ -283,7 +283,7 @@ if TYPE_CHECKING:
|
|
|
283
283
|
Resource injection policy for the Kubernetes deployer (e.g., Auto, Env, KDP).
|
|
284
284
|
`Auto`: Automatically choose the resource injection policy based on the environment.
|
|
285
285
|
`Env`: Injects resources using standard environment variable, depends on underlying Container Toolkit, based on `GPUSTACK_RUNTIME_DEPLOY_RESOURCE_KEY_MAP_RUNTIME_VISIBLE_DEVICES`.
|
|
286
|
-
`KDP`: Injects resources using Kubernetes Device Plugin
|
|
286
|
+
`KDP`: Injects resources using Kubernetes Device Plugin.
|
|
287
287
|
"""
|
|
288
288
|
GPUSTACK_RUNTIME_KUBERNETES_KDP_PER_DEVICE_MAX_ALLOCATIONS: int | None = None
|
|
289
289
|
"""
|
|
@@ -294,14 +294,14 @@ if TYPE_CHECKING:
|
|
|
294
294
|
"""
|
|
295
295
|
Device allocation policy for the Kubernetes Device Plugin (e.g., CDI, Env, Opaque).
|
|
296
296
|
`Auto`: Automatically choose the device allocation policy based on the environment.
|
|
297
|
-
`Env`: Allocates devices using runtime-visible environment variables
|
|
298
|
-
`CDI`: Allocates devices using generated CDI specifications, making it easy to debug and troubleshoot; requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to exist.
|
|
297
|
+
`Env`: Allocates devices using runtime-visible environment variables, based on `GPUSTACK_RUNTIME_DEPLOY_RESOURCE_KEY_MAP_RUNTIME_VISIBLE_DEVICES`; requires Container Toolkit support.
|
|
298
|
+
`CDI`: Allocates devices using generated CDI specifications, based on `GPUSTACK_RUNTIME_DEPLOY_RESOURCE_KEY_MAP_CDI`, making it easy to debug and troubleshoot; requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to exist.
|
|
299
299
|
`Opaque`: Uses internal logic for allocation, which is convenient for deployment but difficult to troubleshoot.
|
|
300
300
|
"""
|
|
301
301
|
GPUSTACK_RUNTIME_KUBERNETES_KDP_CDI_SPECS_GENERATE: bool = True
|
|
302
302
|
"""
|
|
303
303
|
Generate CDI specifications during deployment,
|
|
304
|
-
requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to
|
|
304
|
+
requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to exist.
|
|
305
305
|
Works only when `GPUSTACK_RUNTIME_KUBERNETES_KDP_DEVICE_ALLOCATION_POLICY` is set to `CDI`.
|
|
306
306
|
Using internal knowledge to generate the CDI specifications for deployer,
|
|
307
307
|
if the output file conflicts with other tools generating CDI specifications(e.g., NVIDIA Container Toolkit),
|
|
@@ -344,7 +344,7 @@ if TYPE_CHECKING:
|
|
|
344
344
|
GPUSTACK_RUNTIME_PODMAN_CDI_SPECS_GENERATE: bool = True
|
|
345
345
|
"""
|
|
346
346
|
Generate CDI specifications during deployment,
|
|
347
|
-
requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to
|
|
347
|
+
requires `GPUSTACK_RUNTIME_DEPLOY_CDI_SPECS_DIRECTORY` to exist.
|
|
348
348
|
Using internal knowledge to generate the CDI specifications for deployer,
|
|
349
349
|
if the output file conflicts with other tools generating CDI specifications(e.g., NVIDIA Container Toolkit),
|
|
350
350
|
please disable this and remove the output file manually.
|
|
@@ -577,6 +577,7 @@ variables: dict[str, Callable[[], Any]] = {
|
|
|
577
577
|
"GPUSTACK_RUNTIME_DEPLOY_RUNTIME_VISIBLE_DEVICES_VALUE_UUID": lambda: to_set(
|
|
578
578
|
getenv(
|
|
579
579
|
"GPUSTACK_RUNTIME_DEPLOY_RUNTIME_VISIBLE_DEVICES_VALUE_UUID",
|
|
580
|
+
"NVIDIA_VISIBLE_DEVICES",
|
|
580
581
|
),
|
|
581
582
|
sep=",",
|
|
582
583
|
),
|
{gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gpustack-runtime
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.42.post1
|
|
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
|
|
@@ -16,7 +16,7 @@ Requires-Python: >=3.10
|
|
|
16
16
|
Requires-Dist: argcomplete>=3.6.3
|
|
17
17
|
Requires-Dist: cachetools>=5.5.2
|
|
18
18
|
Requires-Dist: docker>=7.1.0
|
|
19
|
-
Requires-Dist: gpustack-runner>=0.1.24.
|
|
19
|
+
Requires-Dist: gpustack-runner>=0.1.24.post4
|
|
20
20
|
Requires-Dist: grpc-interceptor>=0.15.4
|
|
21
21
|
Requires-Dist: grpcio>=1.76.0
|
|
22
22
|
Requires-Dist: kubernetes>=33.1.0
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
gpustack_runtime/__init__.py,sha256=Xw_PVWneitx-8QmW6sJQeymj6zVbEgEndGhIB_km6TI,186
|
|
2
|
+
gpustack_runtime/__main__.py,sha256=O9yJKcN7vg0Ppgc13qesxHwST2wkH3ccOkTQXPWHnNA,3939
|
|
3
|
+
gpustack_runtime/_version.py,sha256=-eNQZIno4AwtazIKHw4i1RxKHZxM9dKoQseocEVcMq0,792
|
|
4
|
+
gpustack_runtime/_version.pyi,sha256=A42NoSgcqEXVy2OeNm4LXC9CbyonbooYrSUBlPm2lGY,156
|
|
5
|
+
gpustack_runtime/envs.py,sha256=gkr30NnIq3USzSYvbW6ipf8tKdbXx-BrDcY3-4Oc-Hg,38894
|
|
6
|
+
gpustack_runtime/logging.py,sha256=wMPriPpOuVsuClsjMh0qwEPQKyJiJa89ggdDjqkk7i0,6934
|
|
7
|
+
gpustack_runtime/cmds/__init__.py,sha256=-_X2O2lBn6KcdLGUzhL3lEjQC4_cwA36fvWDnFAgtVM,1382
|
|
8
|
+
gpustack_runtime/cmds/__types__.py,sha256=TBnUWUqzTkDtJnsMv363kdw-H8fOf-XQYbOvrmQif-M,815
|
|
9
|
+
gpustack_runtime/cmds/deployer.py,sha256=KvhPhU6ZW-UV6vLykI5adKI1ThgVFFJqWaII3n4OhL8,32846
|
|
10
|
+
gpustack_runtime/cmds/detector.py,sha256=dFIo1d8dBh8v7JhisXAx-EqqOSLobcuwsJcO-obUh9c,8905
|
|
11
|
+
gpustack_runtime/cmds/images.py,sha256=7tb-D3G4yqLPkbS9aSuWI1bD3DYK8BLbPbgqac56blI,594
|
|
12
|
+
gpustack_runtime/deployer/__init__.py,sha256=impMrmvkMjuCBthsn3QUz3LuwpmmNAymHJKJ2o6SZoc,16249
|
|
13
|
+
gpustack_runtime/deployer/__patches__.py,sha256=cTBge8BT6IsY5MzETKY3kN28k3igYfNj7pcpgDzfDzw,17849
|
|
14
|
+
gpustack_runtime/deployer/__types__.py,sha256=J2YX8X7EYY_56_L9WL5YMmdsyJ572uOIhMoHCVjPaog,72469
|
|
15
|
+
gpustack_runtime/deployer/__utils__.py,sha256=paQu2M1UeoSfQPsiskmAqJSiln-8qwibTssEoWFMLec,21109
|
|
16
|
+
gpustack_runtime/deployer/docker.py,sha256=o8Fyc25kLYBOOqN2rDctmxrkQ67oaA8J3lXSRuDAN08,83107
|
|
17
|
+
gpustack_runtime/deployer/kuberentes.py,sha256=-G7eYuqTDDi3T9u2Jqr6j0Ut-8vkP5u2lxzSyDx0EWM,86776
|
|
18
|
+
gpustack_runtime/deployer/podman.py,sha256=Tvv6RbQ8aWY6Axz9iLvNwSiYxaxtd6q6g1TVl0e1VzY,80749
|
|
19
|
+
gpustack_runtime/deployer/cdi/__init__.py,sha256=V8ycQ9PrUiaozZcoxYOiEEQkGOSvYCaCV8kkVlbEQ_w,3991
|
|
20
|
+
gpustack_runtime/deployer/cdi/__types__.py,sha256=K5uDOmwYsLCz8j8diymN3loqYqPkbxN3F0SVP_iqahI,18387
|
|
21
|
+
gpustack_runtime/deployer/cdi/__utils__.py,sha256=CAYUv76akZiHJYZO_VY0NXKhEI2jrP7G3OgvQa8Pg4U,4050
|
|
22
|
+
gpustack_runtime/deployer/cdi/amd.py,sha256=6VgVlj-nA_124l1M8HHeXU3I6QU4BMhidLEuTrQ96o8,4029
|
|
23
|
+
gpustack_runtime/deployer/cdi/ascend.py,sha256=wyL9KOCIxTqs9NjMTLJ8db8btYqtGC4WD1qUy_T_BEE,4481
|
|
24
|
+
gpustack_runtime/deployer/cdi/hygon.py,sha256=E-jE3N_OMKWAWJxOIyqXCt-utGzVATytbCKPqCYtLiA,4064
|
|
25
|
+
gpustack_runtime/deployer/cdi/iluvatar.py,sha256=-LZ7LiKs0AjCaOX_9FNFIYi2lUO_xVhxR7C4e5XYvow,3597
|
|
26
|
+
gpustack_runtime/deployer/cdi/metax.py,sha256=tawLt1cWtsHLM5LXXtQEVBBWEyqBrnRvkPe54Usf1I0,4090
|
|
27
|
+
gpustack_runtime/deployer/cdi/thead.py,sha256=bEIpMVwhwcL_AX6CRwyrsLnpKJT46v-gjocR8gKukh8,3618
|
|
28
|
+
gpustack_runtime/deployer/k8s/deviceplugin/__init__.py,sha256=cZ8jbeaGZPmyNCzDlQauIRndvKuodDl3-oHEcn4IfWU,11156
|
|
29
|
+
gpustack_runtime/deployer/k8s/deviceplugin/__types__.py,sha256=LCkgPDZ64Mra7bo5jmtsAO2Ypbc4qK99lMl6R_nQhnY,3043
|
|
30
|
+
gpustack_runtime/deployer/k8s/deviceplugin/plugin.py,sha256=E4gNvsi2aPAeVM5vWlXpvO4ecmQu951pPzzxPaIaAv8,17829
|
|
31
|
+
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/__init__.py,sha256=3rOYmgDIIJ4idEtwgnumGStH7PaK-J7EYrOnLa9A-8o,118
|
|
32
|
+
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api.proto,sha256=rmB8RDe4LN5FCVkQ608uS-pl32mk5tt6iGe-g2lKtPs,7919
|
|
33
|
+
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api_pb2.py,sha256=dNkzjTE-2y25q8NF0QRznNJ5r1-5ZxxJS598MHbjx98,45998
|
|
34
|
+
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api_pb2.pyi,sha256=lq1dbSgBYqJ7zyGfoKKHCyfr6R5vcCGzJxteeyQpbuI,8232
|
|
35
|
+
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api_pb2_grpc.py,sha256=GM6EyCEFeyOjL0XOCisbcHurRoLKqKDUI5obsUyTxpE,17446
|
|
36
|
+
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/constants.py,sha256=tpNk3e_cvY67C9RwVsdTNl75YuNXBgsn53fSJIzeTR4,828
|
|
37
|
+
gpustack_runtime/detector/__init__.py,sha256=2GaczS5lWLuPsighvq7oPhlPFQSUJfBKLAliXPfl4i0,8162
|
|
38
|
+
gpustack_runtime/detector/__types__.py,sha256=ZiKuYZb0jeXqzyTCUWTDppoHnRmkaZuljAWbnR_ohX8,13626
|
|
39
|
+
gpustack_runtime/detector/__utils__.py,sha256=9ZkfDn1HHKao03xJHRD9TJ4JTkPhnLq7cFjbUk0UxMk,25194
|
|
40
|
+
gpustack_runtime/detector/amd.py,sha256=1zeF0PeXzmDQJA6JYvT1hQcjMN1cs36w8haHpzpp4NM,18413
|
|
41
|
+
gpustack_runtime/detector/ascend.py,sha256=4J7WvUX2cCPpGu0p9rRKEhV71zIMM7M3PPw2dgUauvE,19984
|
|
42
|
+
gpustack_runtime/detector/cambricon.py,sha256=5AXILG9NAMYiWjaLRZ5h8lXtFk7FLC7LB_aFQz0ZtYU,4102
|
|
43
|
+
gpustack_runtime/detector/hygon.py,sha256=ck7EaSUj1-gTYx1ZgdwbtHsneoCakDhZbQhFYFWd2ik,12967
|
|
44
|
+
gpustack_runtime/detector/iluvatar.py,sha256=YK-O53B_H16BLalbTwVqJWVi9WTCdCRM_GX7d7FmBO0,10682
|
|
45
|
+
gpustack_runtime/detector/metax.py,sha256=JZ9Z9vZ_iFrFOtoM626G0iPviqaTDJzBkh353RJfTMM,10930
|
|
46
|
+
gpustack_runtime/detector/mthreads.py,sha256=LL7iYbV5ov2edLmkZ5NvPt6rzHh7f3H6RWvjJgOXKZc,12880
|
|
47
|
+
gpustack_runtime/detector/nvidia.py,sha256=Xhp13TmhUneBpRFDFnWY9OHva4xlfGAEOGSLlpc56VE,34718
|
|
48
|
+
gpustack_runtime/detector/thead.py,sha256=NEifNMTnj37CB1bHviyE8F9ZGYKpfQtm7TsxnzlkLnU,26998
|
|
49
|
+
gpustack_runtime/detector/pyacl/__init__.py,sha256=sJc6K1NObJKUPQrAYQtcVhEMsN2kskIyNH1CncooTNw,16873
|
|
50
|
+
gpustack_runtime/detector/pyamdgpu/__init__.py,sha256=x-UO07EpKEgfTLmXQOD6j9f6kibuvDC7riQFof3YGdw,8617
|
|
51
|
+
gpustack_runtime/detector/pyamdsmi/__init__.py,sha256=800-khq2w6HLgXM12RkhcdvXBGeAJ4s1_TWJyHebCMk,955
|
|
52
|
+
gpustack_runtime/detector/pycuda/__init__.py,sha256=p-Na5eBjdsFGXPHCEEUfFj5TQFjPxPQGV0i4oU6ywBA,16922
|
|
53
|
+
gpustack_runtime/detector/pydcmi/__init__.py,sha256=63FoyTLAdJRUBUJ86CVONpO0Q15kvEhaEH_kN4qqrdo,37314
|
|
54
|
+
gpustack_runtime/detector/pyhgml/__init__.py,sha256=Yp9s-QhHS4ck7Iq9kd4v6a4BruyJQcuOTYlyYSmnOgI,182896
|
|
55
|
+
gpustack_runtime/detector/pyhgml/libhgml.so,sha256=BPzGVBpzrMX1tSvbXddq8Q0Qhi8w-No2JXX8sRxTioI,2101640
|
|
56
|
+
gpustack_runtime/detector/pyhgml/libuki.so,sha256=EE6v1vIYYT4FSDMMm9rSfAqwrwIPFD-4_6KtP51lSps,702352
|
|
57
|
+
gpustack_runtime/detector/pyhsa/__init__.py,sha256=4DuGnBBMUVOCPa6vTx3XT5mffGrKk6M6CYbUWBoMTJ0,15792
|
|
58
|
+
gpustack_runtime/detector/pyixml/__init__.py,sha256=2YmNoYhcIvc4CbRZgORM9o-GKdQ6O05J-5L3JbMZdhA,163157
|
|
59
|
+
gpustack_runtime/detector/pymxsml/__init__.py,sha256=YxfNHq7TWd7CpNroP45BGXhcWNpY_sXgVzNGtx68DII,45409
|
|
60
|
+
gpustack_runtime/detector/pyrocmcore/__init__.py,sha256=rgwIdPS-7GG7_5luRMR1XG9QyNM3lJh5ryD7kfZqpWg,2523
|
|
61
|
+
gpustack_runtime/detector/pyrocmsmi/__init__.py,sha256=Gk4pTadOMzLCZJvQJ2S1N_1ivogtYokfVPHj_9Y874Y,12286
|
|
62
|
+
gpustack_runtime/_version_appendix.py,sha256=-PDS1ZkWXq1N9cDAPU9eY8t4sJ5GHs8YQgMCBrRBrX0,23
|
|
63
|
+
gpustack_runtime-0.1.42.post1.dist-info/METADATA,sha256=2OqVrE1DJE5z3w_isNfXgoFioudBbs_EtlmV6LrHlBQ,2364
|
|
64
|
+
gpustack_runtime-0.1.42.post1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
65
|
+
gpustack_runtime-0.1.42.post1.dist-info/entry_points.txt,sha256=bBO_61GxP6dIT74uZwbSDgW5Vt2pTePUS3CgjUJkUgg,68
|
|
66
|
+
gpustack_runtime-0.1.42.post1.dist-info/licenses/LICENSE,sha256=OiPibowBvB-NHV3TP_NOj18XNBlXcshXZFMpa3uvKVE,10362
|
|
67
|
+
gpustack_runtime-0.1.42.post1.dist-info/RECORD,,
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
gpustack_runtime/__init__.py,sha256=Xw_PVWneitx-8QmW6sJQeymj6zVbEgEndGhIB_km6TI,186
|
|
2
|
-
gpustack_runtime/__main__.py,sha256=O9yJKcN7vg0Ppgc13qesxHwST2wkH3ccOkTQXPWHnNA,3939
|
|
3
|
-
gpustack_runtime/_version.py,sha256=avOg2k2wJyqvBs2osdxAhmsDLf9lzQxB4hFsfDnq90s,792
|
|
4
|
-
gpustack_runtime/_version.pyi,sha256=A42NoSgcqEXVy2OeNm4LXC9CbyonbooYrSUBlPm2lGY,156
|
|
5
|
-
gpustack_runtime/envs.py,sha256=Q8vK42OpkY4T72zN6pOz_eCS_hnQElhAmxZ1wdks0xQ,38794
|
|
6
|
-
gpustack_runtime/logging.py,sha256=wMPriPpOuVsuClsjMh0qwEPQKyJiJa89ggdDjqkk7i0,6934
|
|
7
|
-
gpustack_runtime/cmds/__init__.py,sha256=-_X2O2lBn6KcdLGUzhL3lEjQC4_cwA36fvWDnFAgtVM,1382
|
|
8
|
-
gpustack_runtime/cmds/__types__.py,sha256=TBnUWUqzTkDtJnsMv363kdw-H8fOf-XQYbOvrmQif-M,815
|
|
9
|
-
gpustack_runtime/cmds/deployer.py,sha256=KvhPhU6ZW-UV6vLykI5adKI1ThgVFFJqWaII3n4OhL8,32846
|
|
10
|
-
gpustack_runtime/cmds/detector.py,sha256=AALcoqCiNuwYucKBnyj7r5ScOWc_BSzAhHR2C0QbEHE,8750
|
|
11
|
-
gpustack_runtime/cmds/images.py,sha256=7tb-D3G4yqLPkbS9aSuWI1bD3DYK8BLbPbgqac56blI,594
|
|
12
|
-
gpustack_runtime/deployer/__init__.py,sha256=impMrmvkMjuCBthsn3QUz3LuwpmmNAymHJKJ2o6SZoc,16249
|
|
13
|
-
gpustack_runtime/deployer/__patches__.py,sha256=cTBge8BT6IsY5MzETKY3kN28k3igYfNj7pcpgDzfDzw,17849
|
|
14
|
-
gpustack_runtime/deployer/__types__.py,sha256=PgIWogHOvHKsHoeBjmKFEEM3JrKck89Mmnwlfx01BbE,72248
|
|
15
|
-
gpustack_runtime/deployer/__utils__.py,sha256=paQu2M1UeoSfQPsiskmAqJSiln-8qwibTssEoWFMLec,21109
|
|
16
|
-
gpustack_runtime/deployer/docker.py,sha256=bOaXbTnaalbO42FlyWR1Ha26Y30LGWPzWKPV5Q-Nk7g,85039
|
|
17
|
-
gpustack_runtime/deployer/kuberentes.py,sha256=V7_lPMFaLCJz3vqFBGKomOs9EZs7nGjrSV9EJ5lLyVM,89323
|
|
18
|
-
gpustack_runtime/deployer/podman.py,sha256=_qdbsTezacRmiXa3n04OUPUsgVy1pSFgJSKxous4s14,82156
|
|
19
|
-
gpustack_runtime/deployer/cdi/__init__.py,sha256=2wHrxkud3GJokE3ytNc3jvjddemXkNuuz_oIKzxD3-I,4000
|
|
20
|
-
gpustack_runtime/deployer/cdi/__types__.py,sha256=04DKvcogk7OoHS7TU2Bmht3VVMu7iOEBWTEOvxpHt4w,18399
|
|
21
|
-
gpustack_runtime/deployer/cdi/__utils__.py,sha256=mvdOqkbhaSkphl0K-VpNwtFviAkttS9UrmKEA285kRw,3908
|
|
22
|
-
gpustack_runtime/deployer/cdi/amd.py,sha256=-eq_SOlC56VX2QscZXvnoeffWSRindhr8zFZmaIcKrE,4082
|
|
23
|
-
gpustack_runtime/deployer/cdi/ascend.py,sha256=lDs75a9--c0lM34xfJqu-_QbfWNFrf4zE-GXPKReBe4,4538
|
|
24
|
-
gpustack_runtime/deployer/cdi/hygon.py,sha256=h6-vQfv03sgxYjMJAf_JOMq9cHFPaNjK1YbUYIiSXck,4117
|
|
25
|
-
gpustack_runtime/deployer/cdi/iluvatar.py,sha256=6nNECZpU5IPP6-5l-O1rzU-ib-WcuwKvDg7ZV__1NE4,3650
|
|
26
|
-
gpustack_runtime/deployer/cdi/metax.py,sha256=tmJBvr-n9pERAp-dXsa54qv6xmxt0rJoJwY36TFdoWk,4143
|
|
27
|
-
gpustack_runtime/deployer/cdi/thead.py,sha256=SvIDKNYZx7FwMPTTxyJ2RRjlr9LXLN8BUYCUhidmiQk,3671
|
|
28
|
-
gpustack_runtime/deployer/k8s/deviceplugin/__init__.py,sha256=cCP8Swtz_LzeIrKnwNszD54fj8ApAMgffUym4Wcyc_g,10975
|
|
29
|
-
gpustack_runtime/deployer/k8s/deviceplugin/__types__.py,sha256=LCkgPDZ64Mra7bo5jmtsAO2Ypbc4qK99lMl6R_nQhnY,3043
|
|
30
|
-
gpustack_runtime/deployer/k8s/deviceplugin/plugin.py,sha256=ipZ_V6pgJ2pzyEYUgAizZ7_W3a4noKEdTiZ9GAeuiRY,17728
|
|
31
|
-
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/__init__.py,sha256=3rOYmgDIIJ4idEtwgnumGStH7PaK-J7EYrOnLa9A-8o,118
|
|
32
|
-
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api.proto,sha256=rmB8RDe4LN5FCVkQ608uS-pl32mk5tt6iGe-g2lKtPs,7919
|
|
33
|
-
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api_pb2.py,sha256=dNkzjTE-2y25q8NF0QRznNJ5r1-5ZxxJS598MHbjx98,45998
|
|
34
|
-
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api_pb2.pyi,sha256=lq1dbSgBYqJ7zyGfoKKHCyfr6R5vcCGzJxteeyQpbuI,8232
|
|
35
|
-
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/api_pb2_grpc.py,sha256=GM6EyCEFeyOjL0XOCisbcHurRoLKqKDUI5obsUyTxpE,17446
|
|
36
|
-
gpustack_runtime/deployer/k8s/types/kubelet/deviceplugin/v1beta1/constants.py,sha256=tpNk3e_cvY67C9RwVsdTNl75YuNXBgsn53fSJIzeTR4,828
|
|
37
|
-
gpustack_runtime/detector/__init__.py,sha256=9i6KOd3Qp_BmnSyPURlOBHlHJMSInqlDTh1kpAbs4_U,8104
|
|
38
|
-
gpustack_runtime/detector/__types__.py,sha256=tiYbxPD6gV5wS79K3d2dUzy6btJl4QcsgunyxtJ240E,13162
|
|
39
|
-
gpustack_runtime/detector/__utils__.py,sha256=QdLWXwsU1_EMxXG5Y29psqnttWJyXWMphHDjiC_6Byc,25153
|
|
40
|
-
gpustack_runtime/detector/amd.py,sha256=qh86xGhPJRIXwiKaHmeyIrsxchUDRpyggR6yc0cLuKw,17553
|
|
41
|
-
gpustack_runtime/detector/ascend.py,sha256=E6YPoREI5r2HZIegUaQb0XwC3Qau1mnkNeCRbgtlE5k,17992
|
|
42
|
-
gpustack_runtime/detector/cambricon.py,sha256=GzXlS4et8zape0rr19d1EwSV9cfFEmHgaElTVMjR3IY,3947
|
|
43
|
-
gpustack_runtime/detector/hygon.py,sha256=R4I8h66YHJC00iAtDJhBX772VMKUdZ8nleRXZFPUt3Q,12299
|
|
44
|
-
gpustack_runtime/detector/iluvatar.py,sha256=bqciqjYE_tIxBg2PSOlIzH3WcFYBgTDjfN6nT90LSGg,10206
|
|
45
|
-
gpustack_runtime/detector/metax.py,sha256=W4NSZD7Kf5431B63UBpYnKIk2Jz1SutEpwXkwgYfmfE,10374
|
|
46
|
-
gpustack_runtime/detector/mthreads.py,sha256=GcElUIMvU5C6P4Fx_X_kSOsJps8WZ47tkZ2B2MJZmk4,12131
|
|
47
|
-
gpustack_runtime/detector/nvidia.py,sha256=xdvoMdNx943on5fd_mI3WI_85kMY-0dYm5NU3vqXb9M,33400
|
|
48
|
-
gpustack_runtime/detector/thead.py,sha256=43TGPq78FulpYBUeEMVxDTY-0X3ve2FsX4Hsd0Lswy0,25561
|
|
49
|
-
gpustack_runtime/detector/pyacl/__init__.py,sha256=UQjaBxP7nJNyzr08N8_lH-5wPtnFmUY9pyQhs6vIChU,16232
|
|
50
|
-
gpustack_runtime/detector/pyamdgpu/__init__.py,sha256=x-UO07EpKEgfTLmXQOD6j9f6kibuvDC7riQFof3YGdw,8617
|
|
51
|
-
gpustack_runtime/detector/pyamdsmi/__init__.py,sha256=800-khq2w6HLgXM12RkhcdvXBGeAJ4s1_TWJyHebCMk,955
|
|
52
|
-
gpustack_runtime/detector/pycuda/__init__.py,sha256=p-Na5eBjdsFGXPHCEEUfFj5TQFjPxPQGV0i4oU6ywBA,16922
|
|
53
|
-
gpustack_runtime/detector/pydcmi/__init__.py,sha256=zCeImelWgbPDn51dJgp3LlCK-uGOuHmmPGiOsyYB3cI,37264
|
|
54
|
-
gpustack_runtime/detector/pyhgml/__init__.py,sha256=Yp9s-QhHS4ck7Iq9kd4v6a4BruyJQcuOTYlyYSmnOgI,182896
|
|
55
|
-
gpustack_runtime/detector/pyhgml/libhgml.so,sha256=BPzGVBpzrMX1tSvbXddq8Q0Qhi8w-No2JXX8sRxTioI,2101640
|
|
56
|
-
gpustack_runtime/detector/pyhgml/libuki.so,sha256=EE6v1vIYYT4FSDMMm9rSfAqwrwIPFD-4_6KtP51lSps,702352
|
|
57
|
-
gpustack_runtime/detector/pyhsa/__init__.py,sha256=4DuGnBBMUVOCPa6vTx3XT5mffGrKk6M6CYbUWBoMTJ0,15792
|
|
58
|
-
gpustack_runtime/detector/pyixml/__init__.py,sha256=6ss_Dyl8lIT4WrKpfwmQqzBmg4Bxi38vg_eey_wsSY0,162681
|
|
59
|
-
gpustack_runtime/detector/pymxsml/__init__.py,sha256=YxfNHq7TWd7CpNroP45BGXhcWNpY_sXgVzNGtx68DII,45409
|
|
60
|
-
gpustack_runtime/detector/pyrocmcore/__init__.py,sha256=rgwIdPS-7GG7_5luRMR1XG9QyNM3lJh5ryD7kfZqpWg,2523
|
|
61
|
-
gpustack_runtime/detector/pyrocmsmi/__init__.py,sha256=ACwRtJWVIuJ4NTcBJxk0zrVb_qtDOMkApMdbJoag5g0,11906
|
|
62
|
-
gpustack_runtime/_version_appendix.py,sha256=NCkcFhpU5_5eIeG-39gvsVgVabq_3NDFCToVnvsn6EU,23
|
|
63
|
-
gpustack_runtime-0.1.41.post3.dist-info/METADATA,sha256=RLNYsBXAICxX3S0JO0t_V-73-MfKoJoLH8Mcq5kessc,2364
|
|
64
|
-
gpustack_runtime-0.1.41.post3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
65
|
-
gpustack_runtime-0.1.41.post3.dist-info/entry_points.txt,sha256=bBO_61GxP6dIT74uZwbSDgW5Vt2pTePUS3CgjUJkUgg,68
|
|
66
|
-
gpustack_runtime-0.1.41.post3.dist-info/licenses/LICENSE,sha256=OiPibowBvB-NHV3TP_NOj18XNBlXcshXZFMpa3uvKVE,10362
|
|
67
|
-
gpustack_runtime-0.1.41.post3.dist-info/RECORD,,
|
|
File without changes
|
{gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{gpustack_runtime-0.1.41.post3.dist-info → gpustack_runtime-0.1.42.post1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|