# Validation on the attached IPU

Date: 2026-09-29 (UTC)
Poplar: 3.4.0 (`0a785c2cb5`), popc Clang 16.0.0
Target: `ipu21`; hardware device ID 0; 1,472 tiles.

Commands, after enabling the installed SDK:

```sh
make
make test
./examples/ipulisp --self-test
./examples/ipulisp --tiles all --self-test
./examples/ipulisp --tiles 1 --file examples/demo.lisp
```

Results:

- All 58 upstream test cases passed on the host in normal and forced-GC modes
  (116 test configurations; the upstream script invokes each twice).
- Host API regressions passed: persistent state, tile ID, malformed forms,
  recovery, output truncation, capacities 0 and 1, heap exhaustion, and reset.
- All 14 hardware checks passed on four tiles, then on every one of 1,472 tiles,
  in both normal and forced-GC modes. Checks cover arithmetic, tile identity,
  persistent definitions and closures, lists, macros, recursion, collection,
  undefined symbols and recovery, parser errors and recovery, output overflow
  and recovery.
- The allocation test recorded 8 collections per tile in normal mode and
  32,165 in forced-GC mode (cumulative since initialization, before overflow).

The all-tile run ended with:

```text
PASS collector (1472 tiles, forced GC)
Collections per tile: 32165
PASS undefined symbol (1472 tiles, forced GC)
PASS error recovery (1472 tiles, forced GC)
PASS parse error (1472 tiles, forced GC)
PASS parse recovery (1472 tiles, forced GC)
PASS output overflow (1472 tiles, forced GC)
PASS overflow recovery (1472 tiles, forced GC)
All hardware tests passed.
```

These are functional correctness checks, not throughput or latency benchmarks.
