Skip to content

Commit b81dd1e

Browse files
authored
Merge pull request #65 from JuliaGPU/lcw/fix_multievent
Allow MultiEvent to be created from an Event
2 parents 8cbc86e + e800edf commit b81dd1e

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/KernelAbstractions.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module KernelAbstractions
22

33
export @kernel
44
export @Const, @localmem, @private, @uniform, @synchronize, @index, groupsize, @print
5-
export Device, GPU, CPU, CUDA, Event, MultiEvent
5+
export Device, GPU, CPU, CUDA, Event, MultiEvent, NoneEvent
66
export async_copy!
77

88

@@ -73,6 +73,9 @@ struct MultiEvent{T} <: Event
7373
evs = tuplejoin(map(flatten, events)...)
7474
new{typeof(evs)}(evs)
7575
end
76+
function MultiEvent(event::E) where {E<:Event}
77+
new{Tuple{E}}((event,))
78+
end
7679
end
7780
MultiEvent(::Nothing) = MultiEvent()
7881
MultiEvent(ev::MultiEvent) = ev

test/test.jl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,24 @@ end
195195
event = kernel_empty(CPU(), 1)(ndrange=1, dependencies=(event))
196196
wait(event)
197197
end
198+
199+
@testset "MultiEvent" begin
200+
event1 = kernel_empty(CPU(), 1)(ndrange=1)
201+
event2 = kernel_empty(CPU(), 1)(ndrange=1)
202+
event3 = kernel_empty(CPU(), 1)(ndrange=1)
203+
204+
@test MultiEvent(nothing) isa Event
205+
@test MultiEvent(event1) isa Event
206+
@test MultiEvent((event1, event2, event3)) isa Event
207+
end
208+
209+
if has_cuda_gpu()
210+
@testset "MultiEvent CUDA" begin
211+
event1 = kernel_empty(CUDA(), 1)(ndrange=1)
212+
event2 = kernel_empty(CPU(), 1)(ndrange=1)
213+
event3 = kernel_empty(CUDA(), 1)(ndrange=1)
214+
215+
@test MultiEvent(event1) isa Event
216+
@test MultiEvent((event1, event2, event3)) isa Event
217+
end
218+
end

0 commit comments

Comments
 (0)