message: we don't save event.name for the sake of memory saving. therefore we need to do it when we flush out xevents.
diff: @@ -65,6 +65,9 @@ void CreateXEvent(const CuptiTracerEvent& event, XPlaneBuilder* plane,
  return;
  }
  std::string kernel_name = port::MaybeAbiDemangle(event.name.c_str());
  + if (kernel_name.empty()) {
  + kernel_name = GetTraceEventTypeName(event.type);
  + }
  XEventMetadata* event_metadata = plane->GetOrCreateEventMetadata(kernel_name);
  XEventBuilder xevent = line->AddEvent(*event_metadata);
  xevent.SetTimestampNs(event.start_time_ns);
  @@ -95,8 +98,7 @@ void CreateXEvent(const CuptiTracerEvent& event, XPlaneBuilder* plane,
  xevent.AddStatValue(*plane->GetOrCreateStatMetadata(
  GetStatTypeStr(StatType::kKernelDetails)),
  kernel_details);
  - }
  - if (event.type == CuptiTracerEventType::MemcpyH2D ||
  + } else if (event.type == CuptiTracerEventType::MemcpyH2D ||
  event.type == CuptiTracerEventType::MemcpyD2H ||
  event.type == CuptiTracerEventType::MemcpyD2D ||
  event.type == CuptiTracerEventType::MemcpyP2P ||
  