IP Library Granted Patent US 10,331,669
Granted Patent B2
US 10,331,669 · App. 15/194,621 · Granted Jun 25, 2019

Fast query processing in columnar databases with GPUs

Inventors: Sunil J. Kamath (Markham, CA); Kajatheepan Kanagaratnam (Toronto, CA); John D. Keenleyside (Aurora, CA); Seyed Sina Meraji (Toronto, CA)
Assignee: International Business Machines Corporation
G06F16/2455G06F16/221
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 10,331,669
App. No.
15/194,621
Granted
Jun 25, 2019
Kind
B2
Abstract

According to one exemplary embodiment, a method for processing a query associated with a database is provided. The method may include receiving the query. The method may include estimating a number of groups. The method may include copying a plurality of data from the database to graphics processing unit (GPU) memory. The method may include creating a hash table in GPU memory. The method may include determining if a group associated with the database is present in the hash table. The method may include adding the group to the hash table based on determining that the group is not present in the hash table. The method may include aggregating a value associated with the group in the hash table based on determining that the group is present in the hash table. The method may include determining a plurality of results. The method may then include retrieving the plurality of results.

Claims (17)

1. A method comprising:

receiving a group by/aggregate query;

estimating a number of groups based on the received query and a database;

copying data tuples of columnar data from the database to graphics processing unit (GPU) memory associated with a GPU;

creating a global hash table in GPU memory based on the estimated number of groups;

determining a threshold value, wherein the threshold value is determined based on one or more of: a finite number, a data type attribute, and a number of aggregation functions, based on determining that the number of groups in the global hash table does not exceed the threshold value;

creating a plurality of hash tables in shared memory of stream multiprocessors;

inserting groups into the global hash table using a plurality of execution threads;

aggregating the group values using the GPU's atomic operations in parallel;

inserting data into each of the multiple hash tables via the multiple execution threads, wherein the inserting comprises creating partial data;

merging the multiple hash tables;

inserting the merged, multiple hash tables into the global hash table;

scanning the global hash table;

and

retrieving a plurality of results.

2. The method of claim 1 , wherein aggregating the group values is based on the received query.

3. The method of claim 1 , wherein estimating the number of groups comprises using an optimizer executed in a central processing unit (CPU).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2016
From: KAMATH, SUNIL J.; KANAGARATNAM, KAJATHEEPAN; KEENLEYSIDE, JOHN D.; MERAJI, SEYED SINA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 039024/0640 →
Continuity (2)
Continuation 14748838 · Jun 24, 2015
Related Publication 20160378754A1 · Dec 29, 2016
Cited By (1)
US 12,299,454