@@ -140,7 +140,7 @@ function _build_and_inject_function(mod::Module, ex)
140
140
params = typeof (runtimefn). parameters
141
141
fn_expr = GeneralizedGenerated. NGG. from_type (params[3 ])
142
142
143
- # Inject our externally registered module functions
143
+ # Inject our externally registered module functions
144
144
new_expr = ModelingToolkit. inject_registered_module_functions (fn_expr)
145
145
146
146
# Reconstruct the RuntimeFn's Body
@@ -273,6 +273,7 @@ function _build_function(target::JuliaTarget, rhss, args...;
273
273
end
274
274
end )
275
275
ip_let_expr. args[2 ] = ModelingToolkit. build_expr (:block , threaded_exprs)
276
+ ip_let_expr = :(@sync begin $ ip_let_expr end )
276
277
elseif parallel isa DistributedForm
277
278
numworks = Distributed. nworkers ()
278
279
lens = Int (ceil (length (ip_let_expr. args[2 ]. args)/ numworks))
@@ -291,9 +292,11 @@ function _build_function(target::JuliaTarget, rhss, args...;
291
292
resunpack_exprs = [:($ (Symbol (reducevars[iter])) = fetch ($ (spawnvars[iter]))) for iter in 1 : numworks]
292
293
293
294
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
297
300
end
298
301
elseif parallel isa DaggerForm
299
302
@assert HAS_DAGGER[] " Dagger.jl is not loaded; please do `using Dagger`"
@@ -308,9 +311,11 @@ function _build_function(target::JuliaTarget, rhss, args...;
308
311
$ (Symbol (reducevar)) = collect (Dagger. delayed (vcat)($ (computevars... )))
309
312
end
310
313
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
314
319
end
315
320
end
316
321
0 commit comments