@@ -140,7 +140,7 @@ function _build_and_inject_function(mod::Module, ex)
140140 params = typeof (runtimefn). parameters
141141 fn_expr = GeneralizedGenerated. NGG. from_type (params[3 ])
142142
143- # Inject our externally registered module functions
143+ # Inject our externally registered module functions
144144 new_expr = ModelingToolkit. inject_registered_module_functions (fn_expr)
145145
146146 # Reconstruct the RuntimeFn's Body
@@ -273,6 +273,7 @@ function _build_function(target::JuliaTarget, rhss, args...;
273273 end
274274 end )
275275 ip_let_expr. args[2 ] = ModelingToolkit. build_expr (:block , threaded_exprs)
276+ ip_let_expr = :(@sync begin $ ip_let_expr end )
276277 elseif parallel isa DistributedForm
277278 numworks = Distributed. nworkers ()
278279 lens = Int (ceil (length (ip_let_expr. args[2 ]. args)/ numworks))
@@ -291,9 +292,11 @@ function _build_function(target::JuliaTarget, rhss, args...;
291292 resunpack_exprs = [:($ (Symbol (reducevars[iter])) = fetch ($ (spawnvars[iter]))) for iter in 1 : numworks]
292293
293294 ip_let_expr. args[2 ] = quote
294- $ spawn_exprs
295- $ (resunpack_exprs... )
296- $ (ip_let_expr. args[2 ])
295+ @sync begin
296+ $ spawn_exprs
297+ $ (resunpack_exprs... )
298+ $ (ip_let_expr. args[2 ])
299+ end
297300 end
298301 elseif parallel isa DaggerForm
299302 @assert HAS_DAGGER[] " Dagger.jl is not loaded; please do `using Dagger`"
@@ -308,9 +311,11 @@ function _build_function(target::JuliaTarget, rhss, args...;
308311 $ (Symbol (reducevar)) = collect (Dagger. delayed (vcat)($ (computevars... )))
309312 end
310313 ip_let_expr. args[2 ] = quote
311- $ delayed_exprs
312- $ reduce_expr
313- $ (ip_let_expr. args[2 ])
314+ @sync begin
315+ $ delayed_exprs
316+ $ reduce_expr
317+ $ (ip_let_expr. args[2 ])
318+ end
314319 end
315320 end
316321
0 commit comments