IP Library Granted Patent US 8,392,463
Granted Patent B2
US 8,392,463 · App. 12/765,459 · Granted Mar 5, 2013

GPU enabled database systems

Inventors: Akshay Gautam (New Delhi, IN); Ritesh K. Gupta (Hyderabad, IN)
Assignee: International Business Machines Corporation
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 8,392,463
App. No.
12/765,459
Granted
Mar 5, 2013
Kind
B2
Abstract

Methods for parallel query execution of a database operation on a database utilizing a graphics processing unit (GPU) are presented including: receiving query by a host, the query including database relations; starting a GPU kernel, where the GPU kernels include a GPU memory; hash partitioning the database relations by the GPU kernel; loading the partitioned database relations into the GPU memory; loading keyed partitions corresponding the hash partitioned database relations into the GPU memory; building a hash table for a smaller of the hash partitioned database relations; and executing the query. In some embodiments, methods further include returning a result of the query. In some embodiments, methods further include when the query is a long query including a number of operators, parsing the long query into a number of sub-queries; for each of the sub-queries, starting one of the GPU kernels such that the sub-queries are processed in parallel.

Claims (81)

1. A method for parallel query execution of a database operation on a database utilizing a graphics procession unit (GPU), the method comprising:

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, wherein the parallel query execution of the database is performed solely by the GPU.

2. The method of claim 1 further comprising returning a result of the query.

3. The method of claim 1 , further comprising:

when the query is a long query including a plurality of operators, parsing the long query into a plurality of sub-queries;

for each of the sub-queries, starting one of the at least one GPU kernels such that the sub-queries are processed in parallel; and

returning to the hash partitioning.

4. The method of claim 1 , wherein

the host is a GPU, and wherein

a database data and a plurality of database keys are stored on the GPU memory.

5. The method of claim 1 , wherein

the host is a GPU, wherein

a database data and a first plurality of database keys are stored on a disk data store, and wherein

a second plurality of database keys are stored on the GPU memory.

6. The method of claim 5 , further comprising:

synchronizing the first plurality of database keys with the second plurality of database keys.

7. The method of claim 1 , wherein

the host is a database node, wherein

a first database data and a first plurality of database keys are stored on a disk data store, and wherein

a second database data and a second plurality of database keys are stored on the GPU memory.

8. The method of claim 7 wherein the data disk store is pipelined with the GPU.

9. The method of claim 1 , wherein the database is configured for logging transactions such that a roll back may be initiated if an inconsistent state occurs between the host and the GPU.

10. The method of claim 1 , wherein the database is configured for limiting memory usage such that the query is restricted to a limited class of queries.

11. The method of claim 1 , wherein the GPU is a G 80 architecture compliant GPU.

12. The method of claim 1 , wherein 1 the GPU memory is a shared memory for the at least one GPU kernels.

13. The method of claim 1 , wherein the two hash partitioned relations are into the GPU memory in a coalesced access pattern such that a contiguous region of memory is utilized.

14. A computing device program product for parallel query execution of a database operation on a database utilizing a graphics processing unit (GPU) in coordination with a computing device, the computing device program product comprising:

a computer readable medium;

first programmatic instructions for receiving a query by a host, the query including at least two database relations;

second programmatic instructions for starting at least one GPU kernel of GPU kernels, wherein the at least one GPU kernels include a GPU memory allocated at runtime;

third programmatic instructions for 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;

fourth programmatic instructions for loading the at least two hash partitioned database relations into the GPU memory;

fifth programmatic instructions for 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;

sixth programmatic instructions for building a hash table for a smaller of the at least two hash partitioned database relations;

seventh programmatic instructions for executing the query by the at least one GPU kernel thereby providing in hash table CPU memory access, wherein the parallel query execution of the database is performed solely by the GPU; and

eighth programmatic instructions for returning a result of the query, wherein the programmatic instruction are stored on the computer readable storage medium.

15. The computer program of claim 14 , further comprising:

when the query is a long query including a plurality of operators, ninth programmatic instructions for parsing the long query into a plurality of sub-queries;

for each of the sub-queries, tenth programmatic instructions for starting one of the at least one GPU kernels such that the sub-queries are processed in parallel; and

eleventh programmatic instructions for returning to the hash partitioning.

16. The computer program of claim 14 , wherein

the host is a GPU, and wherein

a database data and a plurality of database keys are stored on the GPU memory.

17. The computer program of claim 14 , further comprising:

twelfth programmatic instructions for synchronizing a first plurality of database keys with a second plurality of database keys, wherein

the host is a CPU, wherein

a database data and the first plurality of database keys are stored on a disk data store, and wherein

the second plurality of database keys are stored on the GPU memory.

18. The computer program of claim 14 , wherein

the host is a database node, wherein

a first database data and a first plurality of database keys are stored on a disk data store, and wherein

a second database data and a second plurality of database keys are stored on the GPU memory.

19. A graphics processing unit (GPU) enabled database system for parallel query execution comprising:

a database;

a GPU in communication with the database, wherein

the GPU is configured for processing a database query, the processing including,

hash partitioning the at least two database relations by a 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 allocated at runtime;

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, wherein the parallel query execution of the database is performed solely by the GPU, wherein

the GPU includes at least one GPU kernel of a plurality of GPU kernels, the at least GPU kernel including GPU memory allocated at runtime, and wherein

the GPU is configured for parallel processing the database query; and

a host for receiving database queries.

20. The system of claim 19 , wherein

the host is a CPU, and wherein

a database data and a plurality of database keys are stored on the GPU memory.

21. The system of claim 19 , wherein

the host is a CPU, wherein

a database data and a first plurality of database keys are stored on a disk data store, and wherein

a second plurality of database keys are stored on the GPU memory.

22. The system of claim 19 , wherein

the host is a database node, wherein

a first database data and first plurality of database keys are stored on a disk data store, and wherein

a second database data and a second plurality of database keys are stored on the GPU memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2010
From: GAUTAM, AKSHAY; GUPTA, RITESH K
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 024274/0786 →
Continuity (1)
Related Publication 20110264626A1 · Oct 27, 2011