IP Library Granted Patent US 9,336,564
Granted Patent B2
US 9,336,564 · App. 13/756,780 · Granted May 10, 2016

GPU enabled database systems

Inventors: Akshay Gautam (New Delhi, IN); Ritesh K. Gupta (Hyderabad, IN)
Assignee: International Business Machines Corporation
G06T3/00G06F17/30445G06F17/30498
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 9,336,564
App. No.
13/756,780
Granted
May 10, 2016
Kind
B2
Abstract

Methods for resolving a number of in-memory issues associated with parallel query execution of a database operation on a database utilizing a graphics processing unit (GPU) are presented including: tying a table choice to a number of accesses per second made to a table; and synchronizing threads in a same shared GPU multiprocessor to avoid compromising concurrency, and where the parallel query execution of the database operation is performed solely by the GPU. In some embodiments, methods further include storing data from the GPU to a disk to solve volatility; and enabling a user, at any time, to query the amount of memory being used by the table created by the user to monitor memory consumption.

Claims (63)

1. A method for resolving a plurality of in-memory issues associated with parallel query execution of a database operation on a database utilizing a graphics processing unit (GPU) having a plurality of GPU multiprocessors, the method comprising:

tying a table choice to a number of accesses per second made to a table such that selection of the table choice corresponds with the number of accesses per second made to the table, wherein the table choice is a first of the plurality of in-memory issues; and

synchronizing threads in a same shared GPU multiprocessor using a first thread synchronization call through a local memory to avoid thread blocks and to maintain concurrency in the same shared GPU multiprocessor, wherein each of the plurality of GPU multiprocessors includes the local memory shared by threads running on the same shared GPU multiprocessor; and

synchronizing threads in a different shared GPU multiprocessor using a second thread synchronization call through a global memory to maintain concurrency, wherein concurrency is a second of the plurality of in-memory issues, wherein the global memory is shared between the plurality of GPU multiprocessors, and wherein the parallel query execution of the database operation is performed solely by the GPU.

2. The method of claim 1 , further comprising:

storing data from the GPU to a disk to solve volatility, wherein volatility of data is a third of the plurality of in-memory issues; and

enabling a user, at any time, to query the amount of memory being used by the table created by the user to monitor memory consumption, wherein memory consumption is a fourth of the plurality of in-memory issues.

3. The method of claim 2 , further comprising:

setting memory consumption parameters to control a manner in which data is written to the memory or the disk.

4. The method of claim 1 , further comprising:

synchronizing threads in different shared GPU multiprocessors through a global memory to avoid compromising concurrency.

5. The method of claim 1 , wherein the table is a GPU in-memory table.

6. The method of claim 1 , wherein the parallel execution comprises:

receiving a query by a host, the query including at least two database relations;

starting at least one GPU kernel of a plurality of GPU kernels, wherein the at least one GPU kernels include a GPU memory allocated at runtime;

hash partitioning the at least two database relations by the GPU kernel resulting in at least two hash partitioned database relations, wherein each of the at least two hash partitioned database relations includes a partition key;

loading the at least two hash partitioned database relations into the GPU memory;

loading the at least two hash partitioned database relations and partition keys corresponding with the at least two hash partitioned database relations into the GPU memory;

building a hash table for a smaller of the at least two hash partitioned database relations; and

executing the query by the at least one GPU kernel thereby providing in hash table GPU memory access.

7. A computing device program product for resolving a plurality of in-memory issues associated with parallel query execution of a database operation on a database utilizing a graphics processing unit (GPU) having a plurality of GPU multiprocessors, the method comprising:

a computer readable medium;

first programmatic instructions for tying a table choice to a number of accesses per second made to a table such that selection of the table choice corresponds with the number of accesses per second made to the table, wherein the table choice is a first of the plurality of in-memory issues; and

second programmatic instructions synchronizing threads in a same shared GPU multiprocessor using a first thread synchronization call through a local memory to avoid thread blocks and to maintain concurrency in the same shared GPU multiprocessor, wherein each of the plurality of GPU multiprocessors includes the local memory shared by threads running on the same shared GPU multiprocessor; and

synchronizing threads in a different shared GPU multiprocessor using a second thread synchronization call through a global memory to maintain concurrency, wherein concurrency is a second of the plurality of in-memory issues, wherein the global memory is shared between the plurality of GPU multiprocessors, wherein the parallel query execution of the database operation is performed solely by the GPU, and wherein the programmatic instructions are stored on the computer readable storage medium.

8. The program product of claim 7 , further comprising:

third programmatic instructions storing data from the GPU to a disk to solve volatility, wherein volatility of data is a third of the plurality of in-memory issues; and

fourth programmatic instructions enabling a user, at any time, to query the amount of memory being used by the table created by the user to monitor memory consumption, wherein memory consumption is a fourth of the plurality of in-memory issues.

9. The program product of claim 8 , further comprising:

fifth programmatic instructions setting memory consumption parameters to control a manner in which data is written to the memory or the disk.

10. The program product of claim 7 , further comprising:

sixth programmatic instructions synchronizing threads in different shared GPU multiprocessors through a global memory to avoid compromising concurrency.

11. The program product of claim 7 , wherein the table is a GPU in-memory table.

12. The program product of claim 7 , wherein the parallel execution comprises:

receiving a query by a host, the query including at least two database relations;

starting at least one GPU kernel of a plurality of GPU kernels, wherein the at least one GPU kernels include a GPU memory allocated at runtime;

hash partitioning the at least two database relations by the GPU kernel resulting in at least two hash partitioned database relations, wherein each of the at least two hash partitioned database relations includes a partition key;

loading the at least two hash partitioned database relations into the GPU memory;

loading the at least two hash partitioned database relations and partition keys corresponding with the at least two hash partitioned database relations into the GPU memory;

building a hash table for a smaller of the at least two hash partitioned database relations; and

executing the query by the at least one GPU kernel thereby providing in hash table GPU memory access.

13. A graphics processing unit (GPU) having a plurality of GPU multiprocessors enabled database system for parallel query execution comprising:

a database; and

a GPU in communication with the database, wherein

the GPU is configured resolving a plurality of in-memory issues associated with parallel query execution of a database operation on the database utilizing the GPU, the resolving including,

tying a table choice to a number of accesses per second made to a table such that selection of the table choice corresponds with the number of accesses per second made to the table, wherein the table choice is a first of the plurality of in-memory issues, and

synchronizing threads in a same shared GPU multiprocessor using a first thread synchronization call through a local memory to avoid thread blocks and to maintain concurrency in the same shared GPU multiprocessor, wherein each of the plurality of GPU multiprocessors includes the local memory shared by threads running on the same shared GPU multiprocessor; and

synchronizing threads in a different shared GPU multiprocessor using a second thread synchronization call through a global memory to maintain concurrency wherein concurrency is a second of the plurality of in-memory issues, wherein the global memory is shared between the plurality of GPU multiprocessors, and wherein the parallel query execution of the database operation is performed solely by the GPU.

14. The system of claim 13 , wherein the resolving further comprises:

storing data from the GPU to a disk to solve volatility, wherein volatility of data is a third of the plurality of in-memory issues; and

enabling a user, at any time, to query the amount of memory being used by the table created by the user to monitor memory consumption, wherein memory consumption is a fourth of the plurality of in-memory issues.

15. The system of claim 14 wherein the resolving further comprises:

setting memory consumption parameters to control a manner in which data is written to the memory or the disk.

16. The system of claim 13 , wherein the resolving further comprises:

synchronizing threads in different shared GPU multiprocessors through a global memory to avoid compromising concurrency.

17. The system of claim 13 , wherein the parallel execution comprises:

receiving a query by a host, the query including at least two database relations;

starting at least one GPU kernel of a plurality of GPU kernels, wherein the at least one GPU kernels include a GPU memory allocated at runtime;

hash partitioning the at least two database relations by the GPU kernel resulting in at least two hash partitioned database relations, wherein each of the at least two hash partitioned database relations includes a partition key;

loading the at least two hash partitioned database relations into the GPU memory;

loading the at least two hash partitioned database relations and partition keys corresponding with the at least two hash partitioned database relations into the GPU memory;

building a hash table for a smaller of the at least two hash partitioned database relations; and

executing the query by the at least one GPU kernel thereby providing in hash table GPU memory access.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2013
From: GAUTAM, AKSHAY; GUPTA, RITESH K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 030199/0546 →
Continuity (2)
Continuation 12765459 · Apr 22, 2010
Related Publication 20130141444A1 · Jun 6, 2013