# US 12,223,353 B2 · Systems and methods for synchronization of multi-thread lanes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,223,353 B2
- Document ID: US12223353B2
- Status: Granted
- Kind: B2
- Application number: 18/481,489
- Filed: 2023-10-05
- Published: 2024-03-28
- Granted: 2025-02-11
- Earliest claimed: 2019-03-15
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Valentin Andrei; Subramaniam Maiyuran; SungYe Kim; Varghese George; Altug Koker; Aravindh Anantaraman
- Web page: https://patentgrep.com/patent/US12223353B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/38: Concurrent instruction execution, e.g. pipeline or look ahead
- G06F 9/3851: {from multiple instruction streams, e.g. multistreaming}
- G06F 9/3888: {controlled by a single instruction for multiple threads [SIMT] in parallel}
- G06F 9/52: Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F 15/8007: {single instruction multiple data [SIMD] multiprocessors}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Apparatuses to synchronize lanes that diverge or threads that drift are disclosed. In one embodiment, a graphics multiprocessor includes a queue having an initial state of groups with a first group having threads of first and second instruction types and a second group having threads of the first and second instruction types. A regroup engine (or regroup circuitry) regroups threads into a third group having threads of the first instruction type and a fourth group having threads of the second instruction type.

## Claims

### Claim 1

A graphics multiprocessor, comprising: a queue having an initial state of groups with a first group having threads of first and second instruction types and a second group having threads of the first and second instruction types; and
a regroup circuitry to regroup threads from the initial state of groups of first and second groups into a regrouped state of groups including a third group having threads of the first instruction type and a fourth group having threads of the second instruction type based on an instruction type and to determine an order of inserting the third group and the fourth group into the queue to minimize divergence between threads.

### Claim 2 (depends on 1)

The graphics multiprocessor of claim 1, wherein the regroup circuitry to select one or more threads from one or more groups that are set to execute an instruction and combine the one or more threads into a single group.

### Claim 3 (depends on 1)

The graphics multiprocessor of claim 1, wherein each of the first instruction type and the second instruction type comprise one of a load/store instruction, an integer instruction, a floating point instruction, an integer mac instruction, an integer add instruction, a floating point add instruction, a floating point fused multiply-add (fma) instruction, a floating point sine instruction, or a floating point cosine instruction.

### Claim 4 (depends on 1)

The graphics multiprocessor of claim 1, further comprising:
a thread scheduler coupled to the queue; and
a plurality of processing resources coupled to the thread scheduler.

### Claim 5 (depends on 4)

The graphics multiprocessor of claim 4, wherein the thread scheduler is configured to schedule the first instruction type of the third group for execution on a first processing resource with full utilization of this first processing resource.

### Claim 6 (depends on 4)

The graphics multiprocessor of claim 4, wherein the thread scheduler is configured to schedule the second instruction type of the fourth group for execution on a second processing resource with full utilization of this second processing resource.

### Claim 7 (depends on 1)

The graphics multiprocessor of claim 1, wherein the regroup circuitry utilizes regrouping policies and an order that a new regrouped group is inserted in the queue is optimized depending on latencies.

### Claim 8

A graphics processor, comprising:
one or more processing resources to process groupings of threads; and
thread control circuitry coupled to the one or more processing resources, the thread control circuitry is configured to determine groupings of instantiated threads, to determine progress of the threads for executing a task on the one or more processing resources, and to determine drift between threads.

### Claim 9 (depends on 8)

The graphics processor of claim 8, wherein the thread control circuitry is further configured to determine whether a drift between threads exceeds a threshold drift.

### Claim 10 (depends on 8)

The graphics processor of claim 8, wherein the thread control circuitry is further configured to accelerate at least one thread that lags other threads by at least the threshold drift.

### Claim 11 (depends on 8)

The graphics processor of claim 8, wherein the thread control circuitry accelerates the at least one thread by applying a higher priority to this at least one thread than other threads.

### Claim 12 (depends on 8)

The graphics processor of claim 8, wherein the processing resources to process threads for a single instruction multiple data (SIMD) execution model.

### Claim 13

A method for scheduling optimization of threads of a graphics processing unit, a graphics multiprocessor, or a graphic processor, the method comprising:
starting processing of groupings of threads on one or more processing resources;
monitoring, with a thread control circuitry of the graphics processing unit, the graphics multiprocessor, or the graphic processor, progress of each thread for a group; and
determining, with the thread control circuitry, drift between threads.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
determining, with the graphics processing unit, the graphics multiprocessor, or the graphic processor, the groupings of threads.

### Claim 15 (depends on 13)

The method of claim 13, further comprising:
determining, with the thread control circuitry, whether a drift between threads exceeds a threshold drift.

### Claim 16 (depends on 13)

The method of claim 13, further comprising:
rescheduling, with the thread control circuitry, at least one thread that lags other threads.

### Claim 17 (depends on 13)

The method of claim 13, wherein the thread control circuitry provides a higher priority level for the at least one thread that lags other threads to reschedule the at least one thread.
