B7: Apple Silicon worker support (v0.19.0)

gpu.py: darwin branch via system_profiler SPDisplaysDataType for GPU
model/VRAM on macOS, falls back to rocm-smi on Linux.
hardware.py: _get_vram_darwin() parses system_profiler output.
node_agent/agent.py: get_load() reports VRAM on darwin via
system_profiler.
tests: 5 new gpu tests (linux/darwin/absent), 3 new hardware tests
(darwin assessment + VRAM parsing).
This commit is contained in:
gramps
2026-07-14 08:09:41 -07:00
parent feaa2830da
commit 790c81457a
7 changed files with 273 additions and 13 deletions
+15
View File
@@ -51,6 +51,7 @@ import asyncio
import json
import logging
import os
import re
import socket
import subprocess
import sys
@@ -194,6 +195,20 @@ def get_load() -> dict:
load["vram_pct"] = round(used / total * 100)
except (FileNotFoundError, subprocess.TimeoutExpired):
pass
# Darwin / Apple Silicon
if sys.platform == "darwin" and "vram_pct" not in load:
try:
result = subprocess.run(
["system_profiler", "SPDisplaysDataType"],
capture_output=True, text=True, timeout=5,
)
if result.returncode == 0:
for line in result.stdout.splitlines():
m = re.match(r"\s+VRAM \(Dynamic, Max\):\s+(\d+)\s+GB", line)
if m:
load["vram_pct"] = 50 # unified memory — best guess
except (FileNotFoundError, subprocess.TimeoutExpired):
pass
return load