MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / merge_trace_events

Function merge_trace_events

imperative/python/megengine/utils/profiler.py:268–319  ·  view source on GitHub ↗
(directory: str)

Source from the content-addressed store, hash-verified

266
267
268def merge_trace_events(directory: str):
269 names = filter(
270 lambda x: re.match(r"\d+\.chrome_timeline\.json", x), os.listdir(directory)
271 )
272
273 def load_trace_events(name):
274 with open(os.path.join(directory, name), "r", encoding="utf-8") as f:
275 return json.load(f)
276
277 def find_metadata(content):
278 if isinstance(content, dict):
279 assert "traceEvents" in content
280 content = content["traceEvents"]
281 if len(content) == 0:
282 return None
283 assert content[0]["name"] == "Metadata"
284 return content[0]["args"]
285
286 contents = list(map(load_trace_events, names))
287
288 metadata_list = list(map(find_metadata, contents))
289
290 min_local_time = min(
291 map(lambda x: x["localTime"], filter(lambda x: x is not None, metadata_list))
292 )
293
294 events = []
295
296 for content, metadata in zip(contents, metadata_list):
297 local_events = content["traceEvents"]
298 if len(local_events) == 0:
299 continue
300
301 local_time = metadata["localTime"]
302 time_shift = local_time - min_local_time
303
304 for event in local_events:
305 if "ts" in event:
306 event["ts"] = int(event["ts"] + time_shift)
307
308 events.extend(filter(lambda x: x["name"] != "Metadata", local_events))
309
310 result = {
311 "traceEvents": events,
312 }
313
314 path = os.path.join(directory, "merge.chrome_timeline.json")
315
316 with open(path, "w") as f:
317 json.dump(result, f, ensure_ascii=False, separators=(",", ":"))
318
319 get_logger().info("profiling results written to {}".format(path))
320
321
322def is_profiling():

Callers 1

mainFunction · 0.90

Calls 9

filterFunction · 0.85
listFunction · 0.85
get_loggerFunction · 0.85
joinMethod · 0.80
minFunction · 0.50
matchMethod · 0.45
dumpMethod · 0.45
infoMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected