Saltar a contenido

Unidades

CPU, GPU y NPU heredan de Unit. Comparten la misma forma para que una herramienta pueda tratar cada dispositivo de cómputo de manera uniforme, sin obligar a la máquina a pasar por un modelo exclusivo de CUDA.

from mainboard import Machine

for unit in Machine().units:
    print(unit.kind, unit.vendor, unit.label)
    print(unit.snapshot())

Cada unidad expone:

atributo significado
kind identidad de clase: UnitKind.CPU, UnitKind.GPU o UnitKind.NPU
vendor identidad del proveedor, como Vendor.APPLE o Vendor.NVIDIA
name nombre de modelo legible por humanos
architecture cadena de arquitectura cuando se conoce
memory lectura Memory: bytes total, usado y libre de la memoria que ve la unidad
snapshot() instantánea de telemetría tipada

Cada unidad reporta la memoria del mismo modo, así que unit.memory.total_bytes y unit.memory.used_gb funcionan de forma uniforme en CPU, GPU y NPU.

Instantáneas

Unit.snapshot() devuelve UnitSnapshot. GPU.snapshot() devuelve GPUSnapshot, que extiende UnitSnapshot con telemetría específica de GPU.

machine = Machine()
cpu_snapshot = machine.cpu.snapshot("setup")
gpu_snapshot = machine.gpus[0].snapshot("kernel")

Los modelos de instantánea son modelos de Pydantic y se pueden serializar con model_dump().