Skip to content

TileFoundry in two steps

TileFoundry is source to source: the reference is source code, the fast implementation is source code, and either can be pointed at any command. check says whether two of them agree; analyze says what one costs.

  step one — describe it, until it agrees

        ┌────────── fix the HIR ◄────────── not yet ───────────┐
        ▼                                                      │
   authored HIR ─────► check ─────► agrees? ───────────────────┘
   the reference                       │
        ▲                             yes
        │                              ▼
   published model            the reference is finished

  step two — choose the schedule, implement, and measure

        ┌────── change the HIR ◄────── not yet ───────────────────┐
        ▼                                                         │
   authored HIR ─────► analyze ─────► predicted performance ok? ──┘
                                              │
                                             yes
                                              ▼
       candidates + facts ─────► tf.schedule ─────► finalize ─────► TIR

        ┌────── revise the schedule ◄────── not yet ──────────────────┐
        ▼                                                             │
       TIR ─────► implement a backend ───► check ─────► agrees? ──────┘
                                                 yes │
                                                     ▼
                                                  measure
                                                     │
                                       measured performance ok?
                                             ┌───────┴───────┐
                          no: return to step two             └──► ship