Thread specialization for collaborative data transfer and computation
AssigneeNVIDIA Corporation
InventorsChao Li, Jing Li, Alan Kaatz, Ronny Meir Krashinsky, Albert Xu
Life of this patent
Estimating the term…
Abstract
Apparatuses, systems, and techniques to perform a matrix multiplication using parallel processing. In at least one embodiment, a matrix multiplication is divided into a set of tiles, with each tile processed with a prolog task, a calculation task, and an epilog task. The prolog tasks are performed by a dedicated set of threads, with the remaining tasks performed in an interleaved manner using two or more thread groups.
Claims24
A computer-implemented method of performing a task, comprising:
- performing a first set of tasks that obtain data used by a second set of tasks, the first set of tasks performed in serial using a first set of threads;
- and
- performing a first portion of the second set of tasks in parallel with the first set of tasks using a second set of threads;
- and
- performing a second portion of the second set of tasks in parallel with the first set of tasks, the second portion of the second set of tasks being time-interleaved with the first portion of the second set of tasks and performed using a third set of threads.
A computer system comprising one or more processors and non-transitory computer-readable memory storing executable instructions that, as a result of being executed by the one or more processors, cause the computer system to perform a task by at least:
- causing a first set of tasks to be performed in serial by a first set of threads of a multiprocessing system, the first set of tasks comprising one or more tasks to transfer data to a memory of the multiprocessing system;
- causing a first portion of a second set of tasks to be performed by a second set of threads of the multiprocessing system, the first portion of the second set of tasks comprising one or more tasks to perform calculations on the data to produce a first portion of results;
- causing a second portion of the second set of tasks to be performed by a third set of threads of the multiprocessing system, the second portion of the second set of tasks comprising one or more tasks to perform calculations on the data to produce a second portion of results, the first portion of the second set of tasks being performed in serial with the second portion of the second set of tasks;
- and
- causing the first and second portions of the results to be transferred to a memory of the computer system.
A processor, comprising one or more circuits to perform a task by at least:
- using a first set of threads to perform a first task that provides data to a second set of threads and a third set of threads;
- performing a first part of a second task with the second set of threads before using the first set of threads to provide the data to a third set of threads;
- performing a second part of the second task with the third set of threads;
- and
- providing a result of the task based at least in part on results of the first and second parts of the second task.
Dependencies are inferred from the claim text.