What’s New#
Warning
DRAFT DOCUMENTATION - This documentation is currently in draft status and subject to change.
Version 1.2.0#
Current release
Updates in this release:
Add the new
ptiMetricsEnableandptiMetricsDisableAPIs, which enable metrics collection at runtime and remove the need to set theZET_ENABLE_METRICS=1environment variable before the process starts. Calls are reference counted per device and must be matched.ptiMetricsEnablereturns the newPTI_ERROR_METRICS_RUNTIME_ENABLE_UNSUPPORTEDresult code when the installed driver does not support runtime enabling, in which case the environment variable is still required; other driver failures of both APIs are reported asPTI_ERROR_DRIVER. The newPTI_ERROR_METRICS_ENABLE_FAILEDresult code is also added, for metrics that could not be enabled on all devices.Make
ptiPcSamplingConfigureoptional. If it is not called,ptiPcSamplingStartCollectionapplies the default configuration (the first device that supports PC sampling, sampling period of 100000 ns). Configuration failures are now reported with the newPTI_ERROR_PC_SAMPLING_CONFIGURATION_FAILresult code;PTI_ERROR_PC_SAMPLING_NOT_CONFIGUREDis kept for backward compatibility.Behavior change:
libpti_view.sonow registers itself as the ITT collector at load time, so oneCCL communication tracing works without extra environment setup. WhenINTEL_LIBITTNOTIFY64is unset, a static initializer sets it to the absolute path oflibpti_view.sobeforemain(). As a result, ITT is loaded in every process that loadslibpti_view.so, even ifPTI_VIEW_COMMUNICATIONis never enabled, and child processes (for exampletorchrunormpirunworkers) inherit the variable. To opt out, set the variable to another collector before the process starts; PTI then leaves it unchanged and disables its own oneCCL tracing. See Known Issues.Significantly reduce tracing overhead for Level Zero native graph execution (about 40% lower in internal measurements) by gathering the timestamps of the whole graph in one batched submission and removing an unnecessary wait on in-order command lists. The first graph execution under device tracing is still slow; see Known Issues.
Behavior change: Add
zeCommandQueueExecuteCommandListsto thePTI_API_CLASS_GPU_OPERATION_COREAPI class, covering applications that submit work through non-immediate command lists. Applications that enable this class withptiViewEnableDriverApiClassnow receive additionalPTI_VIEW_DRIVER_APIrecords (and the associated overhead) for these calls.Behavior change:
ptiViewOverheadKindToStringnow returns"Instrumentation"forPTI_VIEW_OVERHEAD_KIND_TIME(previously"BUFFER_TIME"). Code that compares the returned string must be updated; compare the enum value where possible.Fix a stale external correlation ID being reported alongside the live one when an ID is popped inside a
ptiCallbacksubscriber callback.Fix duplicate kernel records when tracing Level Zero graph creation with compute-runtime 26.31 and later.
Add build support for the open-source DPC++/DPCLang compiler (DPC++ 7.0), Rocky Linux 8, and building PTI as a CMake subproject, and fix compilation errors with the Intel oneAPI Compiler 2026.2.
Version 1.1.0#
Updates in this release:
Add support for on-demand profiling of Level Zero native graphs, validated on Intel(R) Arc(TM) B-Series (BMG) with a single GPU. Requires Intel oneAPI DPC++/C++ Compiler 2026.1.1 and compute-runtime 1.15.39122+12 or newer.
Update to Level Zero Loader version 1.32.0 and add the new Level Zero graph and SYCL Unified Runtime API IDs to
pti_driver_levelzero_api_ids.handpti_runtime_sycl_api_ids.h.Intern kernel names to avoid unbounded memory growth in applications that launch many kernels.
Keep demangled kernel names in aggregated
ptiPcSamplingresults.Fix a data race on the buffer handoff between the thread producing records and the thread delivering buffers to the user.
Remove the obsolete bridge kernel GPU tracing path; the
PTI_FORCE_BRIDGE_COMMANDSenvironment variable no longer has any effect.Fix loading the PTI core library from the Python wheel: the dependencies it cannot find through its own RPATH are now pre-loaded by the PTI interface library. Fix builds with Intel oneAPI Compiler 2025.x and 2026.0.
Version 1.0.1#
Updates in this release:
Document that
ptiPcSamplingEnablereturnsPTI_ERROR_PC_SAMPLING_UNSUPPORTEDwhen PC sampling is not supported on the system.Fix undefined symbols when running with LTS drivers on Intel(R) Data Center GPU Max Series: Level Zero symbols newer than loader version 1.14.0 are loaded dynamically.
Fix a crash on Windows when the PTI library is unloaded.
Fix builds with newer Level Zero Loader headers and MSVC Debug builds, and reconfigure the build when the
VERSIONfile changes.
Version 1.0.0#
Updates in this release:
Declare the
ptiViewAPI stable for the 1.0 release, with fixed 4-byte enum sizes for a stable ABI.Extend the
pti_view_record_kernel,pti_view_record_memory_copy,pti_view_record_memory_copy_p2p, andpti_view_record_memory_fillrecords with new device handle and engine (ordinal and index) fields, defined as the new_v2record structurespti_view_record_kernel_v2,pti_view_record_memory_copy_v2,pti_view_record_memory_copy_p2p_v2, andpti_view_record_memory_fill_v2. The previous records remain compatible with the new ones.Add a proof-of-concept of GPU PC Sampling via the new
ptiPcSamplingAPI (Experimental) for statistical per-instruction stall sampling on GPU kernels. The API is complete, but the functionality is not: specifically, “address to source line mapping” is not yet implemented and is expected in the next version.Add the new
ptiCallbackAPI (Experimental), providing synchronous notifications for GPU operation lifecycle events, with kernel handle context and driver/kernel callback domains.Extend
ptiMetricsScopewith multi-device support, including multi-process auto-mode collection running in parallel.Add an initial proof-of-concept for on-demand SYCL Graph profiling with reduced overhead for repeatedly executed graphs.
Reduce host-side runtime collection overhead significantly, in part by switching to GPU-time interpolation. Further reduction is in progress.
Fix device timestamp desynchronization that could produce incorrect kernel start/end times when the device submit time exceeded the device start time.
Improve tracing of Intel(R) oneCCL library operations.
Add compatibility with Intel oneAPI Compiler 2026.0 and 2026.1, the open-source DPC++ compiler, and newer Level Zero Loader headers, including the Level Zero driver extension headers.
Version 0.17.0#
Updates in this release:
Add support for tracing Intel(R) oneCCL library operations (via
ptiViewEnable(PTI_VIEW_COMMUNICATION))Add tracing of SYCL Graph operations with capture of repeatedly executed command lists. Improvements of this capability are in progress.
Add compatibility with Intel oneAPI Compiler 2026.
Update to Level Zero Loader version 1.28.0.