IP Library Granted Patent US 11,361,401
Granted Patent B2
US 11,361,401 · App. 16/629,458 · Granted Jun 14, 2022

GPU-based data join

Inventors: Yicheng Tu (Tampa, FL); Ran Rui (Temple Terrace, FL)
Assignee: UNIVERSITY OF SOUTH FLORIDA
G06T1/60G06T1/20G06F9/4881
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,361,401
App. No.
16/629,458
Granted
Jun 14, 2022
Kind
B2
Abstract

Disclosed are various embodiments for performing a join operation using a graphics processing unit (GPU). The GPU can receive input data including sequences or tuples. The GPU can initialize a histogram in a memory location shared by threads. The GPU can build the histogram of hash values for the sequences. The GPU can reorder the sequences based on the histogram. The GPU can probe partitions and store the results in a buffer pool. The GPU can output the results of the join.

Claims (50)

1. A system comprising:

a central processing unit; and

a graphics processing unit communicably coupled to the central processing unit, the graphics processing unit configured to at least:

receive input data comprising a plurality of sequences;

initialize a histogram in a memory location shared by a plurality of threads;

build the histogram of hash values for the plurality of sequences;

reorder the plurality of sequences based at least in part on the histogram;

perform a single probe using a respective partition in each of the plurality of threads;

store a respective output corresponding to the single probe from each of the plurality of threads into a buffer pool in global memory; and

transmit a result of a join operation to the central processing unit based at least in part on the respective output corresponding to the single probe from each of the plurality of threads.

2. The system of claim 1 , wherein the graphics processing unit is further configured to:

determine that a size of one of the respective partitions exceeds a threshold; and

in response to the size exceeding the threshold, create at least one additional kernel to process at least a portion of the one of the respective partitions.

3. The system of claim 1 , wherein only one instance of the histogram is stored for each thread block, the plurality of threads corresponding to the thread block.

4. The system of claim 1 , wherein the graphics processing unit is further configured to build the histogram by:

assigning a respective set of the plurality of the sequences to each of the plurality of threads, each of the respective sets comprising at least two sequences; and

in each of the plurality of threads:

generating hashes for the respective set of the plurality of the sequences; and

atomically adding the hashes to the histogram in the memory location.

5. The system of claim 1 , wherein the graphics processing unit is further configured to:

allocate the buffer pool in the global memory;

divide the buffer pool into a plurality of pages; and

assign a respective page of the plurality of pages to each of the plurality of threads.

6. The system of claim 5 , wherein the graphics processing unit is further configured to:

determine that the respective page for one of the plurality of threads is full; and

assign another page of the plurality of pages to the one of the plurality of threads in response to determining the respective page is full.

7. A method of performing a data join at least in part in a graphics processing unit comprising:

receiving input data comprising a plurality of sequences;

initializing a histogram in a memory location shared by a plurality of threads;

building the histogram of hash values for the plurality of sequences;

reordering the plurality of sequences based at least in part on the histogram;

performing a single probe using a respective partition in each of the plurality of threads;

storing a respective output corresponding to the single probe from each of the plurality of threads into a buffer pool in global memory; and

outputting a result of a join operation based at least in part on the respective output corresponding to the single probe from each of the plurality of threads.

8. The method of claim 7 , further comprising:

determining that a size of one of the respective partitions exceeds a threshold; and

in response to the size exceeding the threshold, creating at least one additional kernel to process at least a portion of the one of the respective partitions.

9. The method of claim 7 , wherein only one instance of the histogram is stored for each thread block and the plurality of threads correspond to the thread block.

10. The method of claim 7 , wherein building the histogram further comprises:

assigning a respective set of the plurality of the sequences to each of the plurality of threads, each of the respective sets comprising at least two sequences; and

in each of the plurality of threads:

generating hashes for the respective set of the plurality of the sequences; and

atomically adding the hashes to the histogram in the memory location.

11. The method of claim 7 , further comprising:

allocating the buffer pool in the global memory;

dividing the buffer pool into a plurality of pages; and

assigning a respective page of the plurality of pages to each of the plurality of threads.

12. The method of claim 11 , further comprising:

determining that the respective page for one of the plurality of threads is full; and

assigning another page of the plurality of pages to the one of the plurality of threads in response to determining the respective page is full.

Assignments (2)
CONFIRMATORY LICENSE Recorded Jan 31, 2025
From: UNIVERSITY OF SOUTH FLORIDA
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 070075/0445 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2020
From: TU, YICHENG; RUI, RAN
To: UNIVERSITY OF SOUTH FLORIDA
Reel/Frame 052750/0704 →
Continuity (2)
Provisional Application 62535059 · Jul 20, 2017
Related Publication 20210133917A1 · May 6, 2021
Cited By (1)
US 12,468,708