@@ -13,69 +13,56 @@ function logs_to_chrome_trace(logs::Dict)
13
13
tid_to_uid = Dict {Int,UInt} ()
14
14
uid_to_name = Dict {UInt,String} ()
15
15
add_unknown_procs_metadata = false
16
- for w in keys (logs)
17
- for idx in 1 : length (logs[w][:core ])
18
- category = logs[w][:core ][idx]. category
19
- kind = logs[w][:core ][idx]. kind
20
- if category == :compute
21
- tid = logs[w][:id ][idx]. thunk_id # thunk id
22
- if ! haskey (execution_logs, tid)
23
- execution_logs[tid] = Dict {Symbol,Any} ()
24
- end
25
- if kind == :start
26
- # start time
27
- execution_logs[tid][:ts ] = logs[w][:core ][idx]. timestamp / 1e3 # us
28
- # proc
29
- proc = logs[w][:id ][idx]. processor
30
- if proc isa Dagger. ThreadProc
31
- execution_logs[tid][:pid ] = proc. owner
32
- execution_logs[tid][:tid ] = proc. tid # thread id
33
- else
34
- @warn " Compute event for [$tid ] executed on non-Dagger.ThreadProc processor. Assigning unknown pid and tid"
35
- execution_logs[tid][:pid ] = - 1
36
- execution_logs[tid][:tid ] = - 1
37
- add_unknown_procs_metadata = true
38
- end
39
- else
40
- # stop time (temporary as duration is used in the trace format)
41
- execution_logs[tid][:_stop ] = logs[w][:core ][idx]. timestamp / 1e3 # us
42
- end
43
- elseif category == :add_thunk && kind == :start
44
- tid = logs[w][:id ][idx]. thunk_id
45
- if ! haskey (execution_logs, tid)
46
- execution_logs[tid] = Dict {Symbol,Any} ()
47
- end
48
- # auto name
49
- execution_logs[tid][:name ] = logs[w][:taskfuncnames ][idx]
50
- # uid-tid mapping for user task name
51
- if haskey (logs[w], :taskuidtotid )
52
- uid_tid = logs[w][:taskuidtotid ][idx]
53
- if uid_tid != = nothing
54
- uid, tid = uid_tid:: Pair{UInt,Int}
55
- tid_to_uid[tid] = uid
56
- end
16
+ Dagger. logs_event_pairs (logs) do w, start_idx, finish_idx
17
+ category = logs[w][:core ][start_idx]. category
18
+ if category == :compute
19
+ tid = logs[w][:id ][start_idx]. thunk_id # thunk id
20
+ if ! haskey (execution_logs, tid)
21
+ execution_logs[tid] = Dict {Symbol,Any} ()
22
+ end
23
+ t_start = logs[w][:core ][start_idx]. timestamp / 1e3 # us
24
+ t_stop = logs[w][:core ][finish_idx]. timestamp / 1e3 # us
25
+ execution_logs[tid][:ts ] = t_start
26
+ execution_logs[tid][:dur ] = t_stop - t_start
27
+ proc = logs[w][:id ][start_idx]. processor
28
+ if proc isa Dagger. ThreadProc
29
+ execution_logs[tid][:pid ] = proc. owner
30
+ execution_logs[tid][:tid ] = proc. tid # thread id
31
+ else
32
+ @warn " Compute event for [$tid ] executed on non-Dagger.ThreadProc processor. Assigning unknown pid and tid"
33
+ execution_logs[tid][:pid ] = - 1
34
+ execution_logs[tid][:tid ] = - 1
35
+ add_unknown_procs_metadata = true
36
+ end
37
+ elseif category == :add_thunk
38
+ tid = logs[w][:id ][start_idx]. thunk_id
39
+ if ! haskey (execution_logs, tid)
40
+ execution_logs[tid] = Dict {Symbol,Any} ()
41
+ end
42
+ # auto name
43
+ fname = logs[w][:taskfuncnames ][start_idx]
44
+ execution_logs[tid][:name ] = fname
45
+ # uid-tid mapping for user task name
46
+ if haskey (logs[w], :taskuidtotid )
47
+ uid_tid = logs[w][:taskuidtotid ][start_idx]
48
+ if uid_tid != = nothing
49
+ uid, tid = uid_tid:: Pair{UInt,Int}
50
+ tid_to_uid[tid] = uid
57
51
end
58
- elseif category == :data_annotation && kind == :start
59
- # user task name
60
- id = logs[w][:id ][idx]:: NamedTuple
61
- name = String (id. name)
62
- obj = id. objectid:: Dagger.LoggedMutableObject
63
- objid = obj. objid
64
- uid_to_name[objid] = name
65
52
end
53
+ elseif category == :data_annotation
54
+ # user task name
55
+ id = logs[w][:id ][start_idx]:: NamedTuple
56
+ name = String (id. name)
57
+ obj = id. objectid:: Dagger.LoggedMutableObject
58
+ objid = obj. objid
59
+ uid_to_name[objid] = name
66
60
end
67
61
end
68
62
events = Vector {Dict{Symbol,Any}} ()
69
63
for (tid, v) in execution_logs
70
- if ! haskey (v, :ts ) || ! haskey (v, :_stop )
71
- continue
72
- end
73
- v[:dur ] = v[:_stop ] - v[:ts ]
74
- delete! (v, :_stop )
75
-
76
64
v[:ph ] = " X"
77
65
v[:cat ] = " compute"
78
-
79
66
# replace auto name with user task name if present
80
67
if haskey (tid_to_uid, tid)
81
68
uid = tid_to_uid[tid]
0 commit comments