def runSim_TileMapping( forced_seed=None, cmbmppri_type=None, wl_config=None, # we assume 1 vid per wf ): seed = forced_seed print "SEED === " + str(seed) random.seed(seed) np.random.seed(seed) # get resolution list res_list = get_res_list(wl_config) # fixed params SimParams.SIM_RUNTIME = 10000 SimParams.HEVC_DUMP_FRAME_DATAFILE = False SimParams.HEVC_LOAD_FRAME_DATAFILE = False SimParams.HEVC_FRAME_GENRAND_SEED = seed SimParams.HEVC_TILELEVEL_SPLITTING_ENABLE = True SimParams.LOCAL_SCHEDULER_TYPE = LocalHEVCTilePriorityScheduler_WithDepCheck( ) SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP_HEVC_TILE_LEVEL SimParams.TASK_MODEL = TaskModel.TASK_MODEL_HEVC_TILE_LEVEL SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP_WITH_HEVCTILE SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP_WITH_HEVCTILE SimParams.MS_SIGNALLING_NOTIFY_FLOW_COMPLETE_ENABLE = False SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = False SimParams.RESOURCEMANAGER_USE_VOLATILE_TMTBL = True SimParams.MAPPING_PREMAPPING_ENABLED = True SimParams.MMC_SMART_NODE_SELECTION_ENABLE = True SimParams.MMC_SMART_NODE_SELECTION_TYPE = 0 # MMCP-Dist SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = True SimParams.HEVC_GOPGEN_USEPROBABILISTIC_MODEL = True SimParams.USE_VIDSTRM_SPECIFIC_FRAMERATE = True SimParams.NOC_W = 8 SimParams.NOC_H = 8 SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H) # SimParams.DVB_RESOLUTIONS_FIXED = [ # # (3840,2160), # (2560,1440), # # (1920,1080), # # (1280,720), # # (854,480), # # (640,360), # (512,288), # ]*1 # # # SimParams.DVB_RESOLUTIONS_FIXED = res_list SimParams.NUM_WORKFLOWS = len(SimParams.DVB_RESOLUTIONS_FIXED) SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False SimParams.WFGEN_MIN_GOPS_PER_VID = 5 SimParams.WFGEN_MAX_GOPS_PER_VID = 5 SimParams.WFGEN_INITIAL_VID_GAP_MIN = 0.0 SimParams.WFGEN_INITIAL_VID_GAP_MAX = 0.05 CCR_TYPE = "lowcc_normal_mem_considered" # {normal, normal_mem_considered, lowcc_normal_mem_considered} ### for normal CC ### if CCR_TYPE == "normal": cc_scale_down = 1.66 # this makes the CCR go High SimParams.CLSTR_TILE_PARAM_CCR_RANGES_LOW = 0.11 # less than this SimParams.CLSTR_TILE_PARAM_CCR_RANGES_MED = (0.11, 0.14 ) # between these values SimParams.CLSTR_TILE_PARAM_CCR_RANGES_HIGH = 0.14 # higher than this SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR = 1.0 # we use a scale factor because always the (comm. cost < comp. cost) SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW = 0.11 # less than this SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED = ( 0.11, 0.14) # between these values SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH = 0.14 # higher than this SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS = ( 4, 1, 1) # NGT hop count (low, med, high ccr ranges) ### for normal low CC - @0.60 ### elif CCR_TYPE == "normal_mem_considered": cc_scale_down = 1.0 # this makes the CCR go High SimParams.CLSTR_TILE_PARAM_CCR_RANGES_LOW = 0.18 # less than this SimParams.CLSTR_TILE_PARAM_CCR_RANGES_MED = (0.18, 0.23 ) # between these values SimParams.CLSTR_TILE_PARAM_CCR_RANGES_HIGH = 0.23 # higher than this SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR = 1.0 # we use a scale factor because always the (comm. cost < comp. cost) SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW = 0.18 # less than this SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED = ( 0.18, 0.23) # between these values SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH = 0.23 # higher than this SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS = ( 4, 1, 1) # NGT hop count (low, med, high ccr ranges) ### for special very low CC - @0.60*0.1 ### elif CCR_TYPE == "lowcc_normal_mem_considered": cc_scale_down = 0.1 # low values makes the CCR go high SimParams.CLSTR_TILE_PARAM_CCR_RANGES_LOW = 1.8 # less than this SimParams.CLSTR_TILE_PARAM_CCR_RANGES_MED = (1.8, 2.3 ) # between these values SimParams.CLSTR_TILE_PARAM_CCR_RANGES_HIGH = 2.3 # higher than this SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR = 1.0 # we use a scale factor because always the (comm. cost < comp. cost) SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW = 1.8 # less than this SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED = ( 1.8, 2.3) # between these values SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH = 2.3 # higher than this SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS = ( 4, 1, 1) # NGT hop count (low, med, high ccr ranges) else: sys.exit("Error - CCR_TYPE: " + CCR_TYPE) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'][1] * float(cc_scale_down)) print "HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR:: ---" pprint.pprint(HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR) print "-------------" # -- variable params -- SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_NONE # this will be overridden SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_NONE pprint.pprint(SimParams.DVB_RESOLUTIONS_FIXED) pprint.pprint(SimParams.NUM_WORKFLOWS) # getting the reporing file name prefix exp_key = "ac"+str(SimParams.AC_TEST_OPTION) + \ "mp"+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME)+ \ "pr"+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME)+ \ "cmb"+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \ "mmp"+str(SimParams.MMC_SMART_NODE_SELECTION_TYPE) subdir1 = EXP_DATADIR + wl_config + "/" + exp_key + "/" subdir2 = subdir1 + "seed_" + str(seed) + "/" final_subdir = subdir2 fname_prefix = "HEVCTileSplitTest__" + exp_key + "_" final_fname = fname_prefix + str(SimParams.NOC_H) + "_" + str( SimParams.NOC_W) + "_" check_fname = _get_fname(final_subdir, final_fname)['taskscompleted_fname'] print "Checking file exists : " + str(check_fname) if (_check_file_exists(check_fname) == True): print "Simulation already exists.." else: print "----------------------------------------------------------------------------------------------------------------------------" print subdir2 print "Running HEVCTile_Mapping-runSim_TileMapping-"+ fname_prefix +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \ ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + ", " + \ exp_key + \ ", seed="+str(seed) print "----------------------------------------------------------------------------------------------------------------------------" print "Start-time(actual): ", datetime.datetime.fromtimestamp( time.time()).strftime('%Y-%m-%d %H:%M:%S') env, last_scheduled_task_time = MMMSim.runMainSimulation( initial_rand_seed=seed, dump_workload=False) env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME) print "Simulation Ended at : %.15f" % env.now print "End-time: ", datetime.datetime.fromtimestamp( time.time()).strftime('%Y-%m-%d %H:%M:%S') _makeDir(final_subdir) # get filenames filenames = _get_fname(final_subdir, final_fname) # name the report filenames _dump_captured_data(filenames)
def runSim_TileMapping_varBGMappingNHops( forced_seed=None, cmbmppri_type=None, wl_config=None, # we assume 1 vid per wf memp_select=None, nhgt_h=None, nhgt_m=None, nhgt_l=None, ): seed = forced_seed print "SEED === " + str(seed) random.seed(seed) np.random.seed(seed) # get resolution list res_list = get_res_list(wl_config) # fixed params SimParams.SIM_RUNTIME = 10000 SimParams.HEVC_DUMP_FRAME_DATAFILE = False SimParams.HEVC_LOAD_FRAME_DATAFILE = False SimParams.HEVC_FRAME_GENRAND_SEED = seed SimParams.HEVC_TILELEVEL_SPLITTING_ENABLE = True SimParams.LOCAL_SCHEDULER_TYPE = LocalHEVCTilePriorityScheduler_WithDepCheck( ) SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP_HEVC_TILE_LEVEL SimParams.TASK_MODEL = TaskModel.TASK_MODEL_HEVC_TILE_LEVEL SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP_WITH_HEVCTILE SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP_WITH_HEVCTILE SimParams.MS_SIGNALLING_NOTIFY_FLOW_COMPLETE_ENABLE = False SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = False SimParams.RESOURCEMANAGER_USE_VOLATILE_TMTBL = True SimParams.MAPPING_PREMAPPING_ENABLED = True SimParams.MMC_SMART_NODE_SELECTION_ENABLE = True SimParams.MMC_SMART_NODE_SELECTION_TYPE = 0 # MMCP-Dist SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = True SimParams.HEVC_GOPGEN_USEPROBABILISTIC_MODEL = True SimParams.USE_VIDSTRM_SPECIFIC_FRAMERATE = True SimParams.NOC_W = 8 SimParams.NOC_H = 8 SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H) SimParams.DVB_RESOLUTIONS_FIXED = res_list SimParams.NUM_WORKFLOWS = len(SimParams.DVB_RESOLUTIONS_FIXED) SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False SimParams.WFGEN_MIN_GOPS_PER_VID = 3 SimParams.WFGEN_MAX_GOPS_PER_VID = 3 SimParams.WFGEN_INITIAL_VID_GAP_MIN = 0.0 SimParams.WFGEN_INITIAL_VID_GAP_MAX = 0.05 pprint.pprint(SimParams.DVB_RESOLUTIONS_FIXED) pprint.pprint(SimParams.NUM_WORKFLOWS) # -- variable params -- SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_NONE # this will be overridden SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_NONE #### CL-BG params #### CCR_TYPE = "normal_mem_considered" # {normal, normal_mem_considered, lowccr_normal_mem_considered} if CCR_TYPE == "normal": cc_scale_down = 1.66 SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW = 0.11 # less than this SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED = ( 0.11, 0.14) # between these values SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH = 0.14 # higher than this elif CCR_TYPE == "normal_mem_considered": cc_scale_down = 1.0 SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW = 0.18 # less than this SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED = ( 0.18, 0.23) # between these values SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH = 0.23 # higher than this elif CCR_TYPE == "lowccr_normal_mem_considered": cc_scale_down = 0.1 SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW = 1.8 # less than this SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED = ( 1.8, 2.3) # between these values SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH = 2.3 # higher than this # set the hop variables SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS = [nhgt_h, nhgt_m, nhgt_l] print "SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS : ", SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS print "SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW :", SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_LOW print "SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED :", SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_MED print "SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH :", SimParams.CLSTR_TILE_PARAM_BGROUP_CCR_RANGES_HIGH #### workload scaling params #### HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'][1] * float(cc_scale_down)) print "HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR:: ---" pprint.pprint(HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR) print "-------------" # getting the reporing file name prefix exp_key = "cmb"+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \ "mmp"+str(SimParams.MMC_SMART_NODE_SELECTION_TYPE) + \ "bghops"+ '_'.join(str(i) for i in SimParams.CLSTR_TILE_PARAM_BGROUP_NGT_HOPS) subdir1 = EXP_DATADIR + wl_config + "/" + exp_key + "/" subdir2 = subdir1 + "seed_" + str(seed) + "/" final_subdir = subdir2 fname_prefix = "HEVCTileBGMPNHops__" + exp_key + "_" final_fname = fname_prefix + str(SimParams.NOC_H) + "_" + str( SimParams.NOC_W) + "_" check_fname = _get_fname(final_subdir, final_fname)['taskscompleted_fname'] print "Checking file exists : " + str(check_fname) if (_check_file_exists(check_fname) == True): print "Simulation already exists.." else: print "----------------------------------------------------------------------------------------------------------------------------" print subdir2 print "Running HEVCTile_Mapping-runSim_TileMapping-"+ fname_prefix +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \ ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + ", " + \ exp_key + \ ", seed="+str(seed) print "----------------------------------------------------------------------------------------------------------------------------" print ">> Simulation Starting : WallClock DateTime: " + time.strftime( "%c") env, last_scheduled_task_time = MMMSim.runMainSimulation( initial_rand_seed=seed, dump_workload=True) env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME) print "Simulation Ended at : %.15f" % env.now _makeDir(final_subdir) # get filenames filenames = _get_fname(final_subdir, final_fname) # name the report filenames _dump_captured_data(filenames) print ">> Everything Finished : WallClock DateTime: " + time.strftime( "%c")
def runSim_TileMapping_KaushikTuner( forced_seed=None, cmbmppri_type=None, wl_config=None, # we assume 1 vid per wf memp_select=None, k_com_sf=None): if k_com_sf == None or k_com_sf < 0: sys.exit("k_com_sf Error") seed = forced_seed print "SEED === " + str(seed) random.seed(seed) np.random.seed(seed) # get resolution list res_list = get_res_list(wl_config) # fixed params SimParams.SIM_RUNTIME = 10000 SimParams.HEVC_DUMP_FRAME_DATAFILE = False SimParams.HEVC_LOAD_FRAME_DATAFILE = False SimParams.HEVC_FRAME_GENRAND_SEED = seed SimParams.HEVC_TILELEVEL_SPLITTING_ENABLE = True SimParams.LOCAL_SCHEDULER_TYPE = LocalHEVCTilePriorityScheduler_WithDepCheck( ) SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP_HEVC_TILE_LEVEL SimParams.TASK_MODEL = TaskModel.TASK_MODEL_HEVC_TILE_LEVEL SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP_WITH_HEVCTILE SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP_WITH_HEVCTILE #SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = _get_feedback_status(cmbmppri_type) SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = False print "SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE :: ", SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE SimParams.MS_SIGNALLING_NOTIFY_FLOW_COMPLETE_ENABLE = False SimParams.RESOURCEMANAGER_USE_VOLATILE_TMTBL = True SimParams.MAPPING_PREMAPPING_ENABLED = True SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_NONE # this will be overridden SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_NONE SimParams.MMC_SMART_NODE_SELECTION_ENABLE = True SimParams.MMC_SMART_NODE_SELECTION_TYPE = memp_select SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = True SimParams.HEVC_GOPGEN_USEPROBABILISTIC_MODEL = True SimParams.NOC_W = 8 SimParams.NOC_H = 8 SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H) SimParams.NUM_WORKFLOWS = len(res_list) SimParams.DVB_RESOLUTIONS_FIXED = res_list # SimParams.DVB_RESOLUTIONS_FIXED = [ # (3840,2160), # (2560,1440), # (1920,1080), # (1280,720), # (854,480), # (640,360), # (512,288), # #(426,240), <-- not a multiple of 8 # ] # SimParams.NUM_WORKFLOWS = len(SimParams.DVB_RESOLUTIONS_FIXED) SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS SimParams.WFGEN_MIN_GOPS_PER_VID = 3 SimParams.WFGEN_MAX_GOPS_PER_VID = 3 SimParams.WFGEN_INITIAL_VID_GAP_MIN = 0.0 SimParams.WFGEN_INITIAL_VID_GAP_MAX = 0.1 SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR = k_com_sf print "SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR : ", SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR pprint.pprint(SimParams.DVB_RESOLUTIONS_FIXED) pprint.pprint(SimParams.NUM_WORKFLOWS) # getting the reporing file name prefix exp_key = "cmb"+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \ "mmp"+str(SimParams.MMC_SMART_NODE_SELECTION_TYPE) + \ "ksf"+str(SimParams.CLSTR_TILE_PARAM_KAUSHIKS_ALGO_COMMS_SCALEUP_FACTOR) subdir1 = EXP_DATADIR + wl_config + "/" + exp_key + "/" subdir2 = subdir1 + "seed_" + str(seed) + "/" final_subdir = subdir2 fname_prefix = "HEVCTileSplitTest__" + exp_key + "_" final_fname = fname_prefix + str(SimParams.NOC_H) + "_" + str( SimParams.NOC_W) + "_" check_fname = _get_fname(final_subdir, final_fname)['taskscompleted_fname'] print "Checking file exists : " + str(check_fname) if (_check_file_exists(check_fname) == True): print "Simulation already exists.." else: print "----------------------------------------------------------------------------------------------------------------------------" print subdir2 print "Running HEVCTile_Mapping-runSim_TileMapping-"+ fname_prefix +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \ ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + ", " + \ exp_key + \ ", seed="+str(seed) print "----------------------------------------------------------------------------------------------------------------------------" print ">> Simulation Starting : WallClock DateTime: " + time.strftime( "%c") env, last_scheduled_task_time = MMMSim.runMainSimulation( initial_rand_seed=seed, dump_workload=True) env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME) print "Simulation Ended at : %.15f" % env.now _makeDir(final_subdir) # get filenames filenames = _get_fname(final_subdir, final_fname) # name the report filenames _dump_captured_data(filenames) print ">> Everything Finished : WallClock DateTime: " + time.strftime( "%c")
def runSim_TileMapping_varCCR( forced_seed=None, cmbmppri_type=None, wl_config=None, # we assume 1 vid per wf memp_select=None, cc_scale_down=None): seed = forced_seed print "SEED === " + str(seed) random.seed(seed) np.random.seed(seed) # get resolution list res_list = get_res_list(wl_config) # fixed params SimParams.SIM_RUNTIME = 10000 SimParams.HEVC_DUMP_FRAME_DATAFILE = False SimParams.HEVC_LOAD_FRAME_DATAFILE = False SimParams.HEVC_FRAME_GENRAND_SEED = seed SimParams.HEVC_TILELEVEL_SPLITTING_ENABLE = True SimParams.LOCAL_SCHEDULER_TYPE = LocalHEVCTilePriorityScheduler_WithDepCheck( ) SimParams.SIM_ENTITY_RESOURCEMANAGER_CLASS = RMTypes.OPENLOOP SimParams.SIM_ENTITY_CPUNODE_CLASS = CPUTypes.OPENLOOP_HEVC_TILE_LEVEL SimParams.TASK_MODEL = TaskModel.TASK_MODEL_HEVC_TILE_LEVEL SimParams.SIM_ENTITY_MAPPER_CLASS = MapperTypes.OPENLOOP_WITH_HEVCTILE SimParams.SIM_ENTITY_TASKDISPATCHER_CLASS = TDTypes.OPENLOOP_WITH_HEVCTILE #SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = _get_feedback_status(cmbmppri_type) SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE = False print "SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE :: ", SimParams.MS_SIGNALLING_NOTIFY_TASK_COMPLETE_ENABLE SimParams.MS_SIGNALLING_NOTIFY_FLOW_COMPLETE_ENABLE = False SimParams.RESOURCEMANAGER_USE_VOLATILE_TMTBL = True SimParams.MAPPING_PREMAPPING_ENABLED = True SimParams.COMBINED_MAPPING_AND_PRIASS = cmbmppri_type SimParams.DYNAMIC_TASK_MAPPING_SCHEME = TaskMappingSchemes.TASKMAPPINGSCHEMES_NONE # this will be overridden SimParams.DYNAMIC_TASK_PRIASS_SCHEME = TaskSemiDynamicPrioritySchemes.TASKSEMIDYNAMICPRIORITYSCHEMES_NONE SimParams.MMC_SMART_NODE_SELECTION_ENABLE = True SimParams.MMC_SMART_NODE_SELECTION_TYPE = memp_select SimParams.MMC_ENABLE_DATATRANSMISSION_MODELLING = True SimParams.HEVC_GOPGEN_USEPROBABILISTIC_MODEL = True SimParams.NOC_W = 6 SimParams.NOC_H = 6 SimParams.NUM_NODES = (SimParams.NOC_W * SimParams.NOC_H) SimParams.NUM_WORKFLOWS = len(res_list) SimParams.DVB_RESOLUTIONS_FIXED = res_list # SimParams.NUM_WORKFLOWS = 1 # SimParams.DVB_RESOLUTIONS_FIXED = [#(3840,2160), # #(2560,1440), # #(1920,1080), # #(1280,720), # #(854,480), # (640,360), # #(512,288), # #(426,240), <-- not a multiple of 8 # ] SimParams.DVB_RESOLUTIONS_SELECTED_RANDOM = False SimParams.NUM_INPUTBUFFERS = SimParams.NUM_WORKFLOWS SimParams.WFGEN_MIN_GOPS_PER_VID = 5 SimParams.WFGEN_MAX_GOPS_PER_VID = 5 SimParams.WFGEN_INITIAL_VID_GAP_MIN = 0.0 SimParams.WFGEN_INITIAL_VID_GAP_MAX = 0.1 pprint.pprint(SimParams.DVB_RESOLUTIONS_FIXED) pprint.pprint(SimParams.NUM_WORKFLOWS) # scale down the computation cost of CU decoding HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['ICU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['PCU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['BCU'][1] * float(cc_scale_down)) HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'] = ( HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'][0] * float(cc_scale_down), HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR['SkipCU'][1] * float(cc_scale_down)) print "------" print "new HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR ::" pprint.pprint(HEVCWLP.HEVCWLPARAMS_SCALE_FACTOR) print "------" cc_scale_down_str_rep_withoutdot = str(cc_scale_down).replace(".", "") # getting the reporing file name prefix exp_key = "ac"+str(SimParams.AC_TEST_OPTION) + \ "mp"+str(SimParams.DYNAMIC_TASK_MAPPING_SCHEME)+ \ "pr"+str(SimParams.DYNAMIC_TASK_PRIASS_SCHEME)+ \ "cmb"+str(SimParams.COMBINED_MAPPING_AND_PRIASS) + \ "mmp"+str(SimParams.MMC_SMART_NODE_SELECTION_TYPE) +\ "ccrs"+str(cc_scale_down_str_rep_withoutdot) subdir1 = EXP_DATADIR + wl_config + "/" + exp_key + "/" subdir2 = subdir1 + "seed_" + str(seed) + "/" final_subdir = subdir2 fname_prefix = "HEVCTileSplitTest__" + exp_key + "_" final_fname = fname_prefix + str(SimParams.NOC_H) + "_" + str( SimParams.NOC_W) + "_" check_fname = _get_fname(final_subdir, final_fname)['taskscompleted_fname'] print "Checking file exists : " + str(check_fname) if (_check_file_exists(check_fname) == True): print "Simulation already exists.." else: print "----------------------------------------------------------------------------------------------------------------------------" print subdir2 print "Running HEVCTile_Mapping-runSim_TileMapping-"+ fname_prefix +": num_wf=" + str(SimParams.NUM_WORKFLOWS) + \ ", noc_h="+str(SimParams.NOC_H)+","+"noc_w="+str(SimParams.NOC_W) + ", " + \ exp_key + \ ", seed="+str(seed) print "----------------------------------------------------------------------------------------------------------------------------" env, last_scheduled_task_time = MMMSim.runMainSimulation( initial_rand_seed=seed, dump_workload=True) env.run(until=last_scheduled_task_time + SimParams.SIM_RUNTIME) print "Simulation Ended at : %.15f" % env.now _makeDir(final_subdir) # get filenames filenames = _get_fname(final_subdir, final_fname) # name the report filenames _dump_captured_data(filenames)