CUDA DBMS
Studenteropgave: Speciale (inkl. HD afgangsprojekt)
- Morten Christiansen
- Christian Eske Hansen
4. semester, Software, Kandidat (Kandidatuddannelse)
In this report we document the development of a GPU-based DBMS. It stores data on the GPU and uses the high computation power of the GPU to perform efficient parallel operations on it. The DBMS is written in C\# for the CPU code and CUDA for the GPU code, and is accessed through a custom LINQ query provider.
The main building block of the DBMS is collections of data-parallel arrays which represent tables and table columns. To facilitate the standard database operations we have implemented CUDA kernels which perform set operations on the columns as well as various math operations. We have also implemented cache sensitive search trees, an index type which encodes a tree structure into an array for efficient data retrieval on the GPU.
Tests show that inserting values into the DBMS is in the order of a 100 times faster than SQL Server, and math operations were about 4 times faster. However, appending values to existing tables becomes increasingly slow with more values, and selecting an entire table also lags behind the SQL Server. Unfortunately, we were unable to perform filtered selections but performing tests directly on the index indicated it has a good performance.
While the implemented DBMS is only a prototype, there is a lot of promising work to continue with. This includes expanded support for types and operations such as strings and joins, as well as optimizations such as query restructuring techniques and more efficient memory management.
Sprog | Engelsk |
---|---|
Udgivelsesdato | 2009 |
Antal sider | 71 |
Udgivende institution | Aalborg Universitet |