def __init__(self, configuration, callback=None): """ Args: - `callback`: A callback can be specified. This function will be \ called to report the advance of the simulation (useful for a \ progression bar). - `configuration`: The :class:`configuration \ <simso.configuration.Configuration>` of the simulation. Methods: """ Simulation.__init__(self) self._logger = Logger(self) self._measurements = [] task_info_list = configuration.task_info_list proc_info_list = configuration.proc_info_list self._cycles_per_ms = configuration.cycles_per_ms self.scheduler = configuration.scheduler_info.instantiate(self) try: self._etm = execution_time_models[configuration.etm]( self, len(proc_info_list)) except KeyError: print("Unknowned Execution Time Model.", configuration.etm) self._task_list = [] for task_info in task_info_list: self._task_list.append(Task(self, task_info)) # Init the processor class. This will in particular reinit the # identifiers to 0. Processor.init() # Initialization of the caches for cache in configuration.caches_list: cache.init() self._processors = [] for proc_info in proc_info_list: proc = Processor(self, proc_info) proc.caches = proc_info.caches self._processors.append(proc) # XXX: too specific. self.penalty_preemption = configuration.penalty_preemption self.penalty_migration = configuration.penalty_migration self._etm.init() self._duration = configuration.duration self.progress = Timer(self, Model._on_tick, (self, ), self.duration // 20 + 1, one_shot=False, in_ms=False) self._callback = callback self.scheduler.task_list = self._task_list self.scheduler.processors = self._processors self.results = None
def __init__(self, configuration, callback=None): """ Args: - `callback`: A callback can be specified. This function will be \ called to report the advance of the simulation (useful for a \ progression bar). - `configuration`: The :class:`configuration \ <simso.configuration.Configuration>` of the simulation. Methods: """ Simulation.__init__(self) self._logger = Logger(self) task_info_list = configuration.task_info_list proc_info_list = configuration.proc_info_list self._cycles_per_ms = configuration.cycles_per_ms self.scheduler = configuration.scheduler_info.instantiate(self) try: self._etm = execution_time_models[configuration.etm]( self, len(proc_info_list) ) except KeyError: print("Unknowned Execution Time Model.", configuration.etm) self._task_list = [] for task_info in task_info_list: self._task_list.append(Task(self, task_info)) # Init the processor class. This will in particular reinit the # identifiers to 0. Processor.init() # Initialization of the caches for cache in configuration.caches_list: cache.init() self._processors = [] for proc_info in proc_info_list: proc = Processor(self, proc_info) proc.caches = proc_info.caches self._processors.append(proc) # XXX: too specific. self.penalty_preemption = configuration.penalty_preemption self.penalty_migration = configuration.penalty_migration self._etm.init() self._duration = configuration.duration self.progress = Timer(self, Model._on_tick, (self,), self.duration // 20 + 1, one_shot=False, in_ms=False) self._callback = callback self.scheduler.task_list = self._task_list self.scheduler.processors = self._processors self.results = None
def __init__(self, configuration, callback=None): """ Args: - `callback`: A callback can be specified. This function will be \ called to report the advance of the simulation (useful for a \ progression bar). - `configuration`: The :class:`configuration \ <simso.configuration.Configuration>` of the simulation. Methods: """ Simulation.__init__(self) self._logger = Logger(self) task_info_list = configuration.task_info_list part_info_list = configuration.part_info_list proc_info_list = configuration.proc_info_list self._cycles_per_ms = configuration.cycles_per_ms self._time_partitioning = False self._donation_policy = configuration.donation_policy self._task_list = [] self._aborted_jobs = [] self._aborted_insts = [] self._aborted_jobs_times = {} self._aborted_insts_times = {} self._released_opt_jobs = 0 self._completed_opt_jobs = 0 self._released_opt_by_part = {} self._completed_opt_by_part = {} if(configuration.part_scheduler_info): self._time_partitioning = True self.part_scheduler = configuration.part_scheduler_info.instantiate(self) self.scheduler = None else: self.scheduler = configuration.scheduler_info.instantiate(self) self.scheduler.task_list = self._task_list try: self._etm = execution_time_models[configuration.etm]( self, len(proc_info_list) ) except KeyError: print("Unknowned Execution Time Model.", configuration.etm) for task_info in task_info_list: self._task_list.append(Task(self, task_info)) self._part_list = [] for part_info in part_info_list: self._part_list.append(TimePartition(self, part_info)) self._released_opt_by_part[part_info] = 0 self._completed_opt_by_part[part_info] = 0 # Init the processor class. This will in particular reinit the # identifiers to 0. Processor.init() # Initialization of the caches for cache in configuration.caches_list: cache.init() self._processors = [] for proc_info in proc_info_list: proc = Processor(self, proc_info) if(self._time_partitioning): proc.activate_time_partitioning(self.part_scheduler) for i in range(len(self._part_list)): if proc_info in part_info_list[i].cpus: self._part_list[i].cpus.append(proc) proc.caches = proc_info.caches self._processors.append(proc) # Now that processors have been added, init list of # interrupted jobs per partition for part in self._part_list: part.init_part() # XXX: too specific. self.penalty_preemption = configuration.penalty_preemption self.penalty_migration = configuration.penalty_migration self._etm.init() self._duration = configuration.duration self.progress = Timer(self, Model._on_tick, (self,), self.duration // 20 + 1, one_shot=False, in_ms=False) self._callback = callback # Add processors to either task scheduler or partition # scheduler if(self._time_partitioning): self.part_scheduler.processors = self._processors else: self.scheduler.processors = self._processors self.results = None
def __init__(self, seed): Simulation.__init__(self) self.rv = Random(seed)
def __init__(self, resource, name="Experiment"): Simulation.__init__(self) self.name = name self.resource = resource self.scheduler = None