Skip to content

Commit 42597ff

Browse files
committed
logging: Add TaskFunctionNames event
1 parent 0f07a91 commit 42597ff

File tree

5 files changed

+29
-7
lines changed

5 files changed

+29
-7
lines changed

ext/GraphVizExt.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function Dagger.render_logs(logs::Dict, ::Val{:graphviz}; disconnected=false,
8484
if category == :add_thunk && kind == :start
8585
id::NamedTuple
8686
taskdeps = logs[w][:taskdeps][idx]::Pair{Int,Vector{Int}}
87-
taskname = logs[w][:tasknames][idx]::String
87+
taskname = logs[w][:taskfuncnames][idx]::String
8888
tid, deps = taskdeps
8989
v = get!(tid_to_vertex, tid) do
9090
add_vertex!(g)

ext/JSON3Ext.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ function logs_to_chrome_trace(logs::Dict)
3737
if !haskey(execution_logs, tid)
3838
execution_logs[tid] = Dict{Symbol,Any}()
3939
end
40-
taskname = logs[w][:tasknames][start_idx]
41-
fname = first(split(taskname, ' '))
40+
fname = logs[w][:taskfuncnames][start_idx]
4241
execution_logs[tid][:name] = fname
4342
end
4443
end
@@ -63,4 +62,4 @@ function Dagger.show_logs(io::IO, logs::Dict, ::Val{:chrome_trace})
6362
JSON3.write(io, logs_to_chrome_trace(logs))
6463
end
6564

66-
end # module JSON3Ext
65+
end # module JSON3Ext

ext/PlotsExt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ function logs_to_df(logs::Dict, ::Val{:execution}; colors=_default_colors, name_
3535
kind = logs[w][:core][idx].kind::Symbol
3636
if category == :add_thunk && kind == :start
3737
tid = logs[w][:id][idx].thunk_id::Int
38-
if haskey(logs[w], :tasknames)
39-
fn_names[tid] = first(split(logs[w][:tasknames][idx]::String, ' '))
38+
if haskey(logs[w], :taskfuncnames)
39+
fn_names[tid] = logs[w][:taskfuncnames][idx]::String
4040
else
4141
@warn "Task names missing from logs"
4242
fn_names[tid] = "unknown"

src/utils/logging-events.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,24 @@ func_name(f::Function) = nameof(f)
119119
func_name(x) = repr(x)
120120
func_name(::Dagger.ExpandedBroadcast{F}) where F = Symbol('.', nameof(F))
121121

122+
"""
123+
TaskFunctionNames
124+
125+
Records the function name of each task.
126+
"""
127+
struct TaskFunctionNames end
128+
function (::TaskFunctionNames)(ev::Event{:start})
129+
if ev.category == :add_thunk
130+
f = Dagger.chunktype(ev.timeline.f)
131+
if hasproperty(f, :instance) && isdefined(f, :instance)
132+
f = f.instance
133+
end
134+
return String(func_name(f))
135+
end
136+
return
137+
end
138+
(td::TaskFunctionNames)(ev::Event{:finish}) = nothing
139+
122140
"""
123141
TaskArguments
124142

src/utils/logging.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Extra events:
1010
- `timeline::Bool`: Enables raw "timeline" values, which are event-specific; not recommended except for debugging
1111
- `all_task_deps::Bool`: Enables all task dependency-related logging
1212
- `tasknames::Bool`: Enables generating unique task names for each task
13+
- `taskfuncnames::Bool`: Enables reporting of task function names for each task
1314
- `taskdeps::Bool`: Enables reporting of upstream task dependencies (as task IDs) for each task argument
1415
- `taskargs::Bool`: Enables reporting of upstream non-task dependencies (as `objectid` hash) for each task argument
1516
- `taskargmoves::Bool`: Enables reporting of copies of upstream dependencies (as original and copy `objectid` hashes) for each task argument
@@ -22,6 +23,7 @@ function enable_logging!(;metrics::Bool=true,
2223
timeline::Bool=false,
2324
all_task_deps::Bool=false,
2425
tasknames::Bool=true,
26+
taskfuncnames::Bool=false,
2527
taskdeps::Bool=true,
2628
taskargs::Bool=false,
2729
taskargmoves::Bool=false,
@@ -36,7 +38,7 @@ function enable_logging!(;metrics::Bool=true,
3638
ml[:timeline] = TimespanLogging.Events.TimelineMetrics()
3739
end
3840
if all_task_deps
39-
tasknames = true
41+
taskfuncnames = true
4042
taskdeps = true
4143
taskargs = true
4244
taskargmoves = true
@@ -47,6 +49,9 @@ function enable_logging!(;metrics::Bool=true,
4749
if tasknames
4850
ml[:tasknames] = Dagger.Events.TaskNames()
4951
end
52+
if taskfuncnames
53+
ml[:taskfuncnames] = Dagger.Events.TaskFunctionNames()
54+
end
5055
if taskdeps
5156
ml[:taskdeps] = Dagger.Events.TaskDependencies()
5257
end

0 commit comments

Comments
 (0)