Repository navigation
Integrate Counter and General lowering into Synapse - #9
Conversation
The "Template kernel" is mapped or provided with the spatial-only mapping. We don't need to emphasize this in the paper though, as it is orthogonal, i mean spatial-temporal is also theoretically possible. Am I right?
The right side of your diagram is about PUPA, right? Didn't we talk about graph-rewrite? e.g., CONV -> im2col + matmul? or some graph-rewrite you mentioned for the GPU work? That can improve the novelty/contributions of PUPA. Otherwise, only pattern matching in PUPA is not compelling enough. Moreover, we mentioned on-the-fly (or offline) generate kernel using agent before/during pattern matching (just as a use case to demo PUPA's potential).
Is PUPA a standalone repo? |
For now, we restrict template kernels to spatial-only mapping. Using templates with spatio-temporal mapping needs further discussion.
We have a local fixed-point rewrite framework under development. I’ll include a CONV rewrite case, such as
PUPA is implemented within Synapse using the Amoeba/Neura backends. There is no standalone PUPA repo. |
Replaces the subprocess backend with an in-process MLIR pass pipeline. Synapse applies patterns before and after Linalg-to-Affine conversion, lowers remaining computations through Counter or General dataflow, and maps each kernel while preserving memref dependencies between tasks.
For example, one task graph can combine all three lowering paths:
GEMM replacement removes the consumed zero initialization. All placed TileArray programs carry template metadata for automatic mapping strategy selection. The redundant public
replace()wrapper is removed.For now, the overall lowering process is as follows: