def METHOD_NAME(func, cases, comm, broadcast=False):
    """
    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
    ----------
    func : function
        The function to execute in workers.
    cases : collection 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.
    comm : MPI communicator or None
        The MPI communicator that is shared between the master and workers.
        If None, the function will be executed serially.
    broadcast : bool(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.
    """
    if comm is not None:
        if comm.rank == 0:  # master rank
            if trace:
                debug('Running Master Rank')
            results = _concurrent_eval_lb_master(cases, comm)
            if trace:
                debug('Master Rank Complete')
        else:
            if trace:
                debug('Running Worker Rank %d' % comm.rank)
            results = _concurrent_eval_lb_worker(func, comm)
            if trace:
                debug('Running Worker Rank %d Complete' % comm.rank)
        if broadcast:
            results = comm.bcast(results, root=0)
    else:  # serial execution
        results = []
        for args, kwargs in cases:
            try:
                if kwargs:
                    retval = func(*args, **kwargs)
                else:
                    retval = func(*args)
            except Exception:
                err = traceback.format_exc()
                retval = None
            else:
                err = None
            results.append((retval, err))
    return results