concurrent.py#
Utilities for submitting function evaluations under MPI.
- openmdao.utils.concurrent.concurrent_eval(func, cases, comm, allgather=False, model_mpi=None)[source]
Run the given function concurrently on all procs in the communicator.
NOTE : This function should NOT be used if the concurrent function makes any internal collective MPI calls.
- Parameters:
- funcfunction
The function to execute in workers.
- casesiter of function args
Entries are assumed to be of the form (args, kwargs) where kwargs are allowed to be None and args should be a list or tuple.
- commMPI communicator or None
The MPI communicator that is shared between the master and workers. If None, the function will be executed serially.
- allgatherbool(False)
If True, the results will be allgathered to all procs in the comm. Otherwise, results will be gathered to rank 0 only.
- model_mpiNone or tuple
If the function in func runs in parallel, then this will be a tuple containing the total number of cases to evaluate concurrently, and the color of the cases to evaluate on this rank.
- Returns:
- object
Return from function.
- openmdao.utils.concurrent.concurrent_eval_lb(func, cases, comm, broadcast=False)[source]
Evaluate function on multiple processors with load balancing.
Runs a load balanced version of the given function, with the master rank (0) sending a new case to each worker rank as soon as it has finished its last case.
- Parameters:
- funcfunction
The function to execute in workers.
- casescollection of function args
Entries are assumed to be of the form (args, kwargs) where kwargs are allowed to be None and args should be a list or tuple.
- commMPI communicator or None
The MPI communicator that is shared between the master and workers. If None, the function will be executed serially.
- broadcastbool(False)
If True, the results will be broadcast out to the worker procs so that the return value of concurrent_eval_lb will be the full result list in every process.
- Returns:
- object
Return from function.