output_base.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Copyright (c) Meta Platforms, Inc. and affiliates.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the BSD-style license found in the
  6. * LICENSE file in the root directory of this source tree.
  7. */
  8. #pragma once
  9. #include <fstream>
  10. #include <map>
  11. #include <ostream>
  12. #include <thread>
  13. #include <unordered_map>
  14. // TODO(T90238193)
  15. // @lint-ignore-every CLANGTIDY facebook-hte-RelativeInclude
  16. #include "GenericTraceActivity.h"
  17. #include "IActivityProfiler.h"
  18. #include "ThreadUtil.h"
  19. #include "TraceSpan.h"
  20. namespace KINETO_NAMESPACE {
  21. struct ActivityBuffers;
  22. }
  23. namespace libkineto {
  24. using namespace KINETO_NAMESPACE;
  25. // Used by sortIndex to put GPU tracks at the bottom
  26. // of the trace timelines. The largest valid CPU PID is 4,194,304,
  27. // so 5000000 is enough to guarantee that GPU tracks are sorted after CPU.
  28. constexpr int64_t kExceedMaxPid = 5000000;
  29. class ActivityLogger {
  30. public:
  31. virtual ~ActivityLogger() = default;
  32. struct OverheadInfo {
  33. explicit OverheadInfo(const std::string& name) : name(name) {}
  34. const std::string name;
  35. };
  36. virtual void handleDeviceInfo(const DeviceInfo& info, uint64_t time) = 0;
  37. virtual void handleResourceInfo(const ResourceInfo& info, int64_t time) = 0;
  38. virtual void handleOverheadInfo(const OverheadInfo& info, int64_t time) = 0;
  39. virtual void handleTraceSpan(const TraceSpan& span) = 0;
  40. virtual void handleActivity(const libkineto::ITraceActivity& activity) = 0;
  41. virtual void handleGenericActivity(
  42. const libkineto::GenericTraceActivity& activity) = 0;
  43. virtual void handleTraceStart(
  44. const std::unordered_map<std::string, std::string>& metadata,
  45. const std::string& device_properties) = 0;
  46. void handleTraceStart() {
  47. handleTraceStart(std::unordered_map<std::string, std::string>(), "");
  48. }
  49. virtual void finalizeMemoryTrace(const std::string&, const Config&) = 0;
  50. virtual void finalizeTrace(
  51. const Config& config,
  52. std::unique_ptr<ActivityBuffers> buffers,
  53. int64_t endTime,
  54. std::unordered_map<std::string, std::vector<std::string>>& metadata) = 0;
  55. protected:
  56. ActivityLogger() = default;
  57. };
  58. } // namespace libkineto