Parallel data processing systems and methods using cooperative thread arrays
AssigneeNVIDIA Corporation
InventorsJohn R. Nickolls, Stephen D. Lew
Life of this patent
Estimating the term…
Abstract
Parallel data processing systems and methods use cooperative thread arrays (CTAs), i.e., groups of multiple threads that concurrently execute the same program on an input data set to produce an output data set. Each thread in a CTA has a unique identifier (thread ID) that can be assigned at thread launch time. The thread ID controls various aspects of the thread's processing behavior such as the portion of the input data set to be processed by each thread, the portion of an output data set to be produced by each thread, and/or sharing of intermediate results among threads. Mechanisms for loading and launching CTAs in a representative processing core and for synchronizing threads within a CTA are also described.
Claims13
A computer-implemented method for processing data, the method comprising:
- defining a thread array having a plurality of threads to be executed in a processor, each thread configured to execute a same program on an input data set;
- assigning, by the processor, each of the threads in the thread array a unique thread identifier;
- and
- executing, by the processor, the plurality of threads in the thread array concurrently with each other, wherein during execution, each thread uses the unique thread identifier assigned thereto to determine at least one processing behavior.
A processor comprising:
- a processing core including
- a plurality of processing engines configured to execute a plurality of threads concurrently, and
- a shared memory communicably coupled to the processing engines;
- and
- core interface logic coupled to the processing core, the core interface logic including
- a launch module configured to initiate concurrent execution by the processing core of a plurality of threads of a thread array, each thread of the thread array being configured to execute a same program on an input data set,
- the launch module being further configured to assign a unique thread identifier to each of the threads prior to instructing the processing core to initiate execution of the thread,
- wherein during execution, each thread of the thread array uses the unique thread identifier assigned thereto to determine at least one processing behavior.
An apparatus comprising:
- a memory adapted to store an input data set for a thread array having a plurality of threads, each of the threads being associated with a unique thread identifier;
- and
- a processor including a plurality of substantially identical processing engines coupled to the memory and configured such that the input data set is accessible by each of the processing engines, each of the processing engines being adapted to execute a different thread of the plurality of threads,
- wherein each of the processing engines is further adapted to use the unique thread identifier associated with a particular thread being executed by the processing engine to control at least one of a location within the memory at which input data is read for the particular thread or a subset of an output data set to be produced by the particular thread.
Dependencies are inferred from the claim text.