IP Library Granted Patent US 11,740,868
Granted Patent B2
US 11,740,868 · App. 16/349,348 · Granted Aug 29, 2023

System and method for sorting data elements of slabs of registers using a parallelized processing pipeline

Inventor: Allan Stuart Mackinnon, Jr. (Seattle, WA)
Assignee: Google LLC
G06F7/36G06F7/24G06F9/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,740,868
App. No.
16/349,348
Granted
Aug 29, 2023
Kind
B2
Abstract

Aspects of the disclosure relate to determining relevant content in response to a request for information. One or more computing devices ( 170 ) may load data elements into registers ( 385 A- 385 B), wherein each register is associated with at least one parallel processor in a group of parallel processors ( 380 A- 380 B). For each of the parallel processors, the data elements loaded in its associated registers may be sorted, in parallel, in descending order. The sorted data elements, for each of the parallel processors, may be merged with the sorted data elements of other processors in the group. The merged and sorted data elements may be transposed and stored.

Claims (32)

1. A computer-implemented method for performing multiple processing tasks of sorting a plurality of data elements in parallel using a parallelized processing pipeline of a group of parallel processors of a computer system, the method being performed by the group of parallel processors and comprising the steps of:

executing at least one of a plurality of kernels to load a plurality of data elements from a shared memory into a plurality of slabs of registers, wherein each kernel of the plurality of kernels constitutes a respective portion of the parallelized processing pipeline, each slab of registers includes a two-dimensional array of registers having a plurality of register rows and a plurality of register columns, and each slab of registers is associated with at least one parallel processor in the group of parallel processors;

executing at least one of the plurality of kernels to sort a first portion of the plurality of data elements loaded into register rows of a first half of the plurality of slabs of registers in a descending order, and a second portion of the plurality of data elements loaded into register rows of a second half of the plurality of slabs of registers in a reverse and ascending order;

storing the sorted data elements in the shared memory;

reloading from the shared memory into each respective slab of the plurality of slabs of registers, a subset of the sorted data elements of each of the plurality of register rows stored in the shared memory;

executing at least one of the plurality of kernels to merge and sort the reloaded data elements; and

storing the merged and sorted reloaded data elements in the shared memory, wherein the computer-implemented method is adapted to enhance speed and efficiency of the parallelized processing pipeline by performing all of the multiple processing tasks of sorting the data elements using the parallelized processing pipeline so that the computer system is free to perform other processing tasks simultaneously.

2. The method of claim 1 , wherein upon each processor in the group of parallel processors reloading the subset of the sorted data elements, performing by the group of parallel processors, a bitonic merge of each register column of the plurality of register columns in each of the plurality of slabs of registers.

3. The method of claim 1 , wherein a number of the register columns of the two-dimensional array of registers corresponds to a number of processors in the group of parallel processors.

4. The method of claim 1 , wherein the plurality of data elements are loaded into the plurality of slabs of registers in a transposed order.

5. A computer system for performing multiple processing tasks of sorting a plurality of data elements in parallel, the system comprising:

a shared memory; and

a parallelized processing pipeline of a group of parallel processors coupled with the shared memory, the group of parallel processors being configured to:

execute at least one of a plurality of kernels to load, from the shared memory, a plurality of data elements into a plurality of slabs of registers, wherein each kernel of the plurality of kernels constitutes a respective portion of the parallelized processing pipeline, each slab of registers includes a two-dimensional array of registers having a plurality of register rows and a plurality of register columns, and each slab of registers is associated with at least one parallel processor in the group of parallel processors;

execute at least one of the plurality of kernels to sort a first portion of the plurality of data elements loaded into register rows of a first half of the plurality of slabs of registers in a descending order, and a second portion of the plurality of data elements loaded into register rows of a second half of the plurality of slabs of registers in a reverse and ascending order;

store the sorted data elements in the shared memory;

reload, from the shared memory into each respective slab of the plurality of slabs of registers, a subset of the sorted data elements of each of the plurality of register rows stored in the shared memory;

execute at least one of the plurality of kernels to merge and sort the reloaded data elements; and

store the merged and sorted reloaded data elements in the shared memory, wherein the computer system is adapted to enhance speed and efficiency of the parallelized processing pipeline by performing all of the multiple processing tasks of sorting the data elements using the parallelized processing pipeline so that the computer system is free to perform other processing tasks simultaneously.

6. The system of claim 5 , wherein upon each processor in the group of parallel processors reloading the subset of the sorted data elements, performing, by the group of parallel processors, a bitonic merge of each register column of the plurality of register columns in each of the plurality of slabs of registers.

7. The system of claim 5 , wherein a number of the register columns of the two-dimensional array of registers corresponds to a number of processors in the group of parallel processors.

8. The system of claim 5 , wherein the plurality of data elements are loaded into the plurality of slabs of registers in a transposed order.

9. A non-transitory computer readable medium comprising instructions, which when executed by a parallelized processing pipeline of a group of parallel processors of a computer system, cause the group of parallel processors to perform multiple processing tasks of sorting a plurality of data elements in parallel, the group of parallel processors being configured to:

execute at least one of a plurality of kernels to load, from a shared memory, a plurality of data elements into a plurality of slabs of registers, wherein each kernel of the plurality of kernels constitutes a respective portion of the parallelized processing pipeline, each slab of registers includes a two-dimensional array of registers having a plurality of register rows and a plurality of register columns, and each slab of registers is associated with at least one parallel processor in the group of parallel processors;

execute at least one of the plurality of kernels to sort a first portion of the plurality of data elements loaded into register rows of a first half of the plurality of slabs of registers in a descending order, and a second portion of the plurality of data elements loaded into register rows of a second half of the plurality of slabs of registers in a reverse and ascending order;

store the sorted data elements in the shared memory;

reload, from the shared memory into each respective slab of the plurality of slabs of registers, a subset of the sorted data elements of each of the plurality of register rows stored in the shared memory;

execute at least one of the plurality of kernels to merge and sort the reloaded data elements; and

store the merged and sorted reloaded data elements in the shared memory, wherein the non-transitory computer readable medium is adapted to enhance speed and efficiency of the parallelized processing pipeline by performing all of the multiple processing tasks of sorting the data elements using the parallelized processing pipeline so that the computer system is free to perform other processing tasks simultaneously.

10. The non-transitory computer readable medium of claim 9 , wherein upon each processor in the group of parallel processors reloading the subset of the sorted data elements, performing, by the group of parallel processors, a bitonic merge of each register column of the plurality of register columns in each of the plurality of slabs of registers.

11. The non-transitory computer readable medium of claim 9 , wherein a number of the register columns of the two-dimensional array of registers corresponds to a number of processors in the group of parallel processors.

12. The non-transitory computer readable medium of claim 9 , wherein the plurality of data elements are loaded into the plurality of slabs of registers in a transposed order.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2019
From: MACKINNON, ALLAN STUART, JR.
To: GOOGLE INC.
Reel/Frame 049157/0015 →
CHANGE OF NAME Recorded May 13, 2019
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 049157/0718 →
Continuity (2)
Provisional Application 62421544 · Nov 14, 2016
Related Publication 20190347071A1 · Nov 14, 2019