Open mmider opened 5 years ago
I will start with the updates of the starting point
Re-sampling of the starting point is done. Now, I will try to take on parallelisation of I just had a quick glance through the documentation of the Julia's multi-threading modules. There are way too many experimental qualifiers for my liking and considering that for partially observed setting it is only possible to parallelise the imputation step via blocking and the parameter update step is unchanged, best case scenario we can cut down computational time in half. Consequently, I am downgrading the importance of parallelisation and instead I will now take care of making conjugate updates work with the FPT setting. for loops
.
Edit: I realised that parameter update step can be changed so that it is parallelisable for blocking, which means that in theory parallelisation of for loops
can bring down the run time of the algorithm at a rate proportional to the number of threads. In that case it is worth pursuing even in spite of experimental qualifiers.
I read through Frank's implementation of the MALA step in the Bridge.jl repository for adjusting the starting point. It's very nice, I am a big fan of this idea. I will try my best to replicate this for parameter updates.
rho
of the preconditioned Crank-Nicolson scheme in each block (when sampling under blocking scheme)theta
that target acceptance rate 0.234.for loops
iterating over block updatesP
,XX
,WW
etc. for blocking object and use general ones instead. This needs some care to prevent losing performance.P
,XX
,WW
etc. that are passed around and group them together intelligently to reduce the number of arguments passed to functions.mean path
is re-computed over and over again using Interpolations.jl, but it could be done only once, by revealing it at a time-grid needed by the ODE solvers and then retrieving the values via indexed time(t,i)
(for that,indexed time
instead oftime
would have needed to be passed to functions evaluating auxiliary drift). Fix that.guid_prop_bridge.jl
and adjust the solver appropriately (mainly by gathering together the objects that are passed around)DifferentialEquations.jl
and maybe modularising the package a little (considering the mcmc-related functions can be gathered together without having to relate to diffusions at all)Edit by @mschauer: