Skip to content

Avoid computing schedule length bounds in first pass #174

Description

@jrbyrnes

In #151 we removed the methods to calculate schedule length bounds during each step in enumeration in the RP pass. However, there are still artifacts of Schedule Length based calculations elsewhere in the code for the RP pass.

For example, DataDepGraph::SetupForSchdulng maintains frwrdLwrBounds_ and bkwrdLwrBounds_ which are used exclusively for schedule length bounds calculation. Additionally, it calls CmputAbslutUprBound_ and CmputBasicLwrBounds_ which calculate schedule length bounds -- in the RP pass this is useless work as all schedules will have a length that is the number of instructions. Moreover, in this method we call SchedInstruction->SetupForSchdulng which again does some unnecessary stuff for the first pass.

Aside from SetupForSchdulng, there are similar problems in DataDepGraph::UpdateSetupForSchdulng and SchedRegion::CmputLwrBounds_ (none of the relaxed scheduling stuff is needed in the RP pass). None of this code is very hot (although UpdateSetupForSchdulng gets called several times during graph trans), but these functions are relatively expensive for not-hot code. By bypassing some of these things in the RP pass, we will likely improve overall compile time for a benchmark suite by a noticeable (albeit likely not huge) amount.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions