IP Library › Granted Patent US 11,182,207
Granted Patent B2
US 11,182,207 · App. 16/450,508 · Granted Nov 23, 2021

Pre-fetching task descriptors of dependent tasks

Inventors: Gentaro Hirota (Sunnyvale, CA); Brian Pharris (Cary, NC); Jeff Tuckey (Los Gatos, CA); Robert Overman (Apex, NC); Stephen Jones (San Francisco, CA)
Assignee: NVIDIA CORPORATION
G06F9/4881G06F9/52
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,182,207
App. No.
16/450,508
Granted
Nov 23, 2021
Kind
B2
Abstract

Techniques are disclosed for reducing the latency between the completion of a producer task and the launch of a consumer task dependent on the producer task. Such latency exists when the information needed to launch the consumer task is unavailable when the producer task completes. Thus, various techniques are disclosed, where a task management unit initiates the retrieval of the information needed to launch the consumer task from memory in parallel with the producer task being launched. Because the retrieval of such information is initiated in parallel with the launch of the producer task, the information is often available when the producer task completes, thus allowing for the consumer task to be launched without delay. The disclosed techniques, therefore, enable the latency between completing the producer task and launching the consumer task to be reduced.

Claims (37)

1. A computer-implemented method, the method comprising:

determining that a first task is being launched and that a second task is dependent on the first task;

determining that a task descriptor associated with the first task specifies that a prefetch functionality is enabled for the second task;

prior to an execution of the first task, initiating a retrieval of a task descriptor associated with the second task from a memory; and

launching the second task based on the task descriptor associated with the second task subsequent to at least the execution of the first task.

2. The method of claim 1 , further comprising, prior to launching the second task, initiating a retrieval of one or more instructions associated with the second task from the memory.

3. The method of claim 1 , further comprising, prior to launching the second task, initiating a retrieval of one or more constants associated with the second task from the memory.

4. The method of claim 1 , further comprising, subsequent to at least the execution of the first task, re-initializing a dependency tracker associated with the first task to enable the first task to be re-executed.

5. The method of claim 4 , wherein re-initializing the dependency tracker comprises copying a total dependency count associated with the first task to a current count associated with the first task.

6. The method of claim 4 , wherein the first task is included in a loop of tasks, and further comprising:

subsequently updating the dependency tracker to indicate that a re-execution of a task upon which the first task depends has completed; and

re-executing the first task.

7. The method of claim 4 , further comprising, prior to re-initializing the dependency tracker, determining that a first task descriptor associated with the first task specifies that re-initialization functionality is enabled for the first task.

8. The method of claim 1 , wherein launching the first task comprises performing one or more operations that prepare a plurality of streaming multiprocessors to execute the first task, and executing the first task comprises causing each streaming multiprocessor included in the plurality of streaming multiprocessors to execute one or more threads associated with the first task.

9. The method of claim 1 , wherein the first task and the second task are associated with a task graph.

10. A system comprising:

a memory that stores one or more task descriptors; and

circuitry coupled to the memory that:

determines that a second task is dependent on a first task that is being launched;

determines that a task descriptor associated with the first task specifies that a prefetch functionality is enabled for the second task;

prior to an execution of the first task, initiates a retrieval of a task descriptor associated with the second task from the memory; and

launches the second task based on the task descriptor associated with the second task subsequent to at least the execution of the first task.

11. The system of claim 10 , wherein, prior to launching the second task, the circuitry initiates a retrieval of one or more instructions associated with the second task from the memory.

12. The system of claim 10 , wherein, prior to launching the second task, the circuitry initiates a retrieval of one or more constants associated with the second task from the memory.

13. The system of claim 10 , wherein, subsequent to at least the execution of the first task, the circuitry re-initializes a dependency tracker associated with the first task to enable the first task to be re-executed.

14. The system of claim 10 , wherein the circuitry determines that the task descriptor associated with the first task specifies that re-initialization functionality is enabled for the first task.

15. A system comprising:

a memory storing a task graph; and

a processor coupled to the memory that:

determines that a first task is being launched and that a second task is dependent on the first task;

determines that a task descriptor associated with the first task specifies that a prefetch functionality is enabled for the second task;

prior to an execution of the first task, initiates a retrieval of a task descriptor associated with the second task from the memory;

executes the first task; and

launches the second task based on the task descriptor associated with the second task subsequent to at least the execution of the first task.

16. The system of claim 15 , wherein, prior to launching the second task, the processor initiates a retrieval of one or more instructions associated with the second task from the memory.

17. The system of claim 15 , wherein, prior to launching the second task, the processor initiates a retrieval of one or more constants associated with the second task from the memory.

18. The system of claim 15 , wherein, subsequent to at least the execution of the first task, the processor re-initializes a dependency tracker associated with the first task to enable the first task to be re-executed.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2019
From: HIROTA, GENTARO; PHARRIS, BRIAN; TUCKEY, JEFF; OVERMAN, ROBERT; JONES, STEPHEN
To: NVIDIA CORPORATION
Reel/Frame 049601/0527 →
Continuity (1)
Related Publication 20200401444A1 · Dec 24, 2020
Cited By (1)
US 12,436,897