Skip to content

Feature serialized stepsampler#167

Open
JohannesBuchner wants to merge 9 commits into
masterfrom
feature-serialized-stepsampler
Open

Feature serialized stepsampler#167
JohannesBuchner wants to merge 9 commits into
masterfrom
feature-serialized-stepsampler

Conversation

@JohannesBuchner

Copy link
Copy Markdown
Owner

addresses issue #159 , please help testing!

Old behaviour:
When running with MPI, step samplers can progress at different efficiencies.
The point of the first one that finishes N steps is accepted and this increases
the nested sampling likelihood threshold. The other step samplers are informed
and may revert / back track to an earlier state. This can cause some areas of
the parameter space to be explored much slower, and thus become undersampled, leading to biases.
see #159

New behaviour:
Reverting is disabled. The step sampler remembers the Lmin it was started
with, and returns the Lmin->L edge to the ReactiveNestedSampling integrator,
which stores it and may use it (unless the new Lmin is already above L).

This should reduce the issue, but is still not perfect, as the edge may
arrive too late. Ideally, we should wait until all stepsamplers at the
current Lmin have finished, but this is difficult to synchronize.

Resuming could pick up the late edges; however, we would need to sort
the point store by Lmin. This should be technically possible within
an improvement loop if we keep track of the last pointstore entry
at the start of the loop, and keep the entries since then sorted.
Without reverting, a stepsampler may return a result, but it cannot
be used anymore, even when resuming it would probably not be loaded.
With reverting, raising the Lmin should affect only the stepsamper
with probability 1/K, so the sampler has a good chance of not having
to revert back very often.

With the new queue, variation in executation duration should be less
of an issue.
@JohannesBuchner

Copy link
Copy Markdown
Owner Author

It would be great if someone could test this further with MPI for problematic behaviour, and which part of the diff introduces it. For example, what happens if _create_point and pointpile is left to the old code?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant