GPU Kernel Profiling via Binary Instrumentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current profiling systems for GPUs lack the ability to measure busy and idle time intervals at the granularity of execution units and hardware threads, as GPUs do not have an operating system to provide visibility into CPU utilization, hindering efficient kernel performance optimization.

Innovation Solution

A binary instrumentation engine inserts profiling instructions into GPU kernels to collect operational statistics, including timestamps and hardware thread identifiers, which are stored in a trace buffer, allowing the CPU to determine operating parameters like busy and idle times, and adjust GPU operations accordingly.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If profiling instructions are inserted into GPU kernels to measure execution statistics, then code execution analysis capability is improved, but GPU operation efficiency deteriorates due to additional overhead

Engineering Contradiction:
Improveprofiling measurement capabilityVSAvoidGPU execution efficiency
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The system performs preliminary actions by inserting profiling instructions into GPU kernels before execution to collect execution statistics. The binary instrumentation engine modifies kernels to include profiling code that gathers data on execution time, memory consumption, and other operational metrics without requiring post-execution analysis

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A trace buffer acts as an intermediary component between the GPU execution units and the profiling system. The trace buffer collects and stores profiling data generated during kernel execution, allowing the CPU to analyze GPU utilization metrics without directly interfering with the GPU's computational operations. This intermediary mechanism enables measurement while minimizing disruption to the profiling process itself

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of information

If profiling instructions are inserted to collect operational statistics, then code execution visibility is improved, but device complexity increases due to instrumentation overhead

Engineering Contradiction:
Improvecode execution visibilityVSAvoidprofiling system complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The profiling functionality is extracted from the core GPU execution path and placed into separate profiling instructions that are inserted into kernels. The binary instrumentation engine separates the profiling logic from the computational logic, allowing execution statistics to be collected without fundamentally altering the GPU's core architecture or execution model

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system creates copies of profiling data in a trace buffer rather than requiring direct analysis of execution flows. By copying execution statistics into a buffer that can be read by the CPU, the system maintains visibility into code execution while avoiding the complexity of real-time analysis mechanisms that would require deeper integration into the GPU's control logic

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10867362B2Methods and apparatus to improve operation of a graphics processing unit
Publication Date: 2020.12.15 INTEL CORP
  • US10867362B2 patent drawing
  • US10867362B2 patent drawing
  • US10867362B2 patent drawing

AI summary

Methods, apparatus, systems, and articles of manufacture are disclosed to improve operation of a graphics processing unit (GPU). An example apparatus includes an instruction generator to insert profiling instructions into a GPU kernel to generate an instrumented GPU kernel, the instrumented GPU kernel is to be executed by a GPU, a trace analyzer to generate an occupancy map associated with the GPU executing the instrumented GPU kernel, a parameter calculator to determine one or more operating parameters of the GPU based on the occupancy map, and a processor optimizer to invoke a GPU driver to adjust a workload of the GPU based on the one or more operating parameters.