Pular para conteúdo

Units

CPU, GPU e NPU herdam de Unit. Eles compartilham o mesmo formato para que uma ferramenta possa tratar todo dispositivo de computação de maneira uniforme, sem forçar a máquina a passar por um modelo exclusivo de CUDA.

from mainboard import Machine

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

Toda unit expõe:

atributo significado
kind identidade da classe: UnitKind.CPU, UnitKind.GPU ou UnitKind.NPU
vendor identidade do provider, como Vendor.APPLE ou Vendor.NVIDIA
name nome legível do modelo
architecture string da arquitetura, quando conhecida
memory leitura Memory: bytes total, usado e livre da memória que a unidade enxerga
snapshot() snapshot tipado de telemetria

Toda unidade reporta memória da mesma forma, então unit.memory.total_bytes e unit.memory.used_gb funcionam de modo uniforme em CPU, GPU e NPU.

Snapshots

Unit.snapshot() retorna UnitSnapshot. GPU.snapshot() retorna GPUSnapshot, que estende UnitSnapshot com telemetria específica de GPU.

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

Os modelos de snapshot são modelos Pydantic e podem ser serializados com model_dump().