Skip to content

[OV][ITT][GPU Plugin] Enable default ITT markers for inference and op submission#33313

Merged
praasz merged 10 commits intoopenvinotoolkit:masterfrom
tovinkere:itt_markers_gpu
Feb 20, 2026
Merged

[OV][ITT][GPU Plugin] Enable default ITT markers for inference and op submission#33313
praasz merged 10 commits intoopenvinotoolkit:masterfrom
tovinkere:itt_markers_gpu

Conversation

@tovinkere
Copy link
Copy Markdown
Contributor

@tovinkere tovinkere commented Dec 18, 2025

  • Enables default ITT markers for higher level operations such as inference pass, op preparation and submission
  • Follows the same guidelines to standardize the conventions for namespaces: ov::phases::gpu::inference ov::op::gpu
  • Supports both synchronous and asynchronous operations

Enabling default GPU ITT markers using standard convention - Part 3

This PR is the third of a series of PRs to standardize the ITT markers in OpenVINO that will be enabled by default through host-side instrumentation.

  1. The first PR addresses the enhancements required in ITT and the framework to support the creation and propagation of IDs when asynchronous execution is in play PR#33639.
  2. The second PR will standardize ITT markers in the CPU and enhance support to include asynchronous execution PR#33312.
  3. This third PR will enable default markers for GPU plugin to allow visibility into inference pass begin/end and operator preparation and submission within each inference. Follow standardized conventions as described in 1 and 2
  4. The final PR will extend the same host side markers for NPU execution, which capturing the inference span and pipeline activity.

Summary of the current PR (PR#3)

Use the same convention standardized in PR#33639
Ensures the namespace for GPU Plugin activity falls under:
ov::phases::gpu::inference
ov::op::gpu

Details:
GPU support is enabled with default ITT markers that support synchronous an asynchronous execution. This PR ensures a standardized convention is followed in namespaces used.

Tickets:
CVS-179230

@isanghao Please review this as you are generally aware of what was discussed

- Enables default ITT markers for higher level operations
  such as inference pass, op preparation and submission
- Follows the same guidelines to standardize the conventions
  for namespaces:
   ov::phases::gpu::inference
   ov::op::gpu
- Supports both synchronous and asynchronous operations

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
@tovinkere tovinkere requested review from a team as code owners December 18, 2025 20:07
@github-actions github-actions bot added the category: GPU OpenVINO GPU plugin label Dec 18, 2025
@sys-openvino-ci sys-openvino-ci added the ExternalIntelPR External contributor from Intel label Dec 18, 2025
+ Adding base markers for node execution instead of
  a prepare() and execute()

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
void SyncInferRequest::infer() {
OV_ITT_SCOPED_TASK(itt::domains::intel_gpu_plugin, "SyncInferRequest::infer");
// String can be constructed once in the constructor
OV_ITT_SCOPED_TASK_BASE(itt::domains::intel_gpu_inference, "SyncInferRequestGPU::infer" + m_graph->get_runtime_model()->get_name());
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

out of curiosity, is it OK to change the name here? you commented not to change the name in other place.. [Warning] The strings in ITT_SCOPED_TASK_BASE should NOT be deleted or edited!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@isanghao Please suggest what changes you need. I tried to make the strings in TASK_BASE to be similar for all plugins.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean, you changed the name from SyncInferRequest to SyncInferRequestGPU. If it is OK to change the name, why do you leave comment that we should not change the name?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@isanghao Previous task definition was incomplete. Also, it is not enabled by default. I enable the task by default using OV_ITT_SCOPED_TASK_BASE macro and renamed the string to be indicative of being executed by the GPU plugin. This new string cannot be changed as it acts as a SW contract and all tools that use this data will rely on the strings being invariant.

@p-durandin
Copy link
Copy Markdown
Contributor

build_jenkins

tovinkere and others added 3 commits January 20, 2026 13:54
- This update fixes the GPU runtime performance regressions
  due to increased submission times. By caching the required
  string for each inference, the overheads are eliminated.

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
@aobolensk
Copy link
Copy Markdown
Contributor

build_jenkins

#include "intel_gpu/runtime/debug_configuration.hpp"

#include <algorithm>
#include <functional>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please do not include style fix in the PR. It makes review difficult.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@isanghao Previous PRs had clang-format failures on changed files, so not I run clang-format as recommended by @praasz. Can defer this till the end in the future.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need to reformat the whole file. You can just change the problematic line to pass the test..

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should consistent with current style in GPU, @isanghao has greater experience in this component I would follow his suggestions

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
- Moving string constructor to where it is used

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
@tovinkere
Copy link
Copy Markdown
Contributor Author

@praasz @aobolensk @isanghao Any progress or next steps?

@aobolensk
Copy link
Copy Markdown
Contributor

build_jenkins

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
- Also update the strings to be consistent across
  all plugins

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
@tovinkere
Copy link
Copy Markdown
Contributor Author

@isanghao The style changes have been removed as requested. Should be easily reviewable now.

Copy link
Copy Markdown
Contributor

@aobolensk aobolensk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
@aobolensk
Copy link
Copy Markdown
Contributor

build_jenkins

Copy link
Copy Markdown
Contributor

@isanghao isanghao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM for GPU

OV_ITT_DOMAIN(intel_gpu_inference, "ov::phases::gpu::inference");
// Domain namespace for all of the operators
OV_ITT_DOMAIN(intel_gpu_op, "ov::op::gpu");
OV_ITT_DOMAIN(intel_gpu_plugin);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be beneficial to define this domain name as ov::intel_gpu_plugin to maintain consistency with other domains. This ensures the ov:: prefix is present, making it easier for profiling tools to filter and capture all ov events

Suggested change
OV_ITT_DOMAIN(intel_gpu_plugin);
OV_ITT_DOMAIN(intel_gpu_plugin, "ov::intel_gpu_plugin");

@tovinkere
Copy link
Copy Markdown
Contributor Author

@isanghao @praasz Is this going to be merged?

@praasz praasz added this to the 2026.1 milestone Feb 19, 2026
@praasz praasz added this pull request to the merge queue Feb 19, 2026
github-merge-queue bot pushed a commit that referenced this pull request Feb 19, 2026
… submission (#33313)

- Enables default ITT markers for higher level operations such as
inference pass, op preparation and submission
- Follows the same guidelines to standardize the conventions for
namespaces: ov::phases::gpu::inference ov::op::gpu
- Supports both synchronous and asynchronous operations

Enabling default GPU ITT markers using standard convention - Part 3

This PR is the **third** of a series of PRs to standardize the ITT
markers in OpenVINO that will be enabled by default through host-side
instrumentation.

1. The first PR addresses the enhancements required in ITT and the
framework to support the creation and propagation of IDs when
asynchronous execution is in play
[PR#33639](#33639).
2. The second PR will standardize ITT markers in the CPU and enhance
support to include asynchronous execution
[PR#33312](#33312).
3. This **third** PR will enable default markers for GPU plugin to allow
visibility into inference pass begin/end and operator preparation and
submission within each inference. Follow standardized conventions as
described in 1 and 2
4. The final PR will extend the same host side markers for NPU
execution, which capturing the inference span and pipeline activity.

Summary of the current PR (PR#3)

Use the same convention standardized in
[PR#33639](#33639)
Ensures the namespace for GPU Plugin activity falls under:
  ov::phases::gpu::inference
  ov::op::gpu

Details:
GPU support is enabled with default ITT markers that support synchronous
an asynchronous execution. This PR ensures a standardized convention is
followed in namespaces used.

Tickets:
[CVS-179230](https://jira.devtools.intel.com/browse/CVS-179230)

@isanghao Please review this as you are generally aware of what was
discussed

---------

Signed-off-by: Vasanth Tovinkere <vasanth.tovinkere@intel.com>
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Feb 19, 2026
@praasz praasz added this pull request to the merge queue Feb 20, 2026
Merged via the queue into openvinotoolkit:master with commit 86c0fd9 Feb 20, 2026
190 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: GPU OpenVINO GPU plugin ExternalIntelPR External contributor from Intel

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants