gpustack-runtime 0.2.5.post1__tar.gz → 0.2.5.post3__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.
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/PKG-INFO +1 -1
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/_version.py +2 -2
- gpustack_runtime-0.2.5.post3/gpustack_runtime/_version_appendix.py +1 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__init__.py +4 -4
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/ascend.py +19 -3
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/docker.py +1 -1
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/kuberentes.py +31 -5
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/podman.py +1 -1
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_ascend_ranktable.py +1 -3
- gpustack_runtime-0.2.5.post3/tests/gpustack_runtime/deployer/test_logs_options.py +210 -0
- gpustack_runtime-0.2.5.post1/gpustack_runtime/_version_appendix.py +0 -1
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.codespelldict +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.codespellrc +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.dockerignore +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.gitattributes +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.gitignore +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.pre-commit-config.yaml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/.python-version +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/LICENSE +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/Makefile +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/README.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/deploy/manifests/docker-compose.yaml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/deploy/manifests/kubernetes.yaml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/docs/index.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/docs/modules/gpustack_runtime.deployer.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/docs/modules/gpustack_runtime.detector.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/docs/modules/gpustack_runtime.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/__main__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/_version.pyi +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/__types__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/deployer.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/detector.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/images.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__patches__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__types__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__utils__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/__types__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/__utils__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/amd.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/hygon.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/iluvatar.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/metax.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/thead.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/k8s/devicemanager/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/__types__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/__utils__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/amd.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/ascend.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/cambricon.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/hygon.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/iluvatar.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/metax.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/mthreads.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/nvidia.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyamdgpu/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyamdsmi/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pycndev/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pydcmi/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pydmi/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyhgml/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyhgml/libhgml.so +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyhgml/libuki.so +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyhsa/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyixml/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pymtml/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pymxsml/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pynvml/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/pyrocmsmi/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/thead.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/envs.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/logging.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/hatch.toml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/mkdocs.yml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/pack/Dockerfile +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/pack/Dockerfile.dummy +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/pyproject.toml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/pytest.ini +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/ruff.toml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/specs/2026-08-14-detector-alignment-and-workload-exit-status.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_compare_versions.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_correct_runner_image.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_multiple_jsons.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_multiple_yamls.yaml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_single_json.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_load_yaml_or_json_single_yaml.yaml +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/fixtures/test_nginx_entrypoint.sh +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_docker_status.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_kubernetes_status.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_podman_status.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_privileged.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_resource_injection_policy.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_runtime_class.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_termination_grace_period.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_utils.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_visible_devices_ordering.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/deployer/test_workload_status.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/fixtures/__init__.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/README.md +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_amd_mi300x.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_amd_mi308x.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_amd_rx7800xt.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_ascend_310p3.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_ascend_910b2.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_hygon_k100ai.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_metax_c500.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_gb10.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h100.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h100_mig.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_h200.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4080super.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4090_48g.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx4090d.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_nvidia_rtx5090d.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/detect_output_thead_ppu.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_amd_mi300x.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_amd_mi308x.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_amd_rx7800xt.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_ascend_310p3.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_ascend_910b2.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_hygon_k100ai.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_metax_c500.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_mthreads_s5000.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h100.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h100_mig.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_h200.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4080super.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4090_48g.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx4090d.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_nvidia_rtx5090d.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/samples/topology_output_thead_ppu.json +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_amd.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_ascend.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_cambricon.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_detector_cli.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_detector_types.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_detector_utils.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_hygon.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_iluvatar.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_metax.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_mig_devices.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_mthreads.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_nvidia.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_pycndev.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_pydmi.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_samples.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/tests/gpustack_runtime/detector/test_thead.py +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/uv.lock +0 -0
- {gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/uv.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gpustack-runtime
|
|
3
|
-
Version: 0.2.5.
|
|
3
|
+
Version: 0.2.5.post3
|
|
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.5.
|
|
31
|
-
__version_tuple__ = version_tuple = (0, 2, 5, '
|
|
30
|
+
__version__ = version = '0.2.5.post3'
|
|
31
|
+
__version_tuple__ = version_tuple = (0, 2, 5, 'post3')
|
|
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 = "327b2fb"
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__init__.py
RENAMED
|
@@ -245,7 +245,7 @@ def logs_workload(
|
|
|
245
245
|
tail:
|
|
246
246
|
The number of lines from the end of the logs to show.
|
|
247
247
|
since:
|
|
248
|
-
Show logs since
|
|
248
|
+
Show logs since the given epoch in seconds.
|
|
249
249
|
follow:
|
|
250
250
|
Whether to follow the logs.
|
|
251
251
|
|
|
@@ -300,7 +300,7 @@ async def async_logs_workload(
|
|
|
300
300
|
tail:
|
|
301
301
|
The number of lines from the end of the logs to show.
|
|
302
302
|
since:
|
|
303
|
-
Show logs since
|
|
303
|
+
Show logs since the given epoch in seconds.
|
|
304
304
|
follow:
|
|
305
305
|
Whether to follow the logs.
|
|
306
306
|
|
|
@@ -434,7 +434,7 @@ def logs_self(
|
|
|
434
434
|
tail:
|
|
435
435
|
The number of lines from the end of the logs to show.
|
|
436
436
|
since:
|
|
437
|
-
Show logs since
|
|
437
|
+
Show logs since the given epoch in seconds.
|
|
438
438
|
follow:
|
|
439
439
|
Whether to follow the logs.
|
|
440
440
|
|
|
@@ -479,7 +479,7 @@ async def async_logs_self(
|
|
|
479
479
|
tail:
|
|
480
480
|
The number of lines from the end of the logs to show.
|
|
481
481
|
since:
|
|
482
|
-
Show logs since
|
|
482
|
+
Show logs since the given epoch in seconds.
|
|
483
483
|
follow:
|
|
484
484
|
Whether to follow the logs.
|
|
485
485
|
|
|
@@ -43,6 +43,24 @@ mindcluster-tools and mounted only when present, see
|
|
|
43
43
|
https://gitcode.com/Ascend/mind-cluster/blob/master/docs/en/scheduling/references/appendix.md.
|
|
44
44
|
"""
|
|
45
45
|
|
|
46
|
+
_ASCEND_DRIVER_PATH = "/usr/local/Ascend/driver"
|
|
47
|
+
"""
|
|
48
|
+
The host driver tree, injected whole rather than as the three subdirectories
|
|
49
|
+
the libraries and the topology file sit in.
|
|
50
|
+
|
|
51
|
+
What the wider mount adds is hccn_tool: a transport that builds Device RoCE
|
|
52
|
+
endpoints reads each NPU's NIC address through it, and a container holding the
|
|
53
|
+
driver libraries but not the tool cannot open that transport at all -- it
|
|
54
|
+
fails with "Failed to get device ip from hccn.conf and hccn_tool" and every
|
|
55
|
+
process that opens it dies at startup. Reading the addresses out of
|
|
56
|
+
/etc/hccn.conf instead works too, but only on a host that keeps them there,
|
|
57
|
+
while the tool answers from the driver on every host that has one.
|
|
58
|
+
|
|
59
|
+
The driver belongs to the host on every Ascend containerization path -- the
|
|
60
|
+
image supplies the toolkit -- so injecting more of it shadows nothing a
|
|
61
|
+
container ships with its own image.
|
|
62
|
+
"""
|
|
63
|
+
|
|
46
64
|
_A5_RANKTABLE_VERSION = "2.0"
|
|
47
65
|
"""
|
|
48
66
|
The ranktable version the A5 generation requires.
|
|
@@ -160,9 +178,7 @@ class AscendGenerator(Generator):
|
|
|
160
178
|
|
|
161
179
|
mount_paths = [
|
|
162
180
|
_HCCL_RANKTABLE_PATH,
|
|
163
|
-
|
|
164
|
-
"/usr/local/Ascend/driver/lib64",
|
|
165
|
-
"/usr/local/Ascend/driver/include",
|
|
181
|
+
_ASCEND_DRIVER_PATH,
|
|
166
182
|
"/usr/local/dcmi",
|
|
167
183
|
"/usr/local/bin/npu-smi",
|
|
168
184
|
"/var/queue_schedule",
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/docker.py
RENAMED
|
@@ -2105,7 +2105,7 @@ class DockerDeployer(EndoscopicDeployer):
|
|
|
2105
2105
|
|
|
2106
2106
|
logs_options = {
|
|
2107
2107
|
"timestamps": timestamps,
|
|
2108
|
-
"tail": tail if tail >= 0 else None,
|
|
2108
|
+
"tail": tail if tail is not None and tail >= 0 else None,
|
|
2109
2109
|
"since": since,
|
|
2110
2110
|
"follow": follow,
|
|
2111
2111
|
}
|
|
@@ -3,8 +3,10 @@ from __future__ import annotations as __future_annotations__
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
|
+
import math
|
|
6
7
|
import os
|
|
7
8
|
import re
|
|
9
|
+
import time
|
|
8
10
|
from dataclasses import dataclass, field
|
|
9
11
|
from datetime import datetime, timezone
|
|
10
12
|
from decimal import Decimal
|
|
@@ -710,6 +712,30 @@ def _resolve_privileged(container: Container, kdp: bool) -> bool:
|
|
|
710
712
|
return True
|
|
711
713
|
|
|
712
714
|
|
|
715
|
+
def to_since_seconds(since: int | None) -> int | None:
|
|
716
|
+
"""
|
|
717
|
+
Convert an absolute epoch into the relative duration the Kubernetes API takes.
|
|
718
|
+
|
|
719
|
+
Every deployer reads `since` as an absolute epoch in seconds, but the
|
|
720
|
+
Kubernetes client only exposes `sinceSeconds`, counted back from now.
|
|
721
|
+
Rounding up and adding a second keeps the requested instant inside the
|
|
722
|
+
window instead of just outside it; the caller sees a couple of seconds of
|
|
723
|
+
older lines rather than a gap. The result is always positive, as the API
|
|
724
|
+
ignores a zero or negative duration.
|
|
725
|
+
|
|
726
|
+
Args:
|
|
727
|
+
since:
|
|
728
|
+
The absolute epoch in seconds, or None for no lower bound.
|
|
729
|
+
|
|
730
|
+
Returns:
|
|
731
|
+
The relative duration in seconds, or None if since is None.
|
|
732
|
+
|
|
733
|
+
"""
|
|
734
|
+
if since is None:
|
|
735
|
+
return None
|
|
736
|
+
return max(1, math.ceil(time.time() - since) + 1)
|
|
737
|
+
|
|
738
|
+
|
|
713
739
|
class KubernetesDeployer(EndoscopicDeployer):
|
|
714
740
|
"""
|
|
715
741
|
Deployer implementation for Kubernetes.
|
|
@@ -2439,7 +2465,7 @@ class KubernetesDeployer(EndoscopicDeployer):
|
|
|
2439
2465
|
tail:
|
|
2440
2466
|
Number of lines from the end of the logs to retrieve.
|
|
2441
2467
|
since:
|
|
2442
|
-
|
|
2468
|
+
Show logs since the given epoch in seconds.
|
|
2443
2469
|
follow:
|
|
2444
2470
|
Whether to stream the logs.
|
|
2445
2471
|
|
|
@@ -2477,8 +2503,8 @@ class KubernetesDeployer(EndoscopicDeployer):
|
|
|
2477
2503
|
|
|
2478
2504
|
logs_options = {
|
|
2479
2505
|
"timestamps": timestamps,
|
|
2480
|
-
"tail_lines": tail if tail >= 0 else None,
|
|
2481
|
-
"since_seconds": since,
|
|
2506
|
+
"tail_lines": tail if tail is not None and tail >= 0 else None,
|
|
2507
|
+
"since_seconds": to_since_seconds(since),
|
|
2482
2508
|
"follow": follow,
|
|
2483
2509
|
"_preload_content": not follow,
|
|
2484
2510
|
}
|
|
@@ -2691,8 +2717,8 @@ class KubernetesDeployer(EndoscopicDeployer):
|
|
|
2691
2717
|
|
|
2692
2718
|
logs_options = {
|
|
2693
2719
|
"timestamps": timestamps,
|
|
2694
|
-
"tail_lines": tail if tail >= 0 else None,
|
|
2695
|
-
"since_seconds": since,
|
|
2720
|
+
"tail_lines": tail if tail is not None and tail >= 0 else None,
|
|
2721
|
+
"since_seconds": to_since_seconds(since),
|
|
2696
2722
|
"follow": follow,
|
|
2697
2723
|
"_preload_content": not follow,
|
|
2698
2724
|
}
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/podman.py
RENAMED
|
@@ -2046,7 +2046,7 @@ class PodmanDeployer(EndoscopicDeployer):
|
|
|
2046
2046
|
|
|
2047
2047
|
logs_options = {
|
|
2048
2048
|
"timestamps": timestamps,
|
|
2049
|
-
"tail": tail if tail >= 0 else None,
|
|
2049
|
+
"tail": tail if tail is not None and tail >= 0 else None,
|
|
2050
2050
|
"since": since,
|
|
2051
2051
|
"follow": follow,
|
|
2052
2052
|
}
|
|
@@ -79,9 +79,7 @@ def test_a5_omits_the_host_ranktable():
|
|
|
79
79
|
targets = _mount_targets(cfg)
|
|
80
80
|
assert cdi_ascend._HCCL_RANKTABLE_PATH not in targets
|
|
81
81
|
# The rest of the vendor's named list is untouched.
|
|
82
|
-
assert
|
|
83
|
-
assert "/usr/local/Ascend/driver/lib64" in targets
|
|
84
|
-
assert "/usr/local/Ascend/driver/include" in targets
|
|
82
|
+
assert cdi_ascend._ASCEND_DRIVER_PATH in targets
|
|
85
83
|
assert "/usr/local/dcmi" in targets
|
|
86
84
|
assert "/usr/local/bin/npu-smi" in targets
|
|
87
85
|
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# The cases below drive the deployers' own log path, which is where the log
|
|
2
|
+
# options become observable without a live Docker daemon, Podman socket or
|
|
3
|
+
# Kubernetes cluster. `since` is an absolute epoch in seconds for every
|
|
4
|
+
# deployer; only Kubernetes has to translate it, because its API takes a
|
|
5
|
+
# relative duration. `tail` has to survive its own declared default.
|
|
6
|
+
# ruff: noqa: SLF001
|
|
7
|
+
|
|
8
|
+
from types import SimpleNamespace
|
|
9
|
+
|
|
10
|
+
import kubernetes.client
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
from gpustack_runtime.deployer.docker import (
|
|
14
|
+
_LABEL_COMPONENT_INDEX as _DOCKER_LABEL_COMPONENT_INDEX,
|
|
15
|
+
)
|
|
16
|
+
from gpustack_runtime.deployer.docker import (
|
|
17
|
+
DockerDeployer,
|
|
18
|
+
)
|
|
19
|
+
from gpustack_runtime.deployer.kuberentes import (
|
|
20
|
+
KubernetesDeployer,
|
|
21
|
+
to_since_seconds,
|
|
22
|
+
)
|
|
23
|
+
from gpustack_runtime.deployer.podman import (
|
|
24
|
+
_LABEL_COMPONENT_INDEX as _PODMAN_LABEL_COMPONENT_INDEX,
|
|
25
|
+
)
|
|
26
|
+
from gpustack_runtime.deployer.podman import (
|
|
27
|
+
PodmanDeployer,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
_COMPONENT_INDEX_LABELS = {
|
|
31
|
+
DockerDeployer: _DOCKER_LABEL_COMPONENT_INDEX,
|
|
32
|
+
PodmanDeployer: _PODMAN_LABEL_COMPONENT_INDEX,
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
NOW = 1_700_000_000
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@pytest.fixture
|
|
39
|
+
def frozen_now(monkeypatch):
|
|
40
|
+
monkeypatch.setattr(
|
|
41
|
+
"gpustack_runtime.deployer.kuberentes.time.time",
|
|
42
|
+
lambda: float(NOW),
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class _FakeCoreV1LogApi:
|
|
47
|
+
"""
|
|
48
|
+
Stand-in for the Kubernetes core API, recording the log calls it receives.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
def __init__(self, journal: list):
|
|
52
|
+
self.journal = journal
|
|
53
|
+
|
|
54
|
+
def __call__(self, client=None):
|
|
55
|
+
return self
|
|
56
|
+
|
|
57
|
+
def read_namespaced_pod_log(self, **kwargs):
|
|
58
|
+
self.journal.append(kwargs)
|
|
59
|
+
return b""
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _kubernetes_deployer(monkeypatch, journal: list) -> SimpleNamespace:
|
|
63
|
+
monkeypatch.setattr(
|
|
64
|
+
kubernetes.client,
|
|
65
|
+
"CoreV1Api",
|
|
66
|
+
_FakeCoreV1LogApi(journal),
|
|
67
|
+
)
|
|
68
|
+
pod = kubernetes.client.V1Pod(
|
|
69
|
+
metadata=kubernetes.client.V1ObjectMeta(name="test", namespace="default"),
|
|
70
|
+
spec=kubernetes.client.V1PodSpec(
|
|
71
|
+
containers=[kubernetes.client.V1Container(name="run")],
|
|
72
|
+
),
|
|
73
|
+
)
|
|
74
|
+
return SimpleNamespace(
|
|
75
|
+
is_supported=lambda: True,
|
|
76
|
+
get=lambda **_kwargs: SimpleNamespace(_k_pod=pod),
|
|
77
|
+
_client=None,
|
|
78
|
+
_find_self_pod_for_endoscopy=lambda: pod,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class _FakeContainer:
|
|
83
|
+
"""
|
|
84
|
+
Stand-in for a Docker or Podman container, recording its log calls.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
def __init__(self, journal: list):
|
|
88
|
+
self.journal = journal
|
|
89
|
+
self.labels = {}
|
|
90
|
+
self.id = "cid"
|
|
91
|
+
self.short_id = "cid"
|
|
92
|
+
|
|
93
|
+
def logs(self, **kwargs):
|
|
94
|
+
self.journal.append(kwargs)
|
|
95
|
+
return b""
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def _container_deployer(journal: list, deployer) -> SimpleNamespace:
|
|
99
|
+
container = _FakeContainer(journal)
|
|
100
|
+
# The component index label is how both deployers pick the loggable container.
|
|
101
|
+
container.labels = {_COMPONENT_INDEX_LABELS[deployer]: "0"}
|
|
102
|
+
return SimpleNamespace(
|
|
103
|
+
is_supported=lambda: True,
|
|
104
|
+
get=lambda **_kwargs: SimpleNamespace(_d_containers=[container]),
|
|
105
|
+
_find_self_container_for_endoscopy=lambda: container,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@pytest.mark.parametrize(
|
|
110
|
+
"deployer",
|
|
111
|
+
[DockerDeployer, PodmanDeployer],
|
|
112
|
+
)
|
|
113
|
+
def test_container_logs_forward_the_epoch_verbatim(deployer):
|
|
114
|
+
# Docker and Podman both take an absolute epoch, so `since` passes through.
|
|
115
|
+
journal = []
|
|
116
|
+
dep = _container_deployer(journal, deployer)
|
|
117
|
+
|
|
118
|
+
deployer._logs(dep, name="test", tail=-1, since=NOW - 90)
|
|
119
|
+
|
|
120
|
+
assert journal[0]["since"] == NOW - 90
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@pytest.mark.usefixtures("frozen_now")
|
|
124
|
+
def test_kubernetes_logs_convert_the_epoch_to_a_relative_duration(monkeypatch):
|
|
125
|
+
# The Kubernetes API counts back from now, so the same absolute epoch has to
|
|
126
|
+
# become a duration. Rounding up and adding a second keeps the requested
|
|
127
|
+
# instant inside the window rather than just outside it.
|
|
128
|
+
journal = []
|
|
129
|
+
dep = _kubernetes_deployer(monkeypatch, journal)
|
|
130
|
+
|
|
131
|
+
KubernetesDeployer._logs(dep, name="test", tail=-1, since=NOW - 90)
|
|
132
|
+
|
|
133
|
+
assert journal[0]["since_seconds"] == 91
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
@pytest.mark.usefixtures("frozen_now")
|
|
137
|
+
def test_kubernetes_endoscopic_logs_convert_the_epoch_too(monkeypatch):
|
|
138
|
+
# The deployer's own logs travel the same API and must not diverge.
|
|
139
|
+
journal = []
|
|
140
|
+
dep = _kubernetes_deployer(monkeypatch, journal)
|
|
141
|
+
|
|
142
|
+
KubernetesDeployer._endoscopic_logs(dep, tail=-1, since=NOW - 90)
|
|
143
|
+
|
|
144
|
+
assert journal[0]["since_seconds"] == 91
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
# Every way into the log path: each deployer serves both a workload and, in
|
|
148
|
+
# mirrored deployment, itself.
|
|
149
|
+
_ENTRY_POINTS = [
|
|
150
|
+
(DockerDeployer, "_logs", {"name": "test"}),
|
|
151
|
+
(DockerDeployer, "_endoscopic_logs", {}),
|
|
152
|
+
(PodmanDeployer, "_logs", {"name": "test"}),
|
|
153
|
+
(PodmanDeployer, "_endoscopic_logs", {}),
|
|
154
|
+
(KubernetesDeployer, "_logs", {"name": "test"}),
|
|
155
|
+
(KubernetesDeployer, "_endoscopic_logs", {}),
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def _entry_deployer(monkeypatch, journal: list, deployer) -> SimpleNamespace:
|
|
160
|
+
if deployer is KubernetesDeployer:
|
|
161
|
+
return _kubernetes_deployer(monkeypatch, journal)
|
|
162
|
+
return _container_deployer(journal, deployer)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
@pytest.mark.parametrize("deployer, method, kwargs", _ENTRY_POINTS)
|
|
166
|
+
def test_an_unset_since_stays_unset(monkeypatch, deployer, method, kwargs):
|
|
167
|
+
# No lower bound must reach the API as no lower bound, not as "now".
|
|
168
|
+
journal = []
|
|
169
|
+
dep = _entry_deployer(monkeypatch, journal, deployer)
|
|
170
|
+
|
|
171
|
+
getattr(deployer, method)(dep, tail=-1, since=None, **kwargs)
|
|
172
|
+
|
|
173
|
+
key = "since_seconds" if deployer is KubernetesDeployer else "since"
|
|
174
|
+
assert journal[0][key] is None
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
@pytest.mark.parametrize("deployer, method, kwargs", _ENTRY_POINTS)
|
|
178
|
+
def test_the_declared_tail_default_reaches_the_api(
|
|
179
|
+
monkeypatch,
|
|
180
|
+
deployer,
|
|
181
|
+
method,
|
|
182
|
+
kwargs,
|
|
183
|
+
):
|
|
184
|
+
# `tail` defaults to None, which has to mean "all lines" rather than blow up
|
|
185
|
+
# on a comparison against an integer.
|
|
186
|
+
journal = []
|
|
187
|
+
dep = _entry_deployer(monkeypatch, journal, deployer)
|
|
188
|
+
|
|
189
|
+
getattr(deployer, method)(dep, since=None, **kwargs)
|
|
190
|
+
|
|
191
|
+
key = "tail_lines" if deployer is KubernetesDeployer else "tail"
|
|
192
|
+
assert journal[0][key] is None
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@pytest.mark.parametrize(
|
|
196
|
+
"since, expected",
|
|
197
|
+
[
|
|
198
|
+
# A whole minute back is a whole minute plus the safety second.
|
|
199
|
+
(NOW - 60, 61),
|
|
200
|
+
# The current second still has to ask for a positive duration.
|
|
201
|
+
(NOW, 1),
|
|
202
|
+
# A cursor ahead of the node's clock must not become a negative or zero
|
|
203
|
+
# duration, which the API rejects.
|
|
204
|
+
(NOW + 30, 1),
|
|
205
|
+
(None, None),
|
|
206
|
+
],
|
|
207
|
+
)
|
|
208
|
+
@pytest.mark.usefixtures("frozen_now")
|
|
209
|
+
def test_to_since_seconds_never_returns_a_non_positive_duration(since, expected):
|
|
210
|
+
assert to_since_seconds(since) == expected
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
git_commit = "55bbd00"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/deploy/manifests/docker-compose.yaml
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/deploy/manifests/kubernetes.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/docs/modules/gpustack_runtime.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/__init__.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/__types__.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/deployer.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/detector.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/cmds/images.py
RENAMED
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__types__.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/__utils__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/amd.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/hygon.py
RENAMED
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/metax.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/deployer/cdi/thead.py
RENAMED
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/__init__.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/__types__.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/__utils__.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/amd.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/ascend.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/cambricon.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/hygon.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/iluvatar.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/metax.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/mthreads.py
RENAMED
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/nvidia.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpustack_runtime-0.2.5.post1 → gpustack_runtime-0.2.5.post3}/gpustack_runtime/detector/thead.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|