Example #1
0
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!")
Example #2
0
    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)
Example #3
0
	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
Example #4
0
	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)
Example #5
0
    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)
Example #6
0
	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)