def __init_join_phase(self): """Initialize all variables related to the join phase.""" # Create 'waitForWorkers' var = MetaVariable('waitForWorkers', constant_return(None), cb_handler=self.__wait_for_workers_cb) var.set_handler = self.__status_store self.create_var(var, hidden=True) # Create 'status' var = MetaVariable('status', constant_return(None), cb_handler=self.__status_cb) var.set_handler = self.__status_store self.create_var(var, hidden=True) # Create 'join_status' var = simple_metavariable('join_status', self.__join_phase.get_status) self.create_var(var) # Create 'rankCount' var = simple_metavariable('rankCount', self.__get_num_actual_workers) self.create_var(var) # Create 'workerCount' get_worker_count = self.__worker_count_fetch var = simple_metavariable('workerCount', get_worker_count) var.set_handler = self.__worker_count_store self.create_var(var) # Attach callbacks for the end of the join phase cb0 = lambda n_workers: self.call_hook('group_close_pre', n_workers) cb1 = self.__disarm_status_var cb2 = self.__mark_deadbeat_workers cb3 = self.__clear_saved_broadcast_tasks cb4 = lambda n_workers: self.call_hook('group_close_post', n_workers) self.__join_phase.add_group_close_callback(cb0) self.__join_phase.add_group_close_callback(cb1) self.__join_phase.add_group_close_callback(cb2) self.__join_phase.add_group_close_callback(cb3) self.__join_phase.add_group_close_callback(cb4)
def __init_worker_reg_variables(self): """Initialze the 'worker_ids' and 'worker registrations' variables.""" # Create 'worker_ids' iterator_value = self.registration.get_num_allocated_ranks var = MetaVariable('worker_ids', self.__worker_id_queue_fetch, singleton_iter_provider(iterator_value)) var.set_handler = self.__worker_id_queue_store self.create_var(var, hidden=True) self.create_standard_var('worker registrations', 'fifo')
def __init_task_queue(self): """Initialize all variables related to the task queue and result queue. """ # Create 'task' variable var = MetaVariable('task', self.task_queue_fetch, self.__task_queue_iter, self.__task_queue_cb) var.set_handler = self.__task_queue_store var.unwrap_stores = False self.create_var(var) # Create 'result' variable var = MetaVariable('result', self.result_queue_fetch, self.__result_queue_iter, self.__result_queue_cb) var.set_handler = self.__result_queue_store var.unwrap_stores = False self.create_var(var) # Create 'jobStatus' variable iterfunc = lambda: self.__get_all_job_status()[0] var = MetaVariable('jobStatus', self.__job_status_fetch, singleton_iter_provider(iterfunc)) self.create_var(var, hidden=True) # Create 'broadcast' variable var = MetaVariable('broadcast', self.__broadcast_task_queue_fetch) var.set_handler = self.__broadcast_task_queue_store var.unwrap_stores = False self.create_var(var, hidden=True)