# ex_systolic v0.2.0 - Table of Contents

A BEAM-native systolic array simulator -- clocked spatial dataflow with explicit ticks, links, and processing elements.

## Pages

- [README](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

## Modules

- [ExSystolic.Trace.Event](ExSystolic.Trace.Event.md): A single trace event: the record of one PE step at one tick.

- Core
  - [ExSystolic](ExSystolic.md): A BEAM-native systolic array simulator.
  - [ExSystolic.Application](ExSystolic.Application.md): OTP application supervisor for ex_systolic.
  - [ExSystolic.Array](ExSystolic.Array.md): A systolic array: a grid of processing elements connected by links.
  - [ExSystolic.Clock](ExSystolic.Clock.md): The clock drives systolic array execution tick by tick.
  - [ExSystolic.Grid](ExSystolic.Grid.md): A rectangular coordinate grid that provides neighbour lookups.
  - [ExSystolic.Link](ExSystolic.Link.md): A directed communication channel between two processing-element ports.
  - [ExSystolic.PE](ExSystolic.PE.md): Behaviour that every processing element must implement.
  - [ExSystolic.Trace](ExSystolic.Trace.md): Execution trace recording for systolic array runs.

- Space
  - [ExSystolic.Space](ExSystolic.Space.md): Behaviour defining the spatial model of a systolic array.
  - [ExSystolic.Space.Grid2D](ExSystolic.Space.Grid2D.md): A 2D rectangular grid implementation of the Space behaviour.

- Processing Elements
  - [ExSystolic.PE.MAC](ExSystolic.PE.MAC.md): Multiply-Accumulate processing element -- the classic systolic PE.

- Backends
  - [ExSystolic.Backend](ExSystolic.Backend.md): Behaviour for systolic array execution backends.
  - [ExSystolic.Backend.Interpreted](ExSystolic.Backend.Interpreted.md): The interpreted (single-BEAM-process) backend for systolic execution.
  - [ExSystolic.Backend.LinkOps](ExSystolic.Backend.LinkOps.md): Shared link-buffer operations used by all backends.
  - [ExSystolic.Backend.Partitioned](ExSystolic.Backend.Partitioned.md): A tile-based parallel execution backend.
  - [ExSystolic.Backend.PoolexWorker](ExSystolic.Backend.PoolexWorker.md): A stateless GenServer worker for the Poolex worker pool.

- Tiles
  - [ExSystolic.Tile](ExSystolic.Tile.md): A rectangular partition of a systolic array.
  - [ExSystolic.TilePartitioner](ExSystolic.TilePartitioner.md): Partitions a systolic array into rectangular tiles.

- Examples
  - [ExSystolic.Examples.GEMM](ExSystolic.Examples.GEMM.md): General Matrix Multiply (GEMM) using a systolic wavefront.

