Get desktop application:
View/edit binary Protocol Buffers messages
Result database for all-reduce ops.
Used in:
Result proto for all -educe ops.
Used in:
Unique id for all-reduce ops.
The name of the hlo op.
For all-reduce nodes from different modules, if they have the same all_reduce_id, they will be 'Allreduce'd'. If empty, AllReduce will not be applied across modules.
The start time in picoseconds of the op event.
The end time in picoseconds of the op event.
The size of the op in bytes.
Used in:
A 'device' is a physical entity in the system and is comprised of several resources.
Used in:
The name of the device.
The id of this device, unique in a single trace.
The resources on this device, keyed by resource_id;
Result database for core to core flow events.
Used in:
Result proto for metrics on flow events.
Used in:
Unique id for each send and recv pair.
Channel id generated by the XLA compiler, it is statically unique within an HloModule.
The name of the hlo op.
Category of the hlo op.
The start time in picoseconds of the op event.
The end time in picoseconds of the op event.
The size of the op in bytes.
The replica id of the program running the flow event.
Indicates if kernel launch is a performance bottleneck. Possible values: "no", "moderate", "high".
A statement that recommends if we need to further investigate kernel-launch performance.
Indicates if all other is a performance bottleneck. Possible values: "no", "moderate", "high".
A statement that recommends if we need to further investigate all-other performance.
Breakdown of step-time on generic hardware. Note that these components are mutually exclusive so that adding them together is equal to the step time. If an execution time interval has multiple types of event happening, we need to pick one of the event type to attribute the time interval to.
Map event type to the accumulated duration in picoseconds of that type.
Summary of all unknown time as a part of step in ms.
Summary of all host-wait-input time as a part of step in ms.
Summary of all host-to-device time as a part of step in ms.
Summary of all input time as a part of step in ms.
Summary of all output time as a part of step in ms.
Summary of all device-compute time as a part of step in ms.
Summary of all device-to-device time as a part of step in ms.
Summary of all host-compute time as a part of step in ms.
Summary of all host-prepare time as a part of step in ms.
Summary of all compilation time as a part of step in ms.
Types of hardware profiled.
Used in:
Unknown hardware.
CPU only without any hardware accelerator.
GPU.
TPU.
Result proto for host-dependent job information.
Used in:
This ID of the host where the job was run on.
The command line used to run the job.
The start time of this run (nanoseconds since the Unix epoch).
BNS address specified by client at time of profiling request.
Profiling start walltime (in ns).
Result proto for host-independent job information.
Used in:
The change-list number of this build.
The time of this build (nanoseconds since the Unix epoch).
The target of this build.
Profiling duration (in ms).
Used in:
The Op's name.
The number of occurrences.
Time (accumulated over all occurrences) in milliseconds.
Time (accumulated over all occurrences) in percentage of the total input processing time.
Self time (accumulated over all occurrences) in milliseconds.
Self time (accumulated over all occurrences) in percentage of the total input processing time.
Possible categories: "Enqueue", "Advanced file read", "Demanded file read", "Preprocessing", "Unknown".
Used in:
A list of detailed recommendations.
Used in:
Hardware type.
Summary of all step duration across all cores.
Summary of all input-related stall as percentage of step duration.
Details of each step. Can be unpacked into a PerGenericStepDetails.
The breakdown of the input processing time.
Details of each input Op executed.
Recommendation for next steps to users.
Breakdown of the step time. Can be unpacked into a GenericStepTimeBreakdown.
Used in:
Time spent on demanded file read in microseconds.
Time spent on advanced file read in microseconds.
Time spent on data preprocessing in microseconds.
The infeed enqueue time in microseconds.
This entry is for the situtation where we can't further break down the non-enqueue input time (because the input pipeline is not instrumented).
Data layout of an op.
Used in:
The physical data layout, from most-minor to most-major dimensions.
Physical data layout in each tensor dimension.
Used in:
Size of the data in this dimension.
Data must be padded to a multiple of alignment.
What the dimension represents.
What the dimension represents, e.g. spatial, feature or batch.
Used in:
Metrics for an operation (accumulated over all occurrences). Next ID: 18
Used in:
HLO module id. 0 for TF ops.
Name of this op.
Category of this op.
Provenance of this op (e.g., if HLO op, original TF op).
Number of executions.
Total time (self + children) in picoseconds.
Minimum time (self + children) among all occurrences.
Total self time in picoseconds.
Total FLOPs.
Total bytes accessed.
Total dma stall time in picoseconds.
The data layout for this op. Only set for convolution ops for now.
Deduplicated HLO name for this op. Not set for TF ops.
Children of the op. e.g. fused ops if this op is fusion.
A database for OpMetrics. Next ID: 13
Used in: , ,
A bunch of OpMetrics.
The total host infeed-enqueue duration in picoseconds.
The total of the difference between the start times of two consecutive infeed-enqueues (per host) in picoseconds.
The total time in picoseconds.
The total time incurred by OPs in picoseconds.
Operator Statistics.
The database for the op metrics collected from the host over the entire profiling session including incomplete steps.
The database for the op metrics collected from the device over the entire profiling session including incomplete steps.
Performance environment of the op metrics collected.
The database of step sequences.
The run environment of this profiling session.
The run environment of the profiled session.
The step-time result.
The other analysis result.
The recommendation made to the user.
Overview result for general analysis.
Used in:
MXU utilization in percentage.
Percentage of the device time that is idle.
Percentage of the host time that is idle.
Top TF Ops executed on the device.
Remark text in the performance summary section.
Color of the remark text.
FLOP rate utilization relative to the roofline in percentage.
Memory bandwidth utilization relative to the hw limit in percentage.
Overview result for the recommendation section.
Used in:
Possible performance bottleneck: "host", "device", "both".
A statement that recommends the next steps for investigating the bottleneck.
A list of tips for improving host performance.
A list of tips for improving device performance.
A list of links to related useful documents.
// The recommendation made to the user. Can be unpacked into a GenericRecommendation.
A list of tips for FAQ.
A list of tips for inference run.
Overview result for a performance tip to users.
Used in:
Link to the tip.
Overview result for a TensorFlow Op.
Used in:
Name of the Op.
Category of the Op.
The amount of time that this Op takes by itself as fraction of the total execution time on the device or host.
The cumulative time upto this Op as fraction of the total execution time.
How many GFlops/sec that this Op achieves.
Result proto for information in a step across all cores.
Used in:
The step number.
A map from core_id to StepInfo.
The result for the per-step HLO-metric database.
The result for send and recv flows.
A map from core ID to program replica id. Replica id map could change during a profile session, but should stay stable within a step.
The result for all-reduce ops.hlo_metrics_db
Per-step details on generic hardware.
The step number of a step.
The step time (in ms).
Breakdown of the step time in different event categories. The unknown time (in ms).
The time (in ms) in which the host is waiting for input data to be ready.
The time (in ms) in which the host is sending input data to the device. Total input time = host_wait_input_ms + host_to_device_ms.
The output time (in ms).
The device-compute time (in ms).
The device-to-device communication time (in ms).
The host-compute time (in ms).
The host-prepare time (in ms).
The time spent on compiling (in ms).
Performance environment, e.g the peak performance capabilities of the device.
Used in:
Peak performance of a TPU core or a GPU in TFLOP/s.
Peak memory bandwidth of a TPU core or a GPU in GiBs/s.
The ridge point of roofline model in FLOP/Byte. (i.e., minimum operational intensity required to achieve maximum performance).
A 'resource' generally is a specific computation component on a device. These can range from threads on CPUs to specific arithmetic units on hardware devices.
Used in:
The name of the resource.
The id of the resource. Unique within a device.
The run environment of a profiling session.
Used in: ,
Number of hosts used.
Number of tasks used.
Distinct hostnames seen.
The type of device used.
The number of device cores used. In TPU case, this corresponds to the number of TPU cores In GPU case, this corresponds to the number of GPUs (not the number of SMs).
The per-device-core batch size.
Host-independent information about this job.
Host-dependent information about this job.
The number of replicas, corresponds to input parallelism. If there is no model parallelism, replica_count = device_core_count
The number of cores used for a single replica, e.g. model parallelism. If there is no model parallelism, then num_cores_per_replica = 1
The chip interconnection topology.
Result proto for a StepDatabase.
Used in:
A sequence of PerCoreStepInfo.
Next ID: 5 Result proto for StepInfo.
Used in:
The step number.
The step duration in picoseconds.
The start time of this step in picoseconds.
Breakdown of the step-time. Can be unpacked into a GenericStepBreakdown.
Used for both step duration and Op duration.
Used in: ,
System topology, which describes the number of chips in a pod and the connectivity style.
Used in:
The X, Y, and Z dimensions of this topology. 0 means that dimension does not exist.
The number of expected bad chips in this system.
A database of TfStatsTables.
The table that includes IDLE time.
The table that excludes IDLE time.
There is one TfStatsRecord for each TF operation profiled.
Used in:
Rank of this TF-op among all TF-ops.
Whether this TF-op is on "Host" or "Device".
TF-op type.
TF-op name.
Number of occurrences of the operation.
Total "accumulated" time in micro-seconds that the operation took. If this operation has any children operations, the "accumulated" time includes the time spent inside children.
Average "accumulated" time in micro-seconds that each occurrence of the operation took.
Total "self" time in micro-seconds that the operation took. If this operation has any children operations, the "self" time doesn't include the time spent inside children.
Average "self" time in micro-seconds that the operation took.
Total "self" time as fraction of the sum of the total self-time of operations run on the device. It is 0 if this op runs on the host.
Cumulative value of device_total_self_time_as_fraction.
Total "self" time as fraction of the sum of the total self-time of operations run on the host. It is 0 if this op runs on the device.
Cumulative value of host_total_self_time_as_fraction.
Number of floating-point operations (FLOPs) performed per second.
Number of bytes (including both read and write) accessed per second.
Operational intensity, which is defined as FLOPs/bytes-accessed.
Whether this operation is "Compute" or "Memory" bound, according to the Roofline Model.
A table of TFStatsRecords plus the corresponding pprof keys.
Used in:
All TfStats records, one for each TF operation.
key to the pprof profile for host TF operations.
key to the pprof profile for device TF operations.
A 'Trace' contains metadata for the individual traces of a system.
The devices that this trace has information about. Maps from device_id to more data about the specific device.
All trace events capturing in the profiling period.
Used in:
The id of the device that this event occurred on. The full dataset should have this device present in the Trace object.
The id of the resource that this event occurred on. The full dataset should have this resource present in the Device object of the Trace object. A resource_id is unique on a specific device, but not necessarily within the trace.
The name of this trace event.
The timestamp that this event occurred at (in picos since tracing started).
The duration of the event in picoseconds if applicable. Events without duration are called instant events.
Extra arguments that will be displayed in trace view.
An XEvent is a trace event, optionally annotated with XStats. Next ID: 6
Used in:
XEventMetadata.id of corresponding metadata.
Start time of the event in picoseconds, as offset from XLine.timestamp_ns().
Number of occurrences of the event, if aggregated.
Duration of the event in picoseconds. Can be zero for an instant event.
XStats associated with the event.
Metadata for an XEvent, shared by all instances of the same event. Next ID: 5
Used in:
XPlane.event_metadata map key.
Name of the event.
Name of the event shown in trace viewer.
Additional metadata in serialized format.
An XLine is a timeline of trace events (XEvents). Next ID: 12
Used in:
Id of this line, can be repeated within an XPlane. All XLines with the same id are effectively the same timeline.
Display id of this line. Multiple lines with the same display_id are grouped together in the same trace viewer row.
Name of this XLine.
Name of this XLine to display in trace viewer.
Start time of this line in nanoseconds since the UNIX epoch. XEvent.offset_ps is relative to this timestamp.
Profiling duration for this line in picoseconds.
XEvents within the same XLine should not overlap in time, but they can be nested.
An XPlane is a container of parallel timelines (XLines), generated by a profiling source or by post-processing one or more XPlanes. Next ID: 7
Used in:
Name of this line.
Parallel timelines grouped in this plane. XLines with the same id are effectively the same timeline.
XEventMetadata map, each entry uses the XEventMetadata.id as key. This map should be used for events that share the same ID over the whole XPlane.
XStatMetadata map, each entry uses the XStatMetadata.id as key. This map should be used for stats that share the same ID over the whole XPlane.
XStats associated with this plane, e.g. device capabilities.
A container of parallel XPlanes, generated by one or more profiling sources. Next ID: 2
An XStat is a named value associated with an XEvent, e.g., a performance counter value, a metric computed by a formula applied over nested XEvents and XStats. Next ID: 6
Used in: ,
XStatMetadata.id of corresponding metadata.
Value of this stat.
Metadata for an XStat, shared by all instances of the same stat. Next ID: 4
Used in:
XPlane.stat_metadata map key.
Name of the stat (should be short).
Description of the stat (might be long).