IRON Lab WorldTreeNetwork

Device

Occupancy

XRT will run two NPU clients at once. v1 protection is an exclusive advisory flock, not a daemon.

An xclbin reconfigures the tile array. Two processes loading different designs will clobber each other. IRON Lab treats occupancy like an FPGA bitstream slot, not like a GPU context.

What we measured (Krackan, XRT 2.21.75)

  • Two sequential NPUKernel() runs in one process: both succeed (second is cached).
  • Two concurrent processes each calling NPUKernel(): both succeed. No exclusive device.
  • xrtDeviceOpen(0) twice succeeds. xrtDeviceLoadXclbinFile returns rc=-1, load_axlf: Operation not supported.

Hardware will not serialize clients. Constructing NPUKernel does not program the array; work happens on __call__.

v1 lock

ironlab-device takes an advisory flock plus a state file (pid, started_unix). ironlab load claims it and holds until Ctrl-C. Same-process second flock would succeed (locks are process-wide); a second process is refused.

ENOTSUP from load_axlf is expected on this NPU. The process keeps the lock anyway.

Not v1

Multi-bundle / partitions / a daemon: later (parakeet-aie-rev.19).

Write-up: docs/occupancy-findings.md in the repo.

Krackan / NPU6 first ironlab MIT OR Apache-2.0