Exemple #1
0
  /**
   * Create schedules for init, prime-pump and steady phases.
   *
   * @return a Scheduler from which the schedules for the phases may be extracted.
   */
  public static void scheduleSlices(SpaceTimeScheduleAndSlicer schedule) {
    Slicer slicer = schedule.getSlicer();

    // set init schedule in standard order
    schedule.setInitSchedule(DataFlowOrder.getTraversal(slicer.getSliceGraph()));

    // set the prime pump to be empty
    new GeneratePrimePump(schedule).setEmptySchedule();

    // for space multiplexing on SMP we need to use a different primepump scheduler because
    // we are space multiplexing and we need to prime the pipe more so that everything can fire
    // when ready
    if (at.dms.kjc.smp.SMPBackend.scheduler.isSMD())
      new at.dms.kjc.smp.GeneratePrimePumpScheduleSMD(schedule).schedule(slicer.getSliceGraph());
    else new GeneratePrimePump(schedule).schedule(slicer.getSliceGraph());

    // Still need to generate the steady state schedule!
    schedule.setSchedule(DataFlowOrder.getTraversal(slicer.getTopSlices()));
  }