@@ -123,6 +123,18 @@ function Base.show(io::IO, t::EagerThunk)
123
123
print (io, " EagerThunk ($(isready (t) ? " finished" : " running" ) )" )
124
124
end
125
125
126
+ function spawn (f, args... ; kwargs... )
127
+ if myid () == 1
128
+ Dagger. Sch. init_eager ()
129
+ future = ThunkFuture ()
130
+ uid = next_id ()
131
+ put! (Dagger. Sch. EAGER_THUNK_CHAN, (future, uid, f, (args... ,), (kwargs... ,)))
132
+ EagerThunk (future, uid)
133
+ else
134
+ remotecall_fetch (spawn, 1 , f, args... ; kwargs... )
135
+ end
136
+ end
137
+
126
138
"""
127
139
@par [opts] f(args...) -> Thunk
128
140
@@ -172,11 +184,8 @@ function _par(ex::Expr; lazy=true, recur=true, opts=())
172
184
return :(Dagger. delayed ($ (esc (f)); $ (opts... ))($ (_par .(args; lazy= lazy, recur= false )... )))
173
185
else
174
186
return quote
175
- Dagger. Sch. init_eager ()
176
- future = $ ThunkFuture ()
177
- uid = $ next_id ()
178
- put! (Dagger. Sch. EAGER_THUNK_CHAN, (future, uid, $ (esc (f)), ($ (_par .(args; lazy= lazy, recur= false )... ),), ($ (opts... ),)))
179
- EagerThunk (future, uid)
187
+ args = ($ (_par .(args; lazy= lazy, recur= false )... ),)
188
+ $ spawn ($ (esc (f)), args... ; $ (opts... ))
180
189
end
181
190
end
182
191
else
0 commit comments