def min_execution_time(tg, ag, shm, logging): """ :param tg: Task Graph :param ag: Architecture Graph :param shm: System Health Map :param logging: logging file :return: (TG, AG) """ # this sounds a little stupid because there are no job specific machines... # we can Add Specific Accelerators or define different run time on different # PEs so this becomes more interesting... print ("===========================================") print ("STARTING MIN EXECUTION TIME MAPPING") for task_to_be_mapped in tg.nodes(): chosen_node = random.choice(Mapping_Functions.fastest_nodes(ag, shm)) tg.node[task_to_be_mapped]['task'].node = chosen_node ag.node[chosen_node]['PE'].mapped_tasks.append(task_to_be_mapped) ag.node[chosen_node]['PE'].utilization += tg.node[task_to_be_mapped]['task'].wcet node_speed_down = 1+((100.0-shm.node[chosen_node]['NodeSpeed'])/100) task_execution_on_node = tg.node[task_to_be_mapped]['task'].wcet*node_speed_down completion_on_node = tg.node[task_to_be_mapped]['task'].release + task_execution_on_node Scheduling_Functions_Nodes.add_tg_task_to_node(tg, ag, task_to_be_mapped, chosen_node, tg.node[task_to_be_mapped]['task'].release, completion_on_node, None) print ("\tTASK "+str(task_to_be_mapped)+" MAPPED ON NODE: "+str(chosen_node)) print ("MIN EXECUTION TIME MAPPING FINISHED...") Scheduling_Reports.report_mapped_tasks(ag, logging) return tg, ag
def MinExecutionTime(TG, AG, SHM, logging): """ :param TG: Task Graph :param AG: Architecture Graph :param SHM: System Health Map :param logging: logging file :return: (TG, AG) """ # this sounds a little stupid because there are no job specific machines... # we can Add Specific Accelerators or define different run time on different # PEs so this becomes more interesting... print("===========================================") print("STARTING MIN EXECUTION TIME MAPPING") for TaskToBeMapped in TG.nodes(): ChosenNode = random.choice( Mapping_Functions.fastest_nodes(AG, SHM, TaskToBeMapped)) TG.node[TaskToBeMapped]['Node'] = ChosenNode AG.node[ChosenNode]['PE'].MappedTasks.append(TaskToBeMapped) AG.node[ChosenNode]['PE'].Utilization += TG.node[TaskToBeMapped][ 'WCET'] NodeSpeedDown = 1 + ((100.0 - SHM.node[ChosenNode]['NodeSpeed']) / 100) TaskExecutionOnNode = TG.node[TaskToBeMapped]['WCET'] * NodeSpeedDown CompletionOnNode = TG.node[TaskToBeMapped][ 'Release'] + TaskExecutionOnNode Scheduling_Functions_Nodes.Add_TG_TaskToNode( TG, AG, TaskToBeMapped, ChosenNode, TG.node[TaskToBeMapped]['Release'], CompletionOnNode, logging) print("\tTASK " + str(TaskToBeMapped) + " MAPPED ON NODE: " + str(ChosenNode)) print("MIN EXECUTION TIME MAPPING FINISHED...") Scheduling_Reports.report_mapped_tasks(AG, logging) return TG, AG
def min_execution_time(tg, ag, shm, logging): """ :param tg: Task Graph :param ag: Architecture Graph :param shm: System Health Map :param logging: logging file :return: (TG, AG) """ # this sounds a little stupid because there are no job specific machines... # we can Add Specific Accelerators or define different run time on different # PEs so this becomes more interesting... print("===========================================") print("STARTING MIN EXECUTION TIME MAPPING") for task_to_be_mapped in tg.nodes(): chosen_node = random.choice(Mapping_Functions.fastest_nodes(ag, shm)) tg.node[task_to_be_mapped]['task'].node = chosen_node ag.node[chosen_node]['PE'].mapped_tasks.append(task_to_be_mapped) ag.node[chosen_node]['PE'].utilization += tg.node[task_to_be_mapped][ 'task'].wcet node_speed_down = 1 + ( (100.0 - shm.node[chosen_node]['NodeSpeed']) / 100) task_execution_on_node = tg.node[task_to_be_mapped][ 'task'].wcet * node_speed_down completion_on_node = tg.node[task_to_be_mapped][ 'task'].release + task_execution_on_node Scheduling_Functions_Nodes.add_tg_task_to_node( tg, ag, task_to_be_mapped, chosen_node, tg.node[task_to_be_mapped]['task'].release, completion_on_node, None) print("\tTASK " + str(task_to_be_mapped) + " MAPPED ON NODE: " + str(chosen_node)) print("MIN EXECUTION TIME MAPPING FINISHED...") Scheduling_Reports.report_mapped_tasks(ag, logging) return tg, ag