Skip to content

Avoid computing schedule length bounds in first pass #174

@jrbyrnes

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.

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