Files
Raptor/docs/compiler/architecture.md
T
NiccoloN 034c197260
Validate Operations / validate-operations (push) Failing after 3h10m55s
rework documentation
add plot generation scripts
adjust validation tools
add up-to-date results
2026-10-19 16:34:01 +02:00

2.6 KiB

Compiler architecture and pipeline

See the documentation index for related compiler and evaluation references. Source paths below are relative to the repository root.

Compilation pipeline

ONNX-MLIR -> Spatial -> Pim (tensor) -> Pim (bufferized) -> Pim artifacts
Stage Responsibility and source
ONNX → Spatial Operation lowering, target-neutral layout planning, and plan materialization in src/PIM/Conversion/ONNXToSpatial.
Spatial scheduling Graph merging, scheduling, verification, and communication realization in src/PIM/Dialect/Spatial/Passes/Transforms/MergeComputeNodes; see scheduling ownership.
Spatial → Pim Cores, communication, packing, and global tensors in src/PIM/Conversion/SpatialToPim.
Bufferization Writable destinations, one-shot analysis, memory normalization, and verification in src/PIM/Dialect/Pim/Passes/Transforms/Bufferization.
Local-memory planning Whole-core lifetimes and address reuse in src/PIM/Dialect/Pim/Passes/Transforms/LocalMemoryPlanning.
Verification/codegen Verify the explicit memory plan and emit artifacts in src/PIM/Passes/PimCodegen and src/PIM/Compiler.

Spatial plans select physical layouts and insert explicit materializations at boundaries. Dense NCHW is the default; compatible operations can use row-strip layouts, while Flatten can reassemble fragmented inputs. Function results remain dense NCHW. See the layout compatibility reference for operation alternatives, legality checks, and planner behavior.

Validation and tests

Validation instructions cover ONNX-MLIR reference comparison, functional simulation, performance measurement, and artifacts. The Rust functional simulator reads Raptor's artifact directory; pimsim-nn supplies latency, power, and energy estimates.

cd backend-simulators/pim/pim-simulator
cargo test

Repository layout

  • src/PIM/: accelerator, dialects, conversions, analyses, and codegen.
  • test/PIM/: compiler unit tests.
  • validation/: operation/network suites and simulator configuration.
  • backend-simulators/pim/pim-simulator/: Rust functional simulator.
  • backend-simulators/pim/pimsim-nn/: performance simulator submodule.
  • tools/raptor_graph_explorer/: Spatial CSV viewer.
  • pimcomp_utils/: comparison helpers containing local paths.
  • .github/: CI build and validation setup.

CMake exposes src/PIM and test/PIM through generated shims under onnx-mlir/src/Accelerators/PIM and onnx-mlir/test/accelerators/PIM.