Class DefaultScheduleGroupPass

  • All Implemented Interfaces:
    Function<IRDAG,​IRDAG>

    public final class DefaultScheduleGroupPass
    extends AnnotatingPass
    A pass for assigning each stages in schedule groups.

    TODO #347: IRDAG#partitionAcyclically This code can be greatly simplified...

    Rules

    • Vertices connected with push edges must be assigned same ScheduleGroup.
    • For pull edges,
      • if the destination of the edge depends on multiple ScheduleGroups, split ScheduleGroup by the edge.
      • if the edge is broadcast type and allowBroadcastWithinScheduleGroup is false, split ScheduleGroup by the edge.
      • if the edge is shuffle type and allowShuffleWithinScheduleGroup is false, split ScheduleGroup by the edge.
      • if the destination of the edge has multiple inEdges, split ScheduleGroup by the edge.
      • Otherwise, the source and the destination of the edge should be assigned same ScheduleGroup.
    • Constructor Detail

      • DefaultScheduleGroupPass

        public DefaultScheduleGroupPass()
        Default constructor.
      • DefaultScheduleGroupPass

        public DefaultScheduleGroupPass​(boolean allowBroadcastWithinScheduleGroup,
                                        boolean allowShuffleWithinScheduleGroup,
                                        boolean allowMultipleInEdgesWithinScheduleGroup)
        Constructor.
        Parameters:
        allowBroadcastWithinScheduleGroup - whether to allow Broadcast edges within a ScheduleGroup or not
        allowShuffleWithinScheduleGroup - whether to allow Shuffle edges within a ScheduleGroup or not
        allowMultipleInEdgesWithinScheduleGroup - whether to allow vertices with multiple dependencies or not