This runs the same set of doublet simulations using different chunk sizes and prints the results to the terminal to show find which chunk size is optimal.
It runs each chunk size 3 times and takes the average of their times to find the time taken for that chunk size.
The chunks which are tested go from 1 -> n_simulations with steps of chunk_step_size.
Parameters
----------
n_simulations : int
The number of simulations which are run in parralel
chunk_step_size : int
The step size of chunks to test; going from 1 to n_simulations
plot_outfile : str | Path
If provided a plot is made showing the time taken per-chunk size and saved to this path
print(f"parralel simulation, chunk size: {sample_chunk}, took {np.mean(time_attempt):.1f} seconds to run {n_simulations} simulations, {n_simulations/mean_time[-1]:.1f} samples per second")