Skip to content

Commit 222cc30

Browse files
committed
switch to NVTX when available
1 parent 22564a2 commit 222cc30

File tree

4 files changed

+58
-12
lines changed

4 files changed

+58
-12
lines changed

src/KernelAbstractions.jl

+9-7
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,15 @@ end
430430
end
431431
end
432432

433+
###
434+
# Extras
435+
# - LoopInfo
436+
# - Timeline
437+
###
438+
439+
include("extras/extras.jl")
440+
import .Extras.Timeline
441+
433442
###
434443
# Backends/Implementation
435444
###
@@ -442,11 +451,4 @@ include("backends/cpu.jl")
442451
@init @require CUDAnative="be33ccc6-a3ff-5ff2-a52e-74243cff1e17" begin
443452
include("backends/cuda.jl")
444453
end
445-
446-
###
447-
# Extras
448-
# - LoopInfo
449-
###
450-
451-
include("extras/extras.jl")
452454
end #module

src/backends/cpu.jl

+7-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ end
88

99
function Event(f, args...; dependencies=nothing, progress=nothing)
1010
T = Threads.@spawn begin
11-
wait(MultiEvent(dependencies), progress)
12-
f(args...)
11+
Timeline.range "Event($(nameof(f))" begin
12+
wait(MultiEvent(dependencies), progress)
13+
Timeline.mark("Event($(nameof(f))) waiting done")
14+
f(args...)
15+
end
1316
end
1417
return CPUEvent(T)
1518
end
@@ -79,13 +82,15 @@ function __run(obj, ndrange, iterspace, args, ::Val{dynamic}) where dynamic
7982
Nthreads = N
8083
len, rem = 1, 0
8184
end
85+
Timeline.@range string(nameof(obj.f)) begin
8286
if Nthreads == 1
8387
__thread_run(1, len, rem, obj, ndrange, iterspace, args, Val(dynamic))
8488
else
8589
@sync for tid in 1:Nthreads
8690
Threads.@spawn __thread_run(tid, len, rem, obj, ndrange, iterspace, args, Val(dynamic))
8791
end
8892
end
93+
end # Timeline
8994
return nothing
9095
end
9196

src/extras/extras.jl

+1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ export @unroll
66

77
include("timeline.jl")
88
using .Timeline
9+
export Timeline
910

1011
end # module

src/extras/timeline.jl

+41-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
module Timeline
22

3+
using Requires
4+
export @range, mark
5+
36
module NVTXT
47
const LOG_FILE=Ref{IOStream}()
58
const SHOULD_LOG=Ref{Bool}(false)
@@ -91,7 +94,42 @@ module NVTXT
9194
end
9295
end # NVTXT
9396

94-
function range_push end
95-
function mark end
97+
_mark(msg) = NVTXT.mark(msg)
98+
_push_range(msg) = NVTXT.push_range(msg)
99+
_pop_range() = NVTXT.pop_range()
100+
_start_range(msg) = NVTXT.start_range(msg)
101+
_end_range(r) = NVTXT.end_range(r)
102+
103+
@init @require CUDAnative="be33ccc6-a3ff-5ff2-a52e-74243cff1e17" begin
104+
# replace implementations
105+
import CUDAnative.NVTX
106+
107+
_mark(msg) = NVTX.mark(msg)
108+
_push_range(msg) = NVTX.push_range(msg)
109+
_pop_range() = NVTX.pop_range()
110+
_start_range(msg) = NVTX.start_range(msg)
111+
_end_range(r) = NVTX.end_range(r)
112+
end
113+
114+
import Base: invokelatest
115+
mark(msg) = invokelatest(_mark, msg)
116+
push_range(msg) = invokelatest(_push_range, msg)
117+
pop_range() = invokelatest(_pop_range)
118+
start_range(msg) = invokelatest(_start_range, msg)
119+
end_range(r) = invokelatest(_end_range, r)
120+
121+
"""
122+
@range "msg" ex
123+
Create a new range and execute `ex`. The range is popped automatically afterwards.
124+
See also: [`range`](@ref)
125+
"""
126+
macro range(msg, ex)
127+
quote
128+
local range = $start_range($(esc(msg)))
129+
local ret = $(esc(ex))
130+
$end_range(range)
131+
ret
132+
end
133+
end
96134

97-
end
135+
end

0 commit comments

Comments
 (0)