IP Library › Granted Patent US 11,822,956
Granted Patent B2
US 11,822,956 · App. 17/134,781 · Granted Nov 21, 2023

Adaptive thread group dispatch

Inventors: ZhongXiang Luo (Shanghai, CN); JiXin Shan (Shanghai, CN); MingTao Gu (Shanghai, CN)
Assignee: Advanced Micro Devices (SHANGHAI) CO., LTD.
G06F9/485G06F12/0895G06T1/20G06T1/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,822,956
App. No.
17/134,781
Granted
Nov 21, 2023
Kind
B2
Abstract

One or more shader processor inputs (SPIs) provide work items from a thread group for execution on one or more shader engines. A command processor selectively dispatches the work items to the SPIs based on a size of the thread group and a format of cache lines of a cache implemented in the one or more shader engines. The command processor operates in a tile mode in which the command processor schedules the work items in multidimensional blocks that correspond to the format of the cache lines. In some cases, the format of the cache lines is determined by a texture surface format and a swizzle mode for storing texture data. The SPIs (or corresponding drivers) adaptively select wave size, tile size, and wave walk mode based on thread group size, UAV surface format. The SPIs adaptively launch and schedule waves in a thread group based on selected file size, wave walk mode, and wave size to improve cache locality, reduce memory access, and create address pattern to improve memory efficiency.

Claims (40)

1. An apparatus comprising:

at least one scheduler circuit configured to schedule and launch work items from a thread group for execution on at least one shader engine; and

a command processor configured to selectively dispatch the work items to the at least one scheduler circuit based on a size of the thread group corresponding to a format of cache lines of a cache implemented in the at least one shader engine, wherein the format of the cache lines is associated with a texture access pattern.

2. The apparatus of claim 1 , wherein the command processor is configured to operate in a display mode or tile mode in which the command processor is configured to schedule the work items in multidimensional blocks that correspond to the format of the cache lines.

3. The apparatus of claim 2 , wherein the cache lines are implemented using a two-dimensional m×n format, and wherein the command processor is configured to schedule the work items in two-dimensional k×l blocks, m being an integer multiple of k and n being an integer multiple of l.

4. The apparatus of claim 2 , wherein the format of the cache lines is determined by a texture surface format and a swizzle mode for storing texture data, and wherein the command processor or GPU driver is configured to determine a wave size and the tile mode of thread group block based on at least one of the texture surface format and the swizzle mode.

5. The apparatus of claim 4 , wherein the command processor is configured to group the work items into thread group blocks based on at least one of the wave size and the tile mode of thread group block.

6. The apparatus of claim 5 , wherein the command processor is configured to add work items having consecutive indices to a thread group block so that the work items in the thread group are provided to a same scheduler circuit.

7. The apparatus of claim 5 , wherein the command processor is configured to add work items from a batch having a number of work items that is less than a threshold to thread group blocks that are provided to a same scheduler circuit for scheduling on a subset of shader engines.

8. The apparatus of claim 7 , wherein shader engines that are not in the subset are placed in a low-power mode.

9. The apparatus of claim 5 , wherein the at least one scheduler circuit is configured to adaptively select a wave size, tile size, and wave walk mode based on a thread group size and the texture surface format, and wherein the at least one scheduler circuit is configured to adaptively launch and schedule waves in a thread group based on the selected tile size, wave walk mode, and wave size.

10. A method comprising:

selectively dispatching, from a command processor, work items from a thread group to at least one scheduler circuit based on a size of the thread group corresponding to a format of cache lines of a cache implemented in at least one shader engine, wherein the format of the cache lines is associated with a texture access pattern; and

scheduling, by the at least one scheduler circuit, the work items for execution on at least one shader engine.

11. The method of claim 10 , further comprising:

operating the command processor in a tile mode; and

scheduling, at the command processor, the work items in multidimensional blocks that correspond to the format of the cache lines in response to the command processor being in the tile mode.

12. The method of claim 11 , wherein the cache lines are implemented using a two-dimensional m×n format, and further comprising:

scheduling, at the command processor, the work items in two-dimensional k×l blocks, m being an integer multiple of k and n being an integer multiple of l.

13. The method of claim 11 , wherein the format of the cache lines is determined by a texture surface format and a swizzle mode for storing texture data.

14. The method of claim 13 , further comprising:

determining, at the command processor, a wave size and the tile mode based on at least one of the texture surface format and the swizzle mode; and

grouping, at the command processor, the work items into thread group blocks based on at least one of the wave size and the tile mode.

15. The method of claim 14 , further comprising:

adding, at the command processor, work items having consecutive indices to thread group blocks; and

providing the thread group blocks to a same scheduler circuit.

16. The method of claim 14 , further comprising:

adding, at the command processor, work items from a batch having a number of work items that is less than a threshold to thread group blocks that are provided to a same scheduler circuit for scheduling on a subset of shader engines.

17. The method of claim 16 , further comprising:

placing shader engines that are not in the subset in a low-power mode.

18. The method of claim 14 , further comprising:

adaptively selecting, at the at least one scheduler circuit, a wave size, tile size, and wave walk mode based on a thread group size and the texture surface format; and

adaptively launching and scheduling, at the at least one scheduler circuit, waves in a thread group based on the selected tile size, wave walk mode, and wave size.

19. A method, comprising:

adding, by a command processor, work items having consecutive indices to multidimensional blocks that correspond to a format of cache lines of a cache implemented in at least one shader engine, wherein the format of the cache lines is associated with a texture access pattern;

dispatching, by the command processor, the work items in the multidimensional blocks to a scheduler circuit; and

launching, by the scheduler circuit, thread groups including the work items in the multidimensional blocks to the at least one shader engine for execution.

20. The method of claim 19 , further comprising:

determining the format of the cache lines based on at least one of a texture surface format and a swizzle mode; and

grouping the work items into thread group blocks based on a wave size or a tile mode determined by at least one of the texture surface format and the swizzle mode.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2020
From: LUO, ZHONGXIANG; SHAN, JIXIN; GU, MINGTAO
To: ADVANCED MICRO DEVICES (SHANGHAI) CO., LTD.
Reel/Frame 054753/0500 →
Continuity (1)
Related Publication 20220206838A1 · Jun 30, 2022
Cited By (2)
US 12,541,454 US 12,645,490