System and method for dynamically spawning thread blocks within multi-threaded processing systems
First Claim
1. A method for executing a group of thread programs on a thread processor, the method comprising:
- receiving a thread program group that includes a plurality of thread programs;
initializing a plurality of predicate tables, wherein each predicate table is associated with a different one of the thread programs;
transmitting a request to spawn a thread grid to execute a first thread program in the thread program group, wherein the thread grid includes a plurality of thread blocks, and a first predicate table in the plurality of predicate tables is associated with the first thread program and indicates which thread blocks in the thread grid execute the first thread program; and
launching the thread grid to execute the first thread program.
1 Assignment
0 Petitions
Accused Products
Abstract
One embodiment of the present invention sets forth a technique for partitioning a predecessor thread program into sub-programs and dynamically spawning a thread grid of the sub-programs based on the outcome of a conditional statement in the predecessor thread program. The programming instructions for the predecessor thread program are analyzed to assess the benefit of partitioning the thread program at a conditional statement into sub-programs. If the predecessor thread program is partitioned, then each branch of the conditional statement may be used to form a separate sub-program. Predicate tables are populated at the predecessor thread program run-time to establish which possible instances of the thread sub-programs should be spawned in subsequent execution phases.
29 Citations
20 Claims
-
1. A method for executing a group of thread programs on a thread processor, the method comprising:
-
receiving a thread program group that includes a plurality of thread programs; initializing a plurality of predicate tables, wherein each predicate table is associated with a different one of the thread programs; transmitting a request to spawn a thread grid to execute a first thread program in the thread program group, wherein the thread grid includes a plurality of thread blocks, and a first predicate table in the plurality of predicate tables is associated with the first thread program and indicates which thread blocks in the thread grid execute the first thread program; and launching the thread grid to execute the first thread program. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A non-transitory computer-readable medium including instructions that, when executed by a processing unit, cause the processing unit to execute a group of thread programs on a thread processor, by performing the steps of:
-
receiving a thread program group that includes a plurality of thread programs; initializing a plurality of predicate tables, wherein each predicate table is associated with a different one of the thread programs; and transmitting a request to spawn a thread grid to execute a first thread program in the thread program group, wherein the thread grid includes a plurality of thread blocks, and a first predicate table in the plurality of predicate tables is associated with the first thread program and indicates which thread blocks in the thread grid execute the first thread program. - View Dependent Claims (10, 11)
-
-
12. A computer system configured to execute a group of thread programs, the computer system comprising:
-
a parallel processing unit configured to execute one or more thread grids; and a memory coupled to the parallel processing unit and including a software driver configured to; receive a thread program group that includes a plurality of thread programs, and transmit a request to the parallel processing unit to spawn a thread grid to execute a first thread program in the thread program group, wherein the thread grid includes a plurality of thread blocks, and a first predicate table in a plurality of predicate tables is associated with the first thread program and indicates which thread blocks in the thread grid execute the first thread program. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
Specification