/** * 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())); }