Skip to content

[RFC][Tracking Issue] TensorIR Scheduling #7527

@tqchen

Description

@tqchen

This is a global tracking issue for landing the initial PRs of TensorIR scheduling. The original RFC can be found here. Please feel free to bring in more questions to the corresponding thread.

To make the improvement manageable, we will be breaking the code into several steps. The main architecture scaffolding and
data structure changes will come first, then we will upstream individual scheduling primitives in a incremental way, where each component are self-contained.

Key Data Structures

The following key data structures will be introduced to handle the support of TensorIR.
Logically the data structures belongs to the following layers:

  • D0: Block and BlockRealize: these are nodes to enable the block declarations in the stmt
  • D1: ScheduleState: an auxiliary data structure to encode additional dependency information used for schedule transformations
    • Most schedule primitives can be viewed as a ScheduleState => ScheduleState transformations
    • We will also introduce SRef, a reference pointer to the AST (to refer to loop and blocks) to facilitate transformations
  • D2: Schedule: interface for running schedule transformations, like the current te.schedule

These data structures will form the initial scafolds. The transformation primitives will then become like passes, that only depends on D0 and D1. The each primitive will be exposed to an user facing API via D2.

Steps

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:rfc-trackingRFC progress tracking. Ref: https://github.com/apache/tvm-rfcs

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions