Hi
Despite having read
Foreman-Mackey et al. (2013) I'm a little new to MCMC and still slightly confused about the purpose of RedBlueMove... I wonder if someone could advise me?
If I understand it correctly - the assumption is that in a parallel run, there will be more chains than CPUs available. Therefore when proposing a move for chain i at time t, we don't have access to the positions X_{j,t-1} of all the other chains j at time t-1. This is because some are still waiting for a CPU to become available to compute them, so the most recent position we have for them is X_{j,t-2}. And unfortunately (- waves hands vaguely -) that upsets the mixing properties of the chains.
RedBlueMove fixes this by splitting the chains into two groups and alternating between computing group 1 (in parallel) and group 2 (in parallel). Thus if we base move proposals on the other group, we always have access to X_{j,t-1} and (- waves hands vaguely -) the mixing is acceptable.
If the above is correct, I'm in a situation where the assumptions don't hold: having long burn in times I want to prioritize computing long chains over many chains. I thus have one CPU per chain, meaning RedBlueMove will waste 50% of the CPUs by only computing half the chains at once.
Will it work to simply compute all chains in a single group? My log likelihood functions all take similar time to compute so that way little CPU time is lost waiting for the results of all X_{j,t-1} before proposing moves for t.
Or does this somehow upset the mixing process?
Thank you
Crispin