@@ -35,7 +35,30 @@ State wrapper to hold `Libtask.CTask` model initiated from `f`.
3535function AdvancedPS. LibtaskModel (
3636 f:: AdvancedPS.AbstractGenericModel , rng:: Random.AbstractRNG , args...
3737) # Changed the API, need to take care of the RNG properly
38- return AdvancedPS. LibtaskModel (f, Libtask. TapedTask (TapedGlobals (rng), f, args... ))
38+ return AdvancedPS. LibtaskModel (
39+ f, Libtask. TapedTask (TapedGlobals (rng), f, args... ))
40+ )
41+ end
42+ # TODO : Upstream this to Turing
43+ function AdvancedPS. LibtaskModel (
44+ f:: AdvancedPS.AbstractTuringLibtaskModel , rng:: Random.AbstractRNG
45+ )
46+ return AdvancedPS. LibtaskModel (
47+ f, Libtask. TapedTask (TapedGlobals (rng), f. fargs... ; f. kwargs... )
48+ )
49+ end
50+
51+ function to_tapedtask (
52+ newf:: AdvancedPS.AbstractGenericModel , trace:: LibtaskTrace , rng:: Random.AbstractRNG
53+ )
54+ return Libtask. TapedTask (TapedGlobals (rng, get_other_global (trace)), newf)
55+ end
56+ function to_tapedtask (
57+ newf:: AdvancedPS.AbstractTuringLibtaskModel , trace:: LibtaskTrace , rng:: Random.AbstractRNG
58+ )
59+ return Libtask. TapedTask (
60+ TapedGlobals (rng, get_other_global (trace)), newf. fargs... ; newf. kwargs...
61+ )
3962end
4063
4164"""
@@ -114,7 +137,7 @@ function AdvancedPS.forkr(trace::LibtaskTrace)
114137 newf = AdvancedPS. reset_model (trace. model. f)
115138 Random123. set_counter! (rng, 1 )
116139
117- ctask = Libtask . TapedTask ( TapedGlobals (rng, get_other_global ( trace)), newf )
140+ ctask = to_tapedtask (newf, trace, rng )
118141 new_tapedmodel = AdvancedPS. LibtaskModel (newf, ctask)
119142
120143 # add backward reference
0 commit comments