Skip to content

gds_sim.parallel

Experiment execution and process-level parallelism.

Multi-run parallelism via ProcessPoolExecutor.

execute_experiment(experiment)

Execute all simulations in an experiment, optionally in parallel.

Source code in packages/gds-sim/gds_sim/parallel.py
def execute_experiment(experiment: Experiment) -> Results:
    """Execute all simulations in an experiment, optionally in parallel."""
    all_results: list[Results] = []

    for sim in experiment.simulations:
        n_subsets = len(sim.model._param_subsets)
        total_jobs = n_subsets * sim.runs

        if total_jobs <= 1 or experiment.processes == 1:
            all_results.append(execute_simulation(sim))
        else:
            all_results.append(_parallel_simulation(sim, experiment.processes))

    return Results.merge(all_results)