Skip to content

Commit 2eb434e

Browse files
committed
MPIEvaluator: Fix logging by explicitly passing logging level
Pass the log level explicitly to the run_experiment_mpi() function. The level passed to log_to_stderr isn't available when the _logger object is initiated earlier. To migrate this problem, we explicitly pass it. The initializer first took care of that, but since that wouldn't allow multiple consecutive calls to the MPIEvaluator it had to be removed again. Now there are two sets of options: - ema_logging.log_to_stderr(level=n, set_root_logger_levels=True) --> Everything level n - ema_logging.log_to_stderr(level=n, set_root_logger_levels=False) --> Evaluator module level n, internal MPI / EMA process level 10 (default) When level=10, set_root_logger_levels True or False doesn't matter. Might have performance impact by setting up a logging.basicConfig for every experiment.
1 parent 0783435 commit 2eb434e

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

ema_workbench/em_framework/evaluators.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,11 @@ def finalize(self):
443443
def evaluate_experiments(self, scenarios, policies, callback, combine="factorial"):
444444
ex_gen = experiment_generator(scenarios, self._msis, policies, combine=combine)
445445
experiments = list(ex_gen)
446+
log_level = _logger.getEffectiveLevel()
446447

447-
packed = [(experiment, experiment.model_name, self._msis) for experiment in experiments]
448+
packed = [
449+
(experiment, experiment.model_name, self._msis, log_level) for experiment in experiments
450+
]
448451

449452
_logger.info(
450453
f"MPIEvaluator: Starting {len(packed)} experiments using MPI pool with {self._pool._max_workers} workers"
@@ -462,7 +465,9 @@ def run_experiment_mpi(packed_data):
462465

463466
rank = COMM_WORLD.Get_rank()
464467

465-
experiment, model_name, msis = packed_data
468+
experiment, model_name, msis, level = packed_data
469+
470+
logging.basicConfig(level=level, format="[%(processName)s/%(levelname)s] %(message)s")
466471
_logger.debug(f"MPI Rank {rank}: starting {repr(experiment)}")
467472

468473
models = NamedObjectMap(AbstractModel)

0 commit comments

Comments
 (0)