Beispiel #1
0
def runSim_Simple():

    seed = 99108

    print "SEED === " + str(seed)

    # fixed params
    SimParams.SLACK_FEEDBACK_ENABLED = False

    SimParams.NOC_W = 3
    SimParams.NOC_H = 3
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)

    dvb_resolutions = [(320, 240), (320, 240), (320, 240), (320, 240),
                       (320, 240)]

    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.DVB_RESOLUTIONS = dvb_resolutions
    SimParams.NUM_WORKFLOWS = 5
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.DVB_RESOLUTIONS_FIXED = dvb_resolutions
    SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False

    SimParams.AC_TEST_OPTION = AdmissionControllerOptions.AC_OPTION_NONE
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST
    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED

    random.seed(seed)
    np.random.seed(seed)
    print "----------------------------------------------------------------------------------------------------------------------------"
    print "Running runSim_Simple_OpenLoop : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
            ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
            ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
            ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME)
    print "----------------------------------------------------------------------------------------------------------------------------"

    env, last_scheduled_task_time = MMMSim.runMainSimulation()
    env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
    print env.now

    FNAME_PREFIX = "OL_" + str(SimParams.NOC_H) + "_" + str(
        SimParams.NOC_W) + "_"

    # name the report filenames
    tm_fname = EXP_DATADIR + FNAME_PREFIX + "test__timeline.png"
    vs_bs_fname = EXP_DATADIR + FNAME_PREFIX + "test__vsbs.js"
    util_fname = EXP_DATADIR + FNAME_PREFIX + "test__util.js"
    wf_res_fname = EXP_DATADIR + FNAME_PREFIX + "test__wfressumm.js"
    gops_opbuff_fname = EXP_DATADIR + FNAME_PREFIX + "test__gopsopbuffsumm.js"

    rmtbl_dt_fname = EXP_DATADIR + FNAME_PREFIX + "test__rmtbldt.js"
    ibuff_fname = EXP_DATADIR + FNAME_PREFIX + "test__ibuff.js"
    obuff_fname = EXP_DATADIR + FNAME_PREFIX + "test__obuff.js"
    nodetqs_fname = EXP_DATADIR + FNAME_PREFIX + "test__nodetqs.js"
    rmtaskrelease_fname = EXP_DATADIR + FNAME_PREFIX + "test__rmtaskrel.js"
    mappingandpriass_fname = EXP_DATADIR + FNAME_PREFIX + "test__mappingandpriass.js"
    flowscompleted_fname = EXP_DATADIR + FNAME_PREFIX + "test__flwcompleted.js"
    nodetaskexectime_fname = EXP_DATADIR + FNAME_PREFIX + "test__nodetaskexectime.js"

    (wf_results_summary, gops_in_outputbuff_summary
     ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
         timeline_fname=tm_fname,
         wf_res_summary_fname=wf_res_fname,
         gops_opbuff_summary_fname=gops_opbuff_fname,
         rmtbl_dt_summary_fname=rmtbl_dt_fname,
         output_format="json")

    MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary,
                                                vs_bs_fname)
    MMMSim.SimMon.report_InstUtilisation(dump_to_file=util_fname)
    MMMSim.SimMon.report_InputBuffer(dump_to_file=ibuff_fname)
    MMMSim.SimMon.report_NodeTQs(dump_to_file=nodetqs_fname)
    MMMSim.SimMon.report_OutputBufferContents(dump_to_file=obuff_fname)
    MMMSim.SimMon.report_FlowsCompleted(dump_to_file=flowscompleted_fname)
    MMMSim.SimMon.report_NodeTaskExecTimeline(
        dump_to_file=nodetaskexectime_fname)
Beispiel #2
0
def runSim_Simple():

    seed = 99108

    print "SEED === " + str(seed)

    # fixed params
    SimParams.NOC_W = 4
    SimParams.NOC_H = 4
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES * 2
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.PSALGO_ENABLED = True
    SimParams.PSALGO_VIEWER_ENABLED = False
    SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = True
    SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_RANDOM_QUEEN
    SimParams.CPUNODE_MONITOR_TASKSET_SLACK = True
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP

    SimParams.TASK_MODEL = TaskModel.TASK_MODEL_MHEG2_FRAME_ET_LEVEL
    SimParams.TASKSET_MODEL = TaskModel.TASK_MODEL_MHEG2_FRAME_ET_LEVEL

    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION

    random.seed(seed)
    np.random.seed(seed)
    print "----------------------------------------------------------------------------------------------------------------------------"
    print "Running runSim_Simple : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
            ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
            ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME)
    print "----------------------------------------------------------------------------------------------------------------------------"

    env, last_scheduled_task_time = MMMSim.runMainSimulation()
    env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
    print env.now

    # name the report filenames
    tm_fname = "test__timeline.png"
    vs_bs_fname = "test__vsbs.js"
    util_fname = "test__util.js"
    wf_res_fname = "test__wfressumm.js"
    gops_opbuff_fname = "test__gopsopbuffsumm.js"

    rmtbl_dt_fname = "test__rmtbldt.js"
    ibuff_fname = "test__ibuff.js"
    obuff_fname = "test__obuff.js"
    nodetqs_fname = "test__nodetqs.js"
    rmtaskrelease_fname = "test__rmtaskrel.js"
    mappingandpriass_fname = "test__mappingandpriass.js"
    flowscompleted_fname = "test__flwcompleted.js"
    nodetaskexectime_fname = "test__nodetaskexectime.js"
    psalgo_nodeprops = "test__psalgonodeprops.js"
    flowsadded_fname = "test__flwsadded.js"
    trminfo_fname = "test__taskremappinginfo.js"
    nodecumslack_fname = "test__nodecumslack.js"

    (wf_results_summary, gops_in_outputbuff_summary
     ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
         timeline_fname=tm_fname,
         wf_res_summary_fname=wf_res_fname,
         gops_opbuff_summary_fname=gops_opbuff_fname,
         rmtbl_dt_summary_fname=rmtbl_dt_fname,
         output_format="json")

    MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary,
                                                vs_bs_fname)
    MMMSim.SimMon.report_InstUtilisation(dump_to_file=util_fname)
    MMMSim.SimMon.report_InputBuffer(dump_to_file=ibuff_fname)
    MMMSim.SimMon.report_NodeTQs(dump_to_file=nodetqs_fname)
    MMMSim.SimMon.report_OutputBufferContents(dump_to_file=obuff_fname)
    MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=rmtaskrelease_fname)
    MMMSim.SimMon.report_MappingAndPriAssInfo(
        dump_to_file=mappingandpriass_fname)
    MMMSim.SimMon.report_FlowsCompleted(dump_to_file=flowscompleted_fname)
    MMMSim.SimMon.report_NodeTaskExecTimeline(
        dump_to_file=nodetaskexectime_fname)
    MMMSim.SimMon.report_PSAlgoNodePSProps(dump_to_file=psalgo_nodeprops)
    MMMSim.SimMon.report_FlowsAdded(dump_to_file=flowsadded_fname)
    MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=trminfo_fname)
    MMMSim.SimMon.report_NodeCumSlack(dump_to_file=nodecumslack_fname)
Beispiel #3
0
def runSim_AC_MP_Type(forced_seed=None,
                      fname_prefix=None,
                      ac_type=None,
                      mp_type=None,
                      pr_type=None,
                      num_wfs=None,
                      res_list=None,
                      cmbmppri_type=None):

    seed = forced_seed

    print "SEED === " + str(seed)
    random.seed(seed)
    np.random.seed(seed)
    np.random.shuffle(res_list)  # shuffle in place
    print "here -1"
    print res_list

    # fixed params
    SimParams.NOC_W = 3
    SimParams.NOC_H = 3
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.NUM_WORKFLOWS = num_wfs
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.DVB_RESOLUTIONS_FIXED = res_list
    SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False
    SimParams.WCRT_FLOW_CALC_MAX_RECURSION_DEPTH = 3
    SimParams.WCRT_FLOW_USE_TIMEOUT = False
    SimParams.WCRT_FLOW_USE_LIMITED_RECURSION_DEPTH = True

    SimParams.AC_TEST_OPTION = ac_type
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = mp_type
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = pr_type
    SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type

    subdir = "seed_" + str(seed) + "/"
    subdir = subdir + "ac" + str(ac_type) + "mp" + str(mp_type) + "pr" + str(
        pr_type) + "cmb" + str(cmbmppri_type) + "/"
    FNAME_PREFIX = fname_prefix + str(SimParams.NOC_H) + "_" + str(
        SimParams.NOC_W) + "_"
    check_fname = _get_fname(EXP_DATADIR + subdir,
                             FNAME_PREFIX)['utilvsschedresultsshort_fname']

    print "Checking file exists : " + str(check_fname)

    if (_check_file_exists(check_fname) == True):
        print "Simulation already exists.."
    else:
        print res_list
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim-"+ fname_prefix  +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \
                ", seed="+str(forced_seed)
        print "----------------------------------------------------------------------------------------------------------------------------"

        #subdir = ""

        env, last_scheduled_task_time = MMMSim.runMainSimulation(
            initial_rand_seed=seed)
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        FNAME_PREFIX = fname_prefix + str(SimParams.NOC_H) + "_" + str(
            SimParams.NOC_W) + "_"

        _makeDir(EXP_DATADIR + subdir)

        # get filenames
        filenames = _get_fname(EXP_DATADIR + subdir, FNAME_PREFIX)
        # name the report filenames
        _dump_captured_data(filenames)
def runSim_CCPRemappingBasic(run_rm_off=True,
                             run_rm_on=True,
                             seed=1234,
                             multiseeds=False):

    print "SEED === " + str(seed)

    ###############
    # fixed params
    ###############
    SimParams.NOC_W = 4
    SimParams.NOC_H = 4
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP

    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST

    if (multiseeds == True):
        DATA_FOLDER = "experiment_data/remapping_ccpbased/" + "seed_" + str(
            seed) + "/"
    else:
        DATA_FOLDER = "experiment_data/remapping_ccpbased/"

    if (run_rm_off == True):
        ################################
        # PS-based Remapping disabled
        ################################
        SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
        SimParams.CCP_ENABLE = False
        SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = False
        SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_NONE
        FNAME_PREFIX = DATA_FOLDER + "RMOFF_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_CCPRemappingBasic : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Remapping_disabled"
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (
            wf_results_summary, gops_in_outputbuff_summary
        ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
            timeline_fname=FNAME_PREFIX + tm_fname,
            wf_res_summary_fname=FNAME_PREFIX + wf_res_fname,
            gops_opbuff_summary_fname=FNAME_PREFIX + gops_opbuff_fname,
            rmtbl_dt_summary_fname=FNAME_PREFIX + rmtbl_dt_fname,
            #gops_opbuff_summary_short_fname = FNAME_PREFIX+gops_opbuff_short_fname,
            output_format="json")

        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX +
                                                  obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX +
                                            flowscompleted_fname)
        #MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX+nodetaskexectime_fname)

        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX +
                                               trminfo_fname)
        #MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX+nodecumslack_fname)
        #MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX+node_importedtasks)

    if (run_rm_on == True):
        ################################
        # PS-based Remapping enabled
        ################################
        SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
        SimParams.CCP_ENABLE = True
        SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = True
        SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_CCP_REMAPPING
        SimParams.CPUNODE_MONITOR_TASKSET_SLACK = True

        # ------------------ params : MMC-disabled -------------------
        #SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL              = 7.2
        #SimParams.CCP_CLUSTER_SIZE = [2,5]
        #SimParams.CCP_LOAN_TASK_AMOUNT = 5
        # ------------------------------------------------------------

        # ------------------ temp -------------------
        SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL = 7.2
        SimParams.CCP_CLUSTER_SIZE = [2, 5]
        SimParams.CCP_SLAVE_MSG_FLOWPAYLOADSIZE = 32
        SimParams.CCP_BASIC_MSG_FLOWPAYLOADSIZE = 32
        SimParams.CCP_LOAN_TASK_AMOUNT = 7
        # ------------------------------------------------------------

        FNAME_PREFIX = DATA_FOLDER + "RMON_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_CCPRemappingBasic : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Remapping_enabled"
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (
            wf_results_summary, gops_in_outputbuff_summary
        ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
            timeline_fname=FNAME_PREFIX + tm_fname,
            wf_res_summary_fname=FNAME_PREFIX + wf_res_fname,
            gops_opbuff_summary_fname=FNAME_PREFIX + gops_opbuff_fname,
            rmtbl_dt_summary_fname=FNAME_PREFIX + rmtbl_dt_fname,
            #gops_opbuff_summary_short_fname = FNAME_PREFIX+gops_opbuff_short_fname,
            output_format="json")

        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX +
                                                  obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX +
                                            flowscompleted_fname)
        MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX +
                                                  nodetaskexectime_fname)
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX +
                                               trminfo_fname)
        MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX +
                                          nodecumslack_fname)
        MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX +
                                               node_importedtasks)
Beispiel #5
0
def runSim_RemappingBasic(run_rm_off=True,
                          run_rm_on=True,
                          seed=1234,
                          multiseeds=False,
                          noc_w=10,
                          noc_h=10):

    print "---SEED === " + str(seed)

    ###############
    # fixed params
    ###############
    SimParams.NOC_W = noc_w
    SimParams.NOC_H = noc_h
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    #SimParams.NUM_WORKFLOWS = 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.TASK_MODEL = TaskModel.TASK_MODEL_MHEG2_FRAME_ET_LEVEL
    SimParams.TASKSET_MODEL = TaskModel.TASK_MODEL_MHEG2_FRAME_ET_LEVEL

    #    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler()
    #    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.CLOSEDLOOP_WITH_IBUFFERING
    #    SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.CLOSEDLOOP_WITH_IBUFFERING
    #    SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.CLOSEDLOOP_WITH_IBUFFERING
    #    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.CLOSEDLOOP_WITH_IBUFFERING

    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST

    noc_size_dir = "noc_" + str(noc_w) + "x" + str(noc_h) + "/"

    if (multiseeds == True):
        DATA_FOLDER = "experiment_data/remapping_psbased/" + "seed_" + str(
            seed) + "/"
    else:
        #DATA_FOLDER = "experiment_data/remapping_psbased/"
        DATA_FOLDER = "experiment_data/remapping_nocsize/remapping_psbased/" + noc_size_dir

    # name the report filenames
    tm_fname = "test__timeline.png"
    vs_bs_fname = "test__vsbs.js"
    util_fname = "test__util.js"
    wf_res_fname = "test__wfressumm.js"
    gops_opbuff_fname = "test__gopsopbuffsumm.js"

    rmtbl_dt_fname = "test__rmtbldt.js"
    ibuff_fname = "test__ibuff.js"
    obuff_fname = "test__obuff.js"
    nodetqs_fname = "test__nodetqs.js"
    rmtaskrelease_fname = "test__rmtaskrel.js"
    mappingandpriass_fname = "test__mappingandpriass.js"
    flowscompleted_fname = "test__flwcompleted.js"
    nodetaskexectime_fname = "test__nodetaskexectime.js"
    psalgo_nodeprops = "test__psalgonodeprops.js"
    flowsadded_fname = "test__flwsadded.js"
    trminfo_fname = "test__taskremappinginfo.js"
    nodecumslack_fname = "test__nodecumslack.js"
    node_importedtasks = "test__nodeimportedtasks.js"
    rmdebuginfo_1 = "test__remappingdebuginfo_1.js"

    if (run_rm_off == True):
        ################################
        # PS-based Remapping disabled
        ################################
        SimParams.PSALGO_ENABLED = False
        SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = False
        SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_NONE
        SimParams.CPUNODE_MONITOR_TASKSET_SLACK = False
        SimParams.PSALGO_VIEWER_ENABLED = False
        SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
        FNAME_PREFIX = DATA_FOLDER + "RMOFF_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RemappingBasic : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Remapping_disabled"
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (wf_results_summary, gops_in_outputbuff_summary
         ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
             timeline_fname=FNAME_PREFIX + tm_fname,
             wf_res_summary_fname=FNAME_PREFIX + wf_res_fname,
             gops_opbuff_summary_fname=FNAME_PREFIX + gops_opbuff_fname,
             rmtbl_dt_summary_fname=FNAME_PREFIX + rmtbl_dt_fname,
             output_format="json")

        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX +
                                                  obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX +
                                            flowscompleted_fname)
        #MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX+nodetaskexectime_fname)
        MMMSim.SimMon.report_PSAlgoNodePSProps(dump_to_file=FNAME_PREFIX +
                                               psalgo_nodeprops)
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX +
                                               trminfo_fname)
        MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX +
                                          nodecumslack_fname)
        MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX +
                                               node_importedtasks)

    if (run_rm_on == True):
        ################################
        # PS-based Remapping enabled
        ################################
        SimParams.PSALGO_ENABLED = True
        SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = True
        SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_LOWESTBLOCKING_QUEEN_VIA_SYSSLACK
        SimParams.CPUNODE_MONITOR_TASKSET_SLACK = True
        SimParams.PSALGO_VIEWER_ENABLED = True
        SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
        SimParams.PSALGO_PSFLOWPAYLOADSIZE = 16

        # --------------------------------------------------------------------------------
        ## FOR MMC - enabled ##
        # params taken from mc-test : perm_0.22_0.0629_20.0_0.3_0.3_4.6_
        # perm_0.12_0.18_0.2_0.15_
        #SimParams.PSALGO_TQN = 0.22
        #SimParams.PSALGO_TDECAY = 0.0629
        #SimParams.PSALGO_THRESHOLDQN = 20.0
        #SimParams.PSALGO_THRESHOLDHOPCOUNT = 2
        #SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL = 4.6
        #SimParams.PSALGO_HQN = 14
        #SimParams.PSALGO_DYNAMIC_THRESHOLDQN_RATIO = [0.12, 0.18]
        #SimParams.PSALGO_KHOPDECAY = 0.2
        #SimParams.PSALGO_KTIMEDECAY = 0.15
        # --------------------------------------------------------------------------------

        # --------------------------------------------------------------------------------
        ## FOR MMC - disabled ##
        ## "param": "perm_0.1_0.025_3_6.9_5_0.203_0.3_0.15_0.05_"
        #SimParams.PSALGO_TQN = 0.1
        #SimParams.PSALGO_TDECAY = 0.025
        #SimParams.PSALGO_THRESHOLDQN = 9.0
        #SimParams.PSALGO_THRESHOLDHOPCOUNT = 3
        #SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL = 6.9
        #SimParams.PSALGO_HQN = 5
        #SimParams.PSALGO_DYNAMIC_THRESHOLDQN_RATIO = [0.203, 0.3]
        #SimParams.PSALGO_KHOPDECAY = 0.15
        #SimParams.PSALGO_KTIMEDECAY = 0.05
        # --------------------------------------------------------------------------------

        # --------------------------------------------------------------------------------
        ## FOR MMC - disabled ##
        ## perm_0.22_0.055_3_6.9_18_0.107_0.01_0.15_0.3_
        #SimParams.PSALGO_TQN = 0.22
        #SimParams.PSALGO_TDECAY = 0.055
        SimParams.PSALGO_TQN = 0.05
        SimParams.PSALGO_TDECAY = 0.025
        SimParams.PSALGO_THRESHOLDQN = 20.0
        SimParams.PSALGO_THRESHOLDHOPCOUNT = 3
        SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL = 6.9
        SimParams.PSALGO_HQN = 18
        SimParams.PSALGO_DYNAMIC_THRESHOLDQN_RATIO = [0.107, 0.01]
        SimParams.PSALGO_KHOPDECAY = 0.15
        SimParams.PSALGO_KTIMEDECAY = 0.3
        # --------------------------------------------------------------------------------

        FNAME_PREFIX = DATA_FOLDER + "RMON_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RemappingBasic : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Remapping_enabled"
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (wf_results_summary, gops_in_outputbuff_summary
         ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
             timeline_fname=FNAME_PREFIX + tm_fname,
             wf_res_summary_fname=FNAME_PREFIX + wf_res_fname,
             gops_opbuff_summary_fname=FNAME_PREFIX + gops_opbuff_fname,
             rmtbl_dt_summary_fname=FNAME_PREFIX + rmtbl_dt_fname,
             output_format="json")

        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX +
                                                  obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX +
                                            flowscompleted_fname)
        MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX +
                                                  nodetaskexectime_fname)
        MMMSim.SimMon.report_PSAlgoNodePSProps(dump_to_file=FNAME_PREFIX +
                                               psalgo_nodeprops)
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX +
                                               trminfo_fname)
        MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX +
                                          nodecumslack_fname)
        MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX +
                                               node_importedtasks)
        MMMSim.SimMon.report_PSRemappDebugInfo_1(dump_to_file=FNAME_PREFIX +
                                                 rmdebuginfo_1)
def runSim_varNoCScale_varCCR(forced_seed=None,
                              fname_prefix=None,
                              ac_type=None,
                              mp_type=None,
                              pr_type=None,
                              cmbmppri_type=None,
                              use_ccr_file_input=True):

    seed = forced_seed
    print "SEED === " + str(seed)

    random.seed(seed)
    np.random.seed(seed)

    # shuffle the res list
    fixed_res_list = [(230, 180), (528, 576), (240, 180), (240, 180),
                      (576, 720), (320, 240), (320, 240)]
    np.random.shuffle(fixed_res_list)

    # fixed params
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.AC_TEST_OPTION = ac_type
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = mp_type
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = pr_type
    SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type
    SimParams.WCRT_FLOW_CALC_TIMEOUT = 2.0 * 60.0
    SimParams.WCRT_FLOW_CALC_MAX_RECURSION_DEPTH = 3
    SimParams.WCRT_FLOW_USE_TIMEOUT = True
    SimParams.WCRT_FLOW_USE_LIMITED_RECURSION_DEPTH = False

    # now we perform a range of tests for varying CCR
    if (use_ccr_file_input == True):  # get the ccr values from file ?
        fname = 'util_scripts/ccr_list_allwfs_output_0.001_2.0_s' + str(
            forced_seed) + '.js'
        json_data = open(fname)
        file_data = json.load(json_data)
        seed_specific_data = file_data[str(forced_seed)]

        #sorted_ccr_entries = sorted(ccr_data, key=lambda k: k['ccr'])
    else:
        sys.exit("Error- not implemented yet!")

    offset = 0
    for each_wf_k, each_wf_v in seed_specific_data.iteritems():
        noc_h = int(np.sqrt(int(each_wf_k) - offset))
        wf_nums = int(each_wf_k)

        SimParams.NOC_W = noc_h
        SimParams.NOC_H = noc_h
        SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
        SimParams.NUM_WORKFLOWS = wf_nums
        SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
        SimParams.DVB_RESOLUTIONS_FIXED = each_wf_v["res_list"]
        SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False

        if (len(SimParams.DVB_RESOLUTIONS_FIXED) != SimParams.NUM_WORKFLOWS):
            pprint.pprint(SimParams.DVB_RESOLUTIONS_FIXED)
            pprint.pprint(SimParams.NUM_WORKFLOWS)
            sys.exit("Error ! wfs did not match res_list")

        sorted_ccr_entries = each_wf_v["ccr_list"].values()

        # perform one simulation run per ccrn entry
        for each_ccr_entry in sorted_ccr_entries:

            SimParams.NOC_PERIOD = float(each_ccr_entry['noc_period'])
            SimParams.CPU_EXEC_SPEED_RATIO = float(
                each_ccr_entry['cpu_exec_speed_ratio'])

            subdir = "seed_" + str(seed) + "/" + "noc_h" + str(noc_h) + "/"
            subdir = subdir + "ccr_" + str(round(each_ccr_entry['ccr'],
                                                 4)) + "/"
            FNAME_PREFIX = fname_prefix + str(SimParams.NOC_H) + "_" + str(
                SimParams.NOC_W) + "_"
            check_fname = _get_fname(EXP_DATADIR + subdir,
                                     FNAME_PREFIX)['utilvsschedresults_fname']

            print "Checking file exists : " + str(check_fname)

            if (_check_file_exists(check_fname) == True):
                print "Simulation already exists.."
            else:

                random.seed(seed)
                np.random.seed(seed)
                print "----------------------------------------------------------------------------------------------------------------------------"
                print subdir
                print "Running runSim-"+ fname_prefix  +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                        ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                        ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                        ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                        ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \
                        ", seed="+str(forced_seed)
                print "----------------------------------------------------------------------------------------------------------------------------"

                #subdir = ""

                env, last_scheduled_task_time = MMMSim.runMainSimulation()
                env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
                print env.now

                FNAME_PREFIX = fname_prefix + str(SimParams.NOC_H) + "_" + str(
                    SimParams.NOC_W) + "_"

                _makeDir(EXP_DATADIR + subdir)

                # get filenames
                filenames = _get_fname(EXP_DATADIR + subdir, FNAME_PREFIX)
                # name the report filenames
                _dump_captured_data(filenames)
Beispiel #7
0
def runSim_CCR_Range(forced_seed=None,
                     fname_prefix=None,
                     ac_type=None,
                     mp_type=None,
                     pr_type=None,
                     cmbmppri_type=None,
                     use_ccr_file_input=True):

    seed = forced_seed
    print "SEED === " + str(seed)

    random.seed(seed)
    np.random.seed(seed)

    # shuffle the res list
    fixed_res_list = [(230, 180), (528, 576), (240, 180), (240, 180),
                      (576, 720), (320, 240), (320, 240)]
    np.random.shuffle(fixed_res_list)
    # fixed params

    SimParams.NOC_W = 3
    SimParams.NOC_H = 3
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.NUM_WORKFLOWS = 1
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.DVB_RESOLUTIONS_FIXED = fixed_res_list
    SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False

    SimParams.AC_TEST_OPTION = ac_type
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = mp_type
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = pr_type
    SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type

    # now we perform a range of tests for varying CCR
    if (use_ccr_file_input == True):  # get the ccr values from file ?
        fname = 'util_scripts/ccr_list_output.js'
        json_data = open(fname)
        ccr_data = json.load(json_data)
        sorted_ccr_entries = sorted(ccr_data, key=lambda k: k['ccr'])
    else:
        ccs_range = [0.0675, 0.0685]
        ccr_range = [round(x, 2) for x in np.arange(0.05, 3.05, 0.05)]
        ccr_entries = get_properties_fixed_ccs_fixed_ccr_range(
            ccs_range, ccr_range, enable_print=False)
        sorted_ccr_entries = sorted(ccr_entries, key=lambda k: k['ccr'])

    # perform one simulation run per ccrn entry
    for each_ccr_entry in sorted_ccr_entries:

        SimParams.NOC_PERIOD = float(each_ccr_entry['noc_period'])
        SimParams.CPU_EXEC_SPEED_RATIO = float(
            each_ccr_entry['cpu_exec_speed_ratio'])

        subdir = "seed_" + str(seed) + "/"
        subdir = subdir + "ccr_" + str(round(each_ccr_entry['ccr'], 4)) + "/"
        FNAME_PREFIX = fname_prefix + str(SimParams.NOC_H) + "_" + str(
            SimParams.NOC_W) + "_"
        check_fname = _get_fname(EXP_DATADIR + subdir,
                                 FNAME_PREFIX)['utilvsschedresults_fname']

        print "Checking file exists : " + str(check_fname)

        if (_check_file_exists(check_fname) == True):
            print "Simulation already exists.."
        else:

            random.seed(seed)
            np.random.seed(seed)
            print "----------------------------------------------------------------------------------------------------------------------------"
            print subdir
            print "Running runSim-"+ fname_prefix  +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                    ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                    ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                    ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                    ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \
                    ", seed="+str(forced_seed)
            print "----------------------------------------------------------------------------------------------------------------------------"

            #subdir = ""

            env, last_scheduled_task_time = MMMSim.runMainSimulation()
            env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
            print env.now

            FNAME_PREFIX = fname_prefix + str(SimParams.NOC_H) + "_" + str(
                SimParams.NOC_W) + "_"

            _makeDir(EXP_DATADIR + subdir)

            # get filenames
            filenames = _get_fname(EXP_DATADIR + subdir, FNAME_PREFIX)
            # name the report filenames
            _dump_captured_data(filenames)
Beispiel #8
0
def runSim_RemappingMCParamsTest_RMOFF(seed=77379):

    # fixed params
    SimParams.NOC_W = NOC_W
    SimParams.NOC_H = NOC_W
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST

    DATA_FOLDER = "experiment_data/remapping_ccpbased_montecarlo/" + "seed_" + str(
        seed) + "/"

    SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = False
    SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_NONE
    SimParams.CPUNODE_MONITOR_TASKSET_SLACK = False
    SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
    SimParams.CCP_ENABLE = False

    FNAME_PREFIX = DATA_FOLDER + "RMOFF_"
    fname_param_prefix = FNAME_PREFIX

    # check if the simulation has run already before continuing, by checking if
    # one of the output file exists
    check_fname = fname_param_prefix + obuff_short_fname
    print "Checking file exists : " + str(check_fname)
    if (_check_file_exists(check_fname) == True):
        print "Simulation already exists ! "
    else:
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RemappingMCParamsTest_RMOFF : num_wf=" + str(
            SimParams.NUM_WORKFLOWS)
        print fname_param_prefix
        print "SEED === " + str(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (wf_results_summary, gops_in_outputbuff_summary
         ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
             timeline_fname=fname_param_prefix + tm_fname,
             wf_res_summary_fname=fname_param_prefix + wf_res_fname,
             gops_opbuff_summary_fname=fname_param_prefix + gops_opbuff_fname,
             rmtbl_dt_summary_fname=fname_param_prefix + rmtbl_dt_fname,
             gops_opbuff_summary_short_fname=fname_param_prefix +
             gops_opbuff_short_fname,
             output_format="json")

        MMMSim.SimMon.report_OutputBufferContents_short(
            dump_to_file=fname_param_prefix + obuff_short_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(
            dump_to_file=fname_param_prefix + trminfo_fname)
def runSim_CentralFullyDynamicMapping(run_rm_off=True, run_rm_on=True, seed=1234, multiseeds=False, noc_w=10, noc_h=10):
       
    print "SEED === " + str(seed)    
    
    print noc_w
    print noc_h
       
    ###############        
    # fixed params
    ###############
    SimParams.NOC_W = noc_w
    SimParams.NOC_H = noc_h
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck()
    SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
    
    noc_size_dir = "noc_" + str(noc_w) + "x" + str(noc_h) + "/"
    
    if(multiseeds==True):
        DATA_FOLDER = "experiment_data/remapping_nocsize/remapping_central_dynamic/"+"seed_"+str(seed)+"/"
    else:        
        #DATA_FOLDER = "experiment_data/remapping_central_dynamic/"
        DATA_FOLDER = "experiment_data/remapping_nocsize/remapping_central_dynamic/" + noc_size_dir
    
    if(run_rm_off == True):
        ################################
        # PS-based Remapping disabled
        ################################
        SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.OPENLOOP
        SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.OPENLOOP
        SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.OPENLOOP
        SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.OPENLOOP        
        SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
        SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
        SimParams.DYNAMIC_TASK_PRIASS_SCHEME =  TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST
        
        FNAME_PREFIX = DATA_FOLDER+"RMOFF_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_CentralFullyDynamicMapping : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Disabled, " + noc_size_dir 
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        (wf_results_summary, gops_in_outputbuff_summary) = MMMSim.SimMon.report_DecodedWorkflows_Summary(timeline_fname         =FNAME_PREFIX+tm_fname, 
                                                                                                         wf_res_summary_fname   = FNAME_PREFIX+wf_res_fname, 
                                                                                                        gops_opbuff_summary_fname = FNAME_PREFIX+gops_opbuff_fname,
                                                                                                        rmtbl_dt_summary_fname    = FNAME_PREFIX+rmtbl_dt_fname,
                                                                                                        gops_opbuff_summary_short_fname = FNAME_PREFIX+gops_opbuff_short_fname,
                                                                                                        output_format = "json")
        
        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX+obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX+flowscompleted_fname)
        #MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX+nodetaskexectime_fname)
        
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX+trminfo_fname)
        #MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX+nodecumslack_fname)        
        #MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX+node_importedtasks)
   
    
    if(run_rm_on == True): 
        ################################
        # PS-based Remapping enabled
        ################################
        SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
        SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
        SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
        SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
        SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = True
        SimParams.MS_SIGNALLING_NOTIFY_FLOW_COMPLETE_ENABLE = False
        SimParams.MAPPING_PREMAPPING_ENABLED = False
        SimParams.FULLYDYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemesFullyDyn.TASKMAPPINGSCHEMESFULLYDYN_LOWESTUTIL_NEARESTPARENT        
                    
        SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
        SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION    # this will be overridden
        SimParams.DYNAMIC_TASK_PRIASS_SCHEME =  TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST
        
        FNAME_PREFIX = DATA_FOLDER+"RMON_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_CentralFullyDynamicMapping : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Enabled, " + noc_size_dir
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        (wf_results_summary, gops_in_outputbuff_summary) = MMMSim.SimMon.report_DecodedWorkflows_Summary(timeline_fname         =FNAME_PREFIX+tm_fname, 
                                                                                                         wf_res_summary_fname   = FNAME_PREFIX+wf_res_fname, 
                                                                                                        gops_opbuff_summary_fname = FNAME_PREFIX+gops_opbuff_fname,
                                                                                                        rmtbl_dt_summary_fname    = FNAME_PREFIX+rmtbl_dt_fname,
                                                                                                        gops_opbuff_summary_short_fname = FNAME_PREFIX+gops_opbuff_short_fname,
                                                                                                        output_format = "json")
        
        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX+obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX+flowscompleted_fname)
        MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX+nodetaskexectime_fname)        
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX+trminfo_fname)
        MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX+nodecumslack_fname)        
        MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX+node_importedtasks)
def runSim_RandomRemappingBasic(run_rm_off=True, run_rm_on=True, seed=1234, multiseeds=False):
       
    print "SEED === " + str(seed)    
        
    ###############        
    # fixed params
    ###############
    SimParams.NOC_W = 10
    SimParams.NOC_H = 10
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck()
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.OPENLOOP
    
    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME =  TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST
            
    if(multiseeds==True):
        #DATA_FOLDER = "experiment_data/remapping_randombased/"+"seed_"+str(seed)+"/"
		DATA_FOLDER = "experiment_data/remapping_random_initial_mapping/remapping_randombased/"+"seed_"+str(seed)+"/"
    else:        
        DATA_FOLDER = "experiment_data/remapping_randombased/"
        
    # name the report filenames
    tm_fname                = "test__timeline.png"
    vs_bs_fname             = "test__vsbs.js"
    util_fname              = "test__util.js"
    wf_res_fname            = "test__wfressumm.js"
    gops_opbuff_fname       = "test__gopsopbuffsumm.js"
    
    rmtbl_dt_fname          = "test__rmtbldt.js"
    ibuff_fname             = "test__ibuff.js"
    obuff_fname             = "test__obuff.js"
    nodetqs_fname           = "test__nodetqs.js"
    rmtaskrelease_fname     = "test__rmtaskrel.js"
    mappingandpriass_fname  = "test__mappingandpriass.js"
    flowscompleted_fname    = "test__flwcompleted.js"
    nodetaskexectime_fname  = "test__nodetaskexectime.js" 
    psalgo_nodeprops        = "test__psalgonodeprops.js"
    flowsadded_fname        = "test__flwsadded.js"
    trminfo_fname           = "test__taskremappinginfo.js"
    nodecumslack_fname      = "test__nodecumslack.js"
    node_importedtasks      = "test__nodeimportedtasks.js"
    rmdebuginfo_1           = "test__remappingdebuginfo_1.js"
    
    
    if(run_rm_off == True):
        ################################
        # Random Remapping disabled
        ################################        
        SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = False        
        SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_NONE
        FNAME_PREFIX = DATA_FOLDER+"RMOFF_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RandomRemappingBasic : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Remapping_disabled"
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        (wf_results_summary, gops_in_outputbuff_summary) = MMMSim.SimMon.report_DecodedWorkflows_Summary(timeline_fname         =FNAME_PREFIX+tm_fname, 
                                                                                                         wf_res_summary_fname   = FNAME_PREFIX+wf_res_fname, 
                                                                                                        gops_opbuff_summary_fname = FNAME_PREFIX+gops_opbuff_fname,
                                                                                                        rmtbl_dt_summary_fname    = FNAME_PREFIX+rmtbl_dt_fname,
                                                                                                        output_format = "json")
        
        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX+obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        #MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX+flowscompleted_fname)
        #MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX+nodetaskexectime_fname)
        
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX+trminfo_fname)
        #MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX+nodecumslack_fname)        
        #MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX+node_importedtasks)
   
    
    if(run_rm_on == True): 
        ################################
        # PS-based Remapping enabled
        ################################        
        SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = True
        SimParams.CPUNODE_MONITOR_TASKSET_SLACK = True
        SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_RANDOM_ANY
        SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL              = 4.6
        FNAME_PREFIX = DATA_FOLDER+"RMON_"
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RandomRemappingBasic : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", Remapping_enabled"
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        (wf_results_summary, gops_in_outputbuff_summary) = MMMSim.SimMon.report_DecodedWorkflows_Summary(timeline_fname         =FNAME_PREFIX+tm_fname, 
                                                                                                         wf_res_summary_fname   = FNAME_PREFIX+wf_res_fname, 
                                                                                                        gops_opbuff_summary_fname = FNAME_PREFIX+gops_opbuff_fname,
                                                                                                        rmtbl_dt_summary_fname    = FNAME_PREFIX+rmtbl_dt_fname,
                                                                                                        output_format = "json")
        
        #MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, FNAME_PREFIX+vs_bs_fname)
        #MMMSim.SimMon.report_InstUtilisation(dump_to_file=FNAME_PREFIX+util_fname)
        #MMMSim.SimMon.report_InputBuffer(dump_to_file=FNAME_PREFIX+ibuff_fname)
        #MMMSim.SimMon.report_NodeTQs(dump_to_file=FNAME_PREFIX+nodetqs_fname)
        MMMSim.SimMon.report_OutputBufferContents(dump_to_file=FNAME_PREFIX+obuff_fname)
        #MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=FNAME_PREFIX+rmtaskrelease_fname)
        #MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=FNAME_PREFIX+mappingandpriass_fname)
        #MMMSim.SimMon.report_FlowsCompleted(dump_to_file=FNAME_PREFIX+flowscompleted_fname)
        MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=FNAME_PREFIX+nodetaskexectime_fname)        
        #MMMSim.SimMon.report_FlowsAdded(dump_to_file=FNAME_PREFIX+flowsadded_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(dump_to_file=FNAME_PREFIX+trminfo_fname)
        MMMSim.SimMon.report_NodeCumSlack(dump_to_file=FNAME_PREFIX+nodecumslack_fname)        
        MMMSim.SimMon.report_NodeImportedTasks(dump_to_file=FNAME_PREFIX+node_importedtasks)
Beispiel #11
0
def runSim_RemappingMCParamsTest_RMON(
    seed=77379,
    param_rand_CLUSTER_SIZE=None,
    param_rand_REMAP_PERIOD=None,
    param_rand_LATENESS_RATIO=None,
    param_rand_LOAN_AMOUNT=None,
    param_fname=None,
):

    if ((param_rand_CLUSTER_SIZE == None) or (param_rand_REMAP_PERIOD == None)
            or (param_rand_LATENESS_RATIO == None)
            or (param_rand_LOAN_AMOUNT == None) or (param_fname == None)):
        sys.exit('runSim_RemappingMCParamsTest_RMON:: not enough params !!')

    print "SEED === " + str(seed)

    # fixed params
    SimParams.NOC_W = NOC_W
    SimParams.NOC_H = NOC_W
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST

    DATA_FOLDER = "experiment_data/remapping_ccpbased_montecarlo/" + "seed_" + str(
        seed) + "/"

    SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = True
    SimParams.CPUNODE_MONITOR_TASKSET_SLACK = True
    SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False
    SimParams.CCP_ENABLE = True
    SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_CCP_REMAPPING

    FNAME_PREFIX = DATA_FOLDER + "RMON_"

    # set params from arguments
    SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL = param_rand_REMAP_PERIOD
    #SimParams.DYNAMIC_TASK_REMAPPING_TASK_LATE_ESTIM_LATENESS_RATIO = param_rand_LATENESS_RATIO
    SimParams.CCP_CLUSTER_SIZE = [
        int(c) for c in param_rand_CLUSTER_SIZE.split('-')
    ]
    SimParams.CCP_LOAN_TASK_AMOUNT = param_rand_LOAN_AMOUNT

    #     fname_param_prefix = FNAME_PREFIX + str(param_rand_CLUSTER_SIZE) + \
    #                             "_" + str(param_rand_REMAP_PERIOD) + \
    #                             "_" + str(param_rand_LATENESS_RATIO) + "_"

    fname_param_prefix = FNAME_PREFIX + param_fname + "_"

    # check if the simulation has run already before continuing, by checking if
    # one of the output file exists
    check_fname = fname_param_prefix + "resultssummary.js"
    print "Checking file exists : " + str(check_fname)

    run_sim = False
    if (_check_file_exists(check_fname) == True):
        if (_is_resultssummary_error(check_fname) == False):
            print "Simulation already exists ! "
            run_sim = False
        else:
            run_sim = True
    else:
        run_sim = True

    if (run_sim == True):
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RemappingMCParamsTest_RMON : num_wf=" + str(
            SimParams.NUM_WORKFLOWS)
        print fname_param_prefix
        print "SEED === " + str(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (wf_results_summary, gops_in_outputbuff_summary
         ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
             timeline_fname=fname_param_prefix + tm_fname,
             wf_res_summary_fname=fname_param_prefix + wf_res_fname,
             gops_opbuff_summary_fname=fname_param_prefix + gops_opbuff_fname,
             rmtbl_dt_summary_fname=fname_param_prefix + rmtbl_dt_fname,
             gops_opbuff_summary_short_fname=fname_param_prefix +
             gops_opbuff_short_fname,
             output_format="json")

        MMMSim.SimMon.report_OutputBufferContents_short(
            dump_to_file=fname_param_prefix + obuff_short_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(
            dump_to_file=fname_param_prefix + trminfo_fname)
Beispiel #12
0
def runSim_RemappingMCParamsTest_RMON(seed=77379,
                                      param_rand_TQN=None,
                                      param_rand_TDECAY=None,
                                      param_rand_THRESHOLDQN=None,
                                      param_rand_THRESHOLDHOPCOUNT=None,
                                      param_rand_THRESHOLDQN_RAT_DECREASE=None,
                                      param_rand_THRESHOLDQN_RAT_INCREASE=None,
                                      param_rand_KHOPDECAY=None,
                                      param_rand_KTIMEDECAY=None,
                                      param_rand_HQN=None,
                                      param_rand_INITHD=None,
                                      param_rand_REMAP_PERIOD=None,
                                      param_rand_LATENESS_RATIO=None,
                                      fname_param=None):

    if ((param_rand_TQN == None) or (param_rand_TDECAY == None)
            or (param_rand_THRESHOLDQN == None)
            or (param_rand_THRESHOLDQN_RAT_DECREASE == None)
            or (param_rand_THRESHOLDQN_RAT_INCREASE == None)
            or (param_rand_THRESHOLDHOPCOUNT == None)
            or (param_rand_KHOPDECAY == None)
            or (param_rand_KTIMEDECAY == None) or (param_rand_HQN == None)
            or (param_rand_INITHD == None) or (param_rand_REMAP_PERIOD == None)
            or (fname_param == None) or (param_rand_LATENESS_RATIO == None)):
        sys.exit('runSim_RemappingMCParamsTest_RMON:: not enough params !!')

    print "SEED === " + str(seed)

    # fixed params
    SimParams.NOC_W = NOC_W
    SimParams.NOC_H = NOC_W
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES + 3
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP
    SimParams.COMBINED_MAPPING_AND_PRIASS = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST

    DATA_FOLDER = "experiment_data/remapping_psbased_montecarlo/" + "seed_" + str(
        seed) + "/"

    SimParams.PSALGO_ENABLED = True
    SimParams.DYNAMIC_TASK_REMAPPING_ENABLED = True
    SimParams.DYNAMIC_TASK_REMAPPING_SCHEME = TaskRemapDecentSchemes.TASKREMAPPINGDECENTSCHEMES_LOWESTBLOCKING_QUEEN_VIA_SYSSLACK
    SimParams.CPUNODE_MONITOR_TASKSET_SLACK = True
    SimParams.PSALGO_VIEWER_ENABLED = False
    SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = False

    FNAME_PREFIX = DATA_FOLDER + "RMON_"

    #     # --------------------------------------------------------------------------------
    #     # params taken from mc-test : perm_0.22_0.0629_20.0_0.3_0.3_4.6_
    #     SimParams.PSALGO_TQN                                            = 0.22
    #     SimParams.PSALGO_TDECAY                                         = 0.0629
    #     SimParams.PSALGO_THRESHOLDQN                                    = 20.0
    #     #SimParams.PSALGO_DYNAMIC_THRESHOLDQN_RATIO                      = [0.3, 0.3]
    #     SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL              = 4.6
    #     SimParams.PSALGO_THRESHOLDHOPCOUNT                              = 2
    #     # --------------------------------------------------------------------------------

    # set params from arguments
    SimParams.PSALGO_TQN = param_rand_TQN
    SimParams.PSALGO_TDECAY = param_rand_TDECAY
    #SimParams.PSALGO_THRESHOLDQN                                    = param_rand_THRESHOLDQN
    SimParams.PSALGO_DYNAMIC_THRESHOLDQN_RATIO = [
        param_rand_THRESHOLDQN_RAT_INCREASE,
        param_rand_THRESHOLDQN_RAT_DECREASE
    ]
    SimParams.PSALGO_THRESHOLDHOPCOUNT = param_rand_THRESHOLDHOPCOUNT
    SimParams.PSALGO_KHOPDECAY = param_rand_KHOPDECAY
    SimParams.PSALGO_KTIMEDECAY = param_rand_KTIMEDECAY
    SimParams.PSALGO_HQN = param_rand_HQN
    #SimParams.PSALGO_INITIALHORMONEAMNT_WORKER                      = param_rand_INITHD
    #SimParams.PSALGO_INITIALHORMONEAMNT_QUEEN                       = param_rand_INITHD
    SimParams.DYNAMIC_TASK_REMAPPING_SAMPLING_INTERVAL = param_rand_REMAP_PERIOD
    #SimParams.DYNAMIC_TASK_REMAPPING_TASK_LATE_ESTIM_LATENESS_RATIO = param_rand_LATENESS_RATIO

    #     fname_param_prefix = FNAME_PREFIX + str(param_rand_TQN) + \
    #                             "_" + str(param_rand_TDECAY) + \
    #                             "_" + str(param_rand_THRESHOLDQN) + \
    #                             "_" + str(param_rand_THRESHOLDHOPCOUNT) + \
    #                             "_" + str(param_rand_THRESHOLDQN_RAT_INCREASE) + \
    #                             "_" + str(param_rand_THRESHOLDQN_RAT_DECREASE) + \
    #                             "_" + str(param_rand_REMAP_PERIOD) + "_"

    fname_param_prefix = FNAME_PREFIX + fname_param + "_"

    # check if the simulation has run already before continuing, by checking if
    # one of the output file exists
    check_fname = fname_param_prefix + "resultssummary.js"
    print "Checking file exists : " + str(check_fname)

    run_sim = False
    if (_check_file_exists(check_fname) == True):
        if (_is_resultssummary_error(check_fname) == False):
            print "Simulation already exists ! "
            run_sim = False
        else:
            run_sim = True
    else:
        run_sim = True

    if (run_sim == True):
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_RemappingMCParamsTest_RMON : num_wf=" + str(
            SimParams.NUM_WORKFLOWS)
        print fname_param_prefix
        print "SEED === " + str(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"

        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
        print env.now

        (wf_results_summary, gops_in_outputbuff_summary
         ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
             timeline_fname=fname_param_prefix + tm_fname,
             wf_res_summary_fname=fname_param_prefix + wf_res_fname,
             gops_opbuff_summary_fname=fname_param_prefix + gops_opbuff_fname,
             rmtbl_dt_summary_fname=fname_param_prefix + rmtbl_dt_fname,
             gops_opbuff_summary_short_fname=fname_param_prefix +
             gops_opbuff_short_fname,
             output_format="json")

        MMMSim.SimMon.report_OutputBufferContents_short(
            dump_to_file=fname_param_prefix + obuff_short_fname)
        MMMSim.SimMon.report_TaskRemappingInfo(
            dump_to_file=fname_param_prefix + trminfo_fname)
def runSim_AC_MP_Type(                       
                       forced_seed = None,                       
                       fname_prefix=None,
                       ac_type=None,
                       mp_type=None,
                       pr_type=None,
                       num_wfs=None,
                       res_list=None,
                       cmbmppri_type=None
                       ):
    
    seed = forced_seed    
    
    print "SEED === " + str(seed)    
             
    # fixed params    
    SimParams.NOC_W = 3
    SimParams.NOC_H = 3
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck()
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.OPENLOOP
    SimParams.NUM_WORKFLOWS                       = num_wfs
    SimParams.NUM_INPUTBUFFERS                    = SimParams.NUM_WORKFLOWS
    SimParams.DVB_RESOLUTIONS                     = res_list
    SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM     = True
    SimParams.CPU_EXEC_SPEED_RATIO = 0.8
    SimParams.NOC_PERIOD           =  0.0000001 #10 mhz
    #SimParams.NOC_PERIOD           =  0.00000142 #.7 mhz
    SimParams.WFGEN_MIN_GOPS_PER_VID = 200 
    SimParams.WFGEN_MAX_GOPS_PER_VID = 200  
    
    SimParams.AC_TEST_OPTION                = ac_type
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME   = mp_type
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME    = pr_type    
    SimParams.COMBINED_MAPPING_AND_PRIASS   = cmbmppri_type
    
    # non-hevc stuff
    SimParams.HEVC_TILELEVEL_SPLITTING_ENABLE = False
    SimParams.TASK_MODEL                      = TaskModel.TASK_MODEL_MHEG2_FRAME_ET_LEVEL
    SimParams.HEVC_GOPGEN_USEPROBABILISTIC_MODEL = False
    SimParams.TASKSET_MODEL = TaskModel.TASK_MODEL_MHEG2_FRAME_ET_LEVEL
    
    
    sub_exp_dir = "multiseed_random_res/"
    #subdir = "ac"+str(ac_type)+"mp"+str(mp_type)+"pr"+str(pr_type)+"cmb"+str(cmbmppri_type)+"/"
    subdir = "seed_"+str(seed) +"/" 
    FNAME_PREFIX = fname_prefix+str(SimParams.NOC_H)+"_"+str(SimParams.NOC_W)+"_"
    check_fname = _get_fname(EXP_DATADIR+sub_exp_dir+subdir, FNAME_PREFIX)['utilvsschedresults_fname']
    
    print "Checking file exists : " + str(check_fname)
    
    if(_check_file_exists(check_fname) == True):
        print "Simulation already exists.."
    else:
        
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim-"+ fname_prefix  +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \
                ", seed="+str(forced_seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        
        
        #subdir = ""
        
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        FNAME_PREFIX = fname_prefix+str(SimParams.NOC_H)+"_"+str(SimParams.NOC_W)+"_"
        
        _makeDir(EXP_DATADIR+sub_exp_dir+subdir)
        
        # get filenames
        filenames = _get_fname(EXP_DATADIR+sub_exp_dir+subdir, FNAME_PREFIX)        
        # name the report filenames
        _dump_captured_data(filenames)
def runSim_Scenario_v2(                       
                       forced_seed = None,
                       scenario_exp_folder = None,
                       scenario_id = None,
                       dvb_resolutions = None,
                       dvb_resolutions_fixed = [],
                       dvb_resolutions_selected_random=True,
                       num_workflows = None,                       
                       run_noac_lum = True,
                       run_schedac_lum  = True,
                       run_noac_improvedm = True,
                       run_schedac_improvedm = True,
                       
                       ):
    
    seed = forced_seed    
    
    SCENARIO_ID = scenario_id
    
    print "SEED === " + str(seed)    
             
    # fixed params
    SimParams.SLACK_FEEDBACK_ENABLED = False
    
    SimParams.NOC_W = 3
    SimParams.NOC_H = 3
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck()
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.OPENLOOP
    SimParams.DVB_RESOLUTIONS = dvb_resolutions
    SimParams.NUM_WORKFLOWS                 = num_workflows
    SimParams.NUM_INPUTBUFFERS              = SimParams.NUM_WORKFLOWS
    SimParams.DVB_RESOLUTIONS_FIXED         = dvb_resolutions_fixed
    SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM        = dvb_resolutions_selected_random
        

    if(run_noac_lum == True):
        ############################
        #### No AC - LU Mapping ####
        ############################    
        SimParams.AC_TEST_OPTION                = AdmissionControllerOptions.AC_OPTION_NONE_WITH_SCHEDTEST_WITHMMC
        SimParams.DYNAMIC_TASK_MAPPING_SCHEME   = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
        SimParams.DYNAMIC_TASK_PRIASS_SCHEME    = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST    
        SimParams.COMBINED_MAPPING_AND_PRIASS   = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
        
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_Scenario_V1 (NOCAC_LUM): num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) 
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        FNAME_PREFIX = SCENARIO_ID+"NOAC_LUM_"+str(SimParams.NOC_H)+"_"+str(SimParams.NOC_W)+"_"
        
        # get filenames
        filenames = _get_fname(EXP_DATADIR+scenario_exp_folder, FNAME_PREFIX)        
        # name the report filenames
        _dump_captured_data(filenames)
        
        
        

    if(run_schedac_lum==True):
        ####################################
        #### SCHED_ONLY AC - LU Mapping ####
        ####################################
        SimParams.AC_TEST_OPTION                = AdmissionControllerOptions.AC_OPTION_SCHEDTEST_DIRECT_TO_CRITICALPATH_WITHMMC
        SimParams.DYNAMIC_TASK_MAPPING_SCHEME   = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
        SimParams.DYNAMIC_TASK_PRIASS_SCHEME    = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST    
        SimParams.COMBINED_MAPPING_AND_PRIASS   = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_DISABLED
        
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_Scenario_V1 (SCHEDONLYAC_LUM): num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) 
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        FNAME_PREFIX = SCENARIO_ID+"SCHEDONLYAC_LUM_"+str(SimParams.NOC_H)+"_"+str(SimParams.NOC_W)+"_"
        
        # get filenames
        filenames = _get_fname(EXP_DATADIR+scenario_exp_folder, FNAME_PREFIX)        
        # name the report filenames
        _dump_captured_data(filenames)

    

    if(run_noac_improvedm==True):
        ##################################
        #### No AC - Improved Mapping ####
        ##################################
        SimParams.AC_TEST_OPTION                = AdmissionControllerOptions.AC_OPTION_NONE_WITH_SCHEDTEST_WITHMMC
        SimParams.DYNAMIC_TASK_MAPPING_SCHEME   = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
        SimParams.DYNAMIC_TASK_PRIASS_SCHEME    = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST    
        SimParams.COMBINED_MAPPING_AND_PRIASS   = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_PRLOWRESFIRST_TIGHTFIT_V1
        
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_Scenario_V1 (NOCAC_IMPROVEDM): num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) 
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        FNAME_PREFIX = SCENARIO_ID+"NOCAC_IMPROVEDM_"+str(SimParams.NOC_H)+"_"+str(SimParams.NOC_W)+"_"
        
        # get filenames
        filenames = _get_fname(EXP_DATADIR+scenario_exp_folder, FNAME_PREFIX)        
        # name the report filenames
        _dump_captured_data(filenames)
        


    if(run_schedac_improvedm==True):
        ##########################################
        #### SCHED_ONLY AC - Improved Mapping ####
        ##########################################
        SimParams.AC_TEST_OPTION                = AdmissionControllerOptions.AC_OPTION_SCHEDTEST_DIRECT_TO_CRITICALPATH_WITHMMC
        SimParams.DYNAMIC_TASK_MAPPING_SCHEME   = TaskMappingSchemes.TASKMAPPINGSCHEMES_LOWEST_UTILISATION
        SimParams.DYNAMIC_TASK_PRIASS_SCHEME    = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_LOWRES_FIRST    
        SimParams.COMBINED_MAPPING_AND_PRIASS   = TaskMappingAndPriAssCombinedSchemes.TASKMAPPINGANDPRIASSCOMBINED_PRLOWRESFIRST_TIGHTFIT_V1
        
        random.seed(seed)
        np.random.seed(seed)
        print "----------------------------------------------------------------------------------------------------------------------------"
        print "Running runSim_Scenario_V1 (SCHEDONLYAC_IMPROVEDM): num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
                ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + \
                ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
                ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
                ", combined="+str(SimParams.COMBINED_MAPPING_AND_PRIASS) 
        print "----------------------------------------------------------------------------------------------------------------------------"
                
        env, last_scheduled_task_time = MMMSim.runMainSimulation()
        env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
        print env.now        
        
        FNAME_PREFIX = SCENARIO_ID+"SCHEDONLYAC_IMPROVEDM_"+str(SimParams.NOC_H)+"_"+str(SimParams.NOC_W)+"_"
        
        # get filenames
        filenames = _get_fname(EXP_DATADIR+scenario_exp_folder, FNAME_PREFIX)        
        # name the report filenames
        _dump_captured_data(filenames)
def runSim_Simple_ClosedLoop_woIBuffering():
    
    seed = 99108    
    print "SEED === " + str(seed)    
             
    # fixed params
    SimParams.SLACK_FEEDBACK_ENABLED = False    
    SimParams.NOC_W = 8
    SimParams.NOC_H = 8
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES * 2
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck()    
    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS    = RMTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
    SimParams.SIM_ENTITY_CPUNODE_CLASS            = CPUTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
    SimParams.SIM_ENTITY_MAPPER_CLASS             = MapperTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS     = TDTypes.CLOSEDLOOP_WITHOUT_IBUFFERING
    
    
    random.seed(seed)
    np.random.seed(seed)
    print "----------------------------------------------------------------------------------------------------------------------------"
    print "Running runSim_Simple_ClosedLoop_woIBuffering : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
            ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
            ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) 
    print "----------------------------------------------------------------------------------------------------------------------------"
            
    env, last_scheduled_task_time = MMMSim.runMainSimulation()
    env.run(until=last_scheduled_task_time+SimParams.SIM_RUNTIME)
    print env.now        
    
    # name the report filenames
    tm_fname                = "test__timeline.png"
    vs_bs_fname             = "test__vsbs.js"
    util_fname              = "test__util.js"
    wf_res_fname            = "test__wfressumm.js"
    gops_opbuff_fname       = "test__gopsopbuffsumm.js"
    
    rmtbl_dt_fname          = "test__rmtbldt.js"
    ibuff_fname             = "test__ibuff.js"
    obuff_fname             = "test__obuff.js"
    nodetqs_fname           = "test__nodetqs.js"
    rmtaskrelease_fname     = "test__rmtaskrel.js"
    mappingandpriass_fname  = "test__mappingandpriass.js"
    flowscompleted_fname    = "test__flwcompleted.js"
    nodetaskexectime_fname  = "test__nodetaskexectime.js" 
            
    
    (wf_results_summary, gops_in_outputbuff_summary) = MMMSim.SimMon.report_DecodedWorkflows_Summary(timeline_fname=tm_fname, 
                                                                                                     wf_res_summary_fname = wf_res_fname, 
                                                                                                    gops_opbuff_summary_fname = gops_opbuff_fname,
                                                                                                    rmtbl_dt_summary_fname = rmtbl_dt_fname,
                                                                                                    output_format = "json")
    
    MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary, vs_bs_fname)
    MMMSim.SimMon.report_InstUtilisation(dump_to_file=util_fname)
    MMMSim.SimMon.report_InputBuffer(dump_to_file=ibuff_fname)
    MMMSim.SimMon.report_NodeTQs(dump_to_file=nodetqs_fname)
    MMMSim.SimMon.report_OutputBufferContents(dump_to_file=obuff_fname)
    MMMSim.SimMon.report_RMTaskReleaseInfo(dump_to_file=rmtaskrelease_fname)
    MMMSim.SimMon.report_MappingAndPriAssInfo(dump_to_file=mappingandpriass_fname)
    MMMSim.SimMon.report_FlowsCompleted(dump_to_file=flowscompleted_fname)
    MMMSim.SimMon.report_NodeTaskExecTimeline(dump_to_file=nodetaskexectime_fname)
def runSim_Simple_OpenLoop_NNTest(noc_h, noc_w, combined_mapping_option,
                                  normal_mapping_scheme, normal_priass_scheme):

    seed = 99108

    print "SEED === " + str(seed)

    # fixed params
    SimParams.SLACK_FEEDBACK_ENABLED = False

    SimParams.NOC_W = noc_w
    SimParams.NOC_H = noc_h
    SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H)
    SimParams.NUM_WORKFLOWS = SimParams.NUM_NODES * 2
    SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS
    SimParams.LOCAL_SCHEDULER_TYPE = LocalMPEG2FramePriorityScheduler_WithDepCheck(
    )

    SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP
    SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP
    SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP
    SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP

    # assign mapping scheme
    SimParams.DYNAMIC_TASK_MAPPING_SCHEME = normal_mapping_scheme
    SimParams.DYNAMIC_TASK_PRIASS_SCHEME = normal_priass_scheme
    SimParams.COMBINED_MAPPING_AND_PRIASS = combined_mapping_option

    random.seed(seed)
    np.random.seed(seed)
    print "----------------------------------------------------------------------------------------------------------------------------"
    print "Running runSim_Simple_OpenLoop : num_wf=" + str(SimParams.NUM_WORKFLOWS) + \
            ", noc_h="+str(noc_h)+","+"noc_w="+str(noc_w) + \
            ", mapping="+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + \
            ", pri_ass="+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + \
            ", combined_mapping="+str(SimParams.COMBINED_MAPPING_AND_PRIASS)
    print "----------------------------------------------------------------------------------------------------------------------------"

    env, last_scheduled_task_time = MMMSim.runMainSimulation()
    env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME)
    print env.now

    FNAME_PREFIX = "Mapping_" + \
                    str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME) + "_" + \
                    str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME) + "_" + \
                    str(SimParams.COMBINED_MAPPING_AND_PRIASS) + "_" + \
                    str(noc_h)+"_"+str(noc_w)+"_"

    # name the report filenames
    tm_fname = EXP_DATADIR + FNAME_PREFIX + "test__timeline.png"
    vs_bs_fname = EXP_DATADIR + FNAME_PREFIX + "test__vsbs.js"
    util_fname = EXP_DATADIR + FNAME_PREFIX + "test__util.js"
    wf_res_fname = EXP_DATADIR + FNAME_PREFIX + "test__wfressumm.js"
    gops_opbuff_fname = EXP_DATADIR + FNAME_PREFIX + "test__gopsopbuffsumm.js"

    rmtbl_dt_fname = EXP_DATADIR + FNAME_PREFIX + "test__rmtbldt.js"
    ibuff_fname = EXP_DATADIR + FNAME_PREFIX + "test__ibuff.js"
    obuff_fname = EXP_DATADIR + FNAME_PREFIX + "test__obuff.js"
    nodetqs_fname = EXP_DATADIR + FNAME_PREFIX + "test__nodetqs.js"
    rmtaskrelease_fname = EXP_DATADIR + FNAME_PREFIX + "test__rmtaskrel.js"
    mappingandpriass_fname = EXP_DATADIR + FNAME_PREFIX + "test__mappingandpriass.js"
    flowscompleted_fname = EXP_DATADIR + FNAME_PREFIX + "test__flwcompleted.js"
    nodetaskexectime_fname = EXP_DATADIR + FNAME_PREFIX + "test__nodetaskexectime.js"

    (wf_results_summary, gops_in_outputbuff_summary
     ) = MMMSim.SimMon.report_DecodedWorkflows_Summary(
         timeline_fname=tm_fname,
         wf_res_summary_fname=wf_res_fname,
         gops_opbuff_summary_fname=gops_opbuff_fname,
         rmtbl_dt_summary_fname=rmtbl_dt_fname,
         output_format="json")

    MMMSim.SimMon.report_VideoStream_BasicStats(wf_results_summary,
                                                vs_bs_fname)
    MMMSim.SimMon.report_InstUtilisation(dump_to_file=util_fname)
    MMMSim.SimMon.report_NodeTQs(dump_to_file=nodetqs_fname)
    MMMSim.SimMon.report_OutputBufferContents(dump_to_file=obuff_fname)
    MMMSim.SimMon.report_FlowsCompleted(dump_to_file=flowscompleted_fname)