Thread Group Dispatch in Clustered Graphics Architecture

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current thread dispatch policies in clustered graphics architectures, such as round-robin dispatch, fail to fully utilize the benefits of clustered caches and break memory access patterns, leading to suboptimal performance due to skipping of CFEs and disruption of intended memory access sequences.

Innovation Solution

Implementing a batched dispatch policy that dispatches consecutive thread groups in batches across cycles in a strict round-robin manner or separates streams of thread groups to clusters, preserving programmer-intended memory access patterns and enhancing cache utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If round-robin dispatch is used to balance load across CFEs, then load balancing is improved, but memory access patterns are broken and cache utilization deteriorates

Engineering Contradiction:
Improveload balancingVSAvoidcache utilization
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent segments the dispatch process into two independent dimensions: (1) round-robin selection of CFE instances for load balancing, and (2) sequential assignment of thread groups within each CFE's queue to preserve memory access patterns. This segmentation allows both load balancing and cache utilization to be optimized simultaneously without conflict.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces dynamic queue management where each CFE maintains a separate queue of thread groups. The dispatcher dynamically assigns thread groups to appropriate CFE queues based on round-robin selection, while each CFE processes its queue sequentially. This dynamic structure enables flexible load distribution while preserving the sequential execution order needed for memory access patterns.

Inventive Principle:
Principle #15Dynamics

2Speed

If consecutive thread groups are dispatched to consecutive CFEs, then parallel processing is maximized, but memory access sequences are disrupted

Engineering Contradiction:
Improveparallel processingVSAvoidmemory access sequences
Core Design Contradiction:
SpeedVSStability of the object's composition

Solution Approach 1:

The patent adds a temporal dimension to the dispatch process by introducing per-CFE queues with sequential processing. While spatial parallelism is maintained across multiple CFEs, the sequential queue processing within each CFE restores the temporal order of memory accesses, allowing both parallel processing and memory access sequences to coexist.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Productivity

If CFEs are skipped when unable to accept thread groups, then load balancing is maintained, but dispatch efficiency deteriorates

Engineering Contradiction:
Improveload balancingVSAvoiddispatch efficiency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent performs preliminary actions by pre-allocating and maintaining ready queues at each CFE. Thread groups are added to the appropriate CFE's queue in advance based on round-robin selection, so that when a CFE becomes available, it can immediately process the next thread group from its queue without skipping or waiting, thereby eliminating dispatch delays.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20230205587A1Thread group dispatch in a clustered graphics architecture
Publication Date: 2023.06.29 INTEL CORP
  • US20230205587A1 patent drawing
  • US20230205587A1 patent drawing
  • US20230205587A1 patent drawing

AI summary

Thread group dispatch in a clustered graphics architecture is described. An example of an apparatus includes of compute front end (CFE) clusters to receive dispatched thread groups, the CFE clusters including at least a first CFE cluster and a second CFE cluster; processing resources coupled with the CFE clusters to execute threads within thread groups; and cache clusters to cache data including thread groups, wherein the apparatus is to receive thread groups for dispatch, and to dispatch the thread groups to the CFE clusters according to a dispatch operation, the dispatch operation including dispatching multiple thread groups to each of multiple CFEs in the first CFE cluster and multiple thread groups to each of multiple CFEs in the second CFE cluster.