clustermax 0.3.0.dev2026093038__tar.gz → 0.3.0.dev2026100240__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.
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/PKG-INFO +1 -1
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/PKG-INFO +1 -1
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/platform_config.py +8 -2
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/system/hbm_memory_exposure.py +9 -4
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/LICENSE +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/README.md +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/SOURCES.txt +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/dependency_links.txt +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/entry_points.txt +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/requires.txt +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/top_level.txt +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/__init__.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/_version.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/audit_profiles.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/audit_report.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/audit_review.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/audit_runner.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/banner.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/cli.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/cmax.yaml +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/criteria_links.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/logo.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/minimum_links.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/minimum_refresh.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/minimum_sync.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/progress.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/report_style.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/runtime_paths.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/audit-common.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/audit_findings.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/_fanout.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/fabric/nccl-ib-qps-check.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/fabric/nccl-topology-file-check.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/fabric/nic-topology-check.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/fabric/virtio-net-check.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/gpu/vboost.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/system/arm-smmu-virtualization-check.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/checks/system/vm-iommu-check.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/cluster-audit-k8s-security.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/cluster-audit-k8s.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/cluster-audit-slurm-security.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/cluster-audit-slurm.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/cluster-audit-standalone-security.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/cluster-audit-standalone.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/container-check.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/criteria-checks.json +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/gpu_profiles.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/host-check.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/k8s-control.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/kubernetes_quantities.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/merge_audit.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/minimum-versions.json +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/minimum_versions.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/monitoring-k8s.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/plan_audit.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/run.sh +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/run_checks.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/run_legacy_audit.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/security_version_audit.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/validate_audit.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/security.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/target_selection.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/yaml_support.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/pyproject.toml +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/setup.cfg +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/setup.py +0 -0
- {clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/tests/test_nightly_version.py +0 -0
|
@@ -36,7 +36,8 @@ fault.
|
|
|
36
36
|
Environment variables:
|
|
37
37
|
|
|
38
38
|
* ``CLUSTERMAX_AUDIT_K8S_NAMESPACE`` (default ``default``)
|
|
39
|
-
* ``CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE`` (default
|
|
39
|
+
* ``CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE`` (default: digest-pinned
|
|
40
|
+
``python:3.12-alpine``; use a digest-pinned mirror for air-gapped clusters)
|
|
40
41
|
* ``CLUSTERMAX_AUDIT_K8S_HOST_CHECK_PULL_POLICY`` (default ``IfNotPresent``)
|
|
41
42
|
* ``CLUSTERMAX_AUDIT_K8S_MAX_HOST_CHECKS`` (default: all GPU nodes)
|
|
42
43
|
* ``CLUSTERMAX_PYXIS_CHECK_IMAGE`` - container the mount check launches.
|
|
@@ -68,6 +69,11 @@ from pathlib import Path
|
|
|
68
69
|
from typing import Any
|
|
69
70
|
|
|
70
71
|
SCHEMA_VERSION = 1
|
|
72
|
+
# Pin the multi-architecture index so both x86 and Arm hosts use fixed images.
|
|
73
|
+
DEFAULT_K8S_HOST_CHECK_IMAGE = (
|
|
74
|
+
"python:3.12-alpine@"
|
|
75
|
+
"sha256:c4634f578a412db396771b61b064c6e546c9d6414c7fb5b1b05d5871f1885f7b"
|
|
76
|
+
)
|
|
71
77
|
CHECK_KEYS = ("vm_iommu", "arm_smmu_virtualization")
|
|
72
78
|
ALL_CHECK_KEYS = (*CHECK_KEYS, "nccl_topo_file", "nccl_ib_qps")
|
|
73
79
|
CACHE_PATH_ENV = "CLUSTERMAX_PLATFORM_CHECK_CACHE"
|
|
@@ -2020,7 +2026,7 @@ def run_k8s_check(
|
|
|
2020
2026
|
include_rdma_iommu: bool = True,
|
|
2021
2027
|
) -> tuple[list[dict[str, Any]], list[str]]:
|
|
2022
2028
|
namespace = os.environ.get("CLUSTERMAX_AUDIT_K8S_NAMESPACE", "default")
|
|
2023
|
-
image = os.environ.get("CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE",
|
|
2029
|
+
image = os.environ.get("CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE", DEFAULT_K8S_HOST_CHECK_IMAGE)
|
|
2024
2030
|
max_nodes = as_int(os.environ.get("CLUSTERMAX_AUDIT_K8S_MAX_HOST_CHECKS"), default=len(nodes))
|
|
2025
2031
|
return load_fanout().fan_out_k8s(
|
|
2026
2032
|
lambda node: run_k8s_host_check(
|
|
@@ -10,9 +10,9 @@ Use a separate destructive memory test for the active DRAM-to-HBM spill repro.
|
|
|
10
10
|
Kubernetes harness environment variables:
|
|
11
11
|
|
|
12
12
|
* ``CLUSTERMAX_AUDIT_K8S_NAMESPACE`` (default ``default``)
|
|
13
|
-
* ``CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE`` (default
|
|
14
|
-
``python:3.12-alpine``) - must be reachable from GPU nodes;
|
|
15
|
-
for air-gapped clusters.
|
|
13
|
+
* ``CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE`` (default: digest-pinned
|
|
14
|
+
``python:3.12-alpine``) - must be reachable from GPU nodes; use a
|
|
15
|
+
digest-pinned mirror for air-gapped clusters.
|
|
16
16
|
* ``CLUSTERMAX_AUDIT_K8S_HOST_CHECK_PULL_POLICY`` (default
|
|
17
17
|
``IfNotPresent``)
|
|
18
18
|
* ``CLUSTERMAX_AUDIT_K8S_MAX_HOST_CHECKS`` (default: all GPU nodes)
|
|
@@ -33,6 +33,11 @@ from typing import Any
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
GIB_KB = 1024 * 1024
|
|
36
|
+
# Pin the multi-architecture index so both x86 and Arm hosts use fixed images.
|
|
37
|
+
DEFAULT_K8S_HOST_CHECK_IMAGE = (
|
|
38
|
+
"python:3.12-alpine@"
|
|
39
|
+
"sha256:c4634f578a412db396771b61b064c6e546c9d6414c7fb5b1b05d5871f1885f7b"
|
|
40
|
+
)
|
|
36
41
|
# Lower bound for what counts as an HBM-sized memory-only NUMA node. 64 GiB
|
|
37
42
|
# catches every coherent NVIDIA platform shipping today (GH200 96 GiB, GB200
|
|
38
43
|
# 192 GiB per GPU, GB300 288 GiB per GPU, H100 SXM 80 GiB if ever exposed
|
|
@@ -735,7 +740,7 @@ def run_k8s_check() -> tuple[list[dict[str, Any]], list[str]]:
|
|
|
735
740
|
return [], [NO_K8S_GPU_NODES]
|
|
736
741
|
|
|
737
742
|
namespace = os.environ.get("CLUSTERMAX_AUDIT_K8S_NAMESPACE", "default")
|
|
738
|
-
image = os.environ.get("CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE",
|
|
743
|
+
image = os.environ.get("CLUSTERMAX_AUDIT_K8S_HOST_CHECK_IMAGE", DEFAULT_K8S_HOST_CHECK_IMAGE)
|
|
739
744
|
max_nodes = as_int(os.environ.get("CLUSTERMAX_AUDIT_K8S_MAX_HOST_CHECKS"), default=len(nodes))
|
|
740
745
|
return load_fanout().fan_out_k8s(_hbm_per_node(namespace, image), nodes=nodes, max_nodes=max_nodes)
|
|
741
746
|
|
|
File without changes
|
|
File without changes
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/requires.txt
RENAMED
|
File without changes
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/clustermax.egg-info/top_level.txt
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
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/host-check.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/plan_audit.py
RENAMED
|
File without changes
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/run.sh
RENAMED
|
File without changes
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/cmax/scripts/1-audit/run_checks.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
|
{clustermax-0.3.0.dev2026093038 → clustermax-0.3.0.dev2026100240}/tests/test_nightly_version.py
RENAMED
|
File without changes
|