Pixel Shader Wave Grouping for Shared LDS Memory Launch
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The existing GPU architectures face performance degradation due to delayed initialization and resource sharing limitations in pixel shader wave grouping, particularly when waves of a work group are associated with the same primitive, leading to inefficient use of LDS memory.
Innovation Solution
Implementing dynamic pixel shader wave grouping that allows sharing of LDS memory resources across different waves, enabling individual waves to be launched without delay by using attribute pointers to identify and share initialized memory, thus reducing the need for redundant memory allocation and initialization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If waves are grouped together to share LDS memory resources, then resource utilization is improved, but wave launch is delayed until the group is fully assembled
Solution Approach 1:
The system segments the wave assembly and launch process into independent units. Each wave can be launched individually as soon as it is assembled, rather than waiting for the complete work group. The resource allocation module tracks and manages LDS memory sharing across waves dynamically, allowing independent launch decisions for each wave while maintaining resource efficiency.
Solution Approach 2:
The resource allocation module performs preliminary allocation of LDS memory resources based on attribute pointer matching before wave launch. By pre-identifying waves that can share resources through attribute pointer comparison, the system prepares resource sharing arrangements in advance, enabling immediate wave launch without waiting for group assembly completion.
2Productivity
If LDS memory is allocated for each wave individually, then wave launch is immediate, but resource utilization is inefficient due to redundant allocations
Solution Approach 1:
The system merges LDS memory allocations for waves that share the same primitive attributes. The resource allocation module compares attribute pointers of incoming waves with previously allocated waves, and when matches are found, it combines their memory requirements into a single shared allocation. This eliminates redundant memory allocations while maintaining immediate wave launch capability.
Solution Approach 2:
The resource allocation module creates universal LDS memory allocations that can serve multiple waves with the same attribute characteristics. Instead of dedicating separate memory spaces to each wave, the system establishes shared memory regions that function for all waves matching specific attribute criteria, improving resource utilization without impacting launch rate.
3Quantity of substance
If wave grouping is enforced to share LDS memory, then resource sharing is improved, but device complexity increases due to coordination requirements
Solution Approach 1:
The resource allocation module implements self-service resource sharing by autonomously comparing attribute pointers and determining memory sharing opportunities without external coordination. The system independently manages the complexity of wave grouping and LDS memory allocation, freeing other components from coordination overhead and simplifying the overall device architecture.
Data Source
AI summary
A method and device are provided in which pixel information may be assembled into a wave by a pixel wave controller of a graphics processing unit (GPU). The wave includes at least attribute data. The pixel wave controller may send a request to a resource allocation module of the GPU. The request includes at least attribute pointers for the wave. The resource allocation module may compare the attribute pointers to active pointer fields for stored attribute data. The resource allocation module may determine a local data store (LDS) memory allocation for the wave based on the comparison enabling a reduction of an original LDS memory allocation for the wave based on a matching entry in the active pointer fields, and send allocation information based on the LDS memory allocation for issuance of a wave launch message to a wave slot.


