def execute_msr(init_goals, rule_classes, use_mpi=True): if not use_mpi: logger = init_logger("msr", log_file="msr.log") log_info(logger,"Started") rewrite_loop(rule_classes, init_goals, logger, (lambda: lambda: None), (lambda _: None), (lambda x: None), None ) log_info(logger,"Shutting Down!") else: comm = MPI.COMM_WORLD rank = comm.Get_rank() # Check rules for dynamic spawning pattern. allow_dynamic_spawning = False for rule_class in rule_classes: rule = rule_class() if rule.req_dynamic_spawning: allow_dynamic_spawning = True break if allow_dynamic_spawning: mp = MSRMasterProcess(rank, init_goals, rule_classes, file_logging=True, output_file="output.log") mp.start() else: logger = init_logger("rank_%s" % rank, log_file="rank_%s.log" % rank) output_logger = init_logger("output", log_file="output.log") log_info(logger,"Started") init_goals = filter_goals_by_rank(init_goals, rank) rewrite_loop(rule_classes, init_goals, logger, receive_fact_future_mpi, send_facts, lambda x: None, lift(loc(rank)), output_logger=output_logger) log_info(logger,"Shutting Down!")
def initialize(self, rank, sleep_length=0.1, sleep_factor=2, sleep_limit=4, init_workers=1, file_logging=False): self.rank = rank self.master_channel = Queue() self.worker_procs = {} self.worker_channels = {} self.sleep_length = sleep_length self.sleep_factor = sleep_factor self.sleep_limit = sleep_limit self.curr_sleep_length = sleep_length self.curr_sleep_limit = sleep_limit self.init_workers = init_workers self.file_logging = file_logging if file_logging: master_log_file = "master_%s.log" % rank else: master_log_file = None self.logger = init_logger("master_%s" % rank, log_file=master_log_file)
def __init__(self, rank, init_goals, rule_classes, sleep_length=0.1, sleep_factor=2, sleep_limit=3, init_workers=1, file_logging=False, output_file=None): self.initialize(rank, sleep_length=sleep_length, sleep_factor=sleep_factor, sleep_limit=sleep_limit ,init_workers=init_workers, file_logging=file_logging) self.init_goals = filter_goals_by_rank(init_goals, rank) self.rule_classes = rule_classes if not (output_file == None): self.output_logger = init_logger("output", log_file=output_file) else: self.output_logger = None
def initialize(self, rank, proc_id, worker_channel, master_channel, file_logging=False): self.rank = rank self.proc_id = proc_id self.worker_channel = worker_channel self.master_channel = master_channel self.proc = None if file_logging: worker_log_file = "worker_%s_%s.log" % (rank,proc_id) else: worker_log_file = None self.logger = init_logger("worker_%s_%s" % (rank,proc_id), log_file=worker_log_file)
def initialize(self, rank, proc_id, worker_channel, master_channel, file_logging=False): self.rank = rank self.proc_id = proc_id self.worker_channel = worker_channel self.master_channel = master_channel self.proc = None if file_logging: worker_log_file = "worker_%s_%s.log" % (rank, proc_id) else: worker_log_file = None self.logger = init_logger("worker_%s_%s" % (rank, proc_id), log_file=worker_log_file)