AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


CUDA DBMS

Authors

;

Term

4. term

Education

Publication year

2009

Pages

71

Abstract

Denne rapport præsenterer en prototype af et databashåndteringssystem (DBMS), der kører på en grafikprocessor (GPU). Ved at lagre tabeller direkte i GPU'ens hukommelse og udnytte GPU'ens styrke i parallel beregning kan systemet accelerere almindelige operationer. CPU-delen er skrevet i C#, og GPU-koden bruger CUDA (NVIDIAs værktøj til GPU-programmering). Forespørgsler sendes via en skræddersyet LINQ-provider (en .NET-funktion til at skrive database-lignende forespørgsler i kode). Data organiseres som arrays, der repræsenterer tabeller og kolonner, og CUDA-kerner (små GPU-programmer) udfører mængdeoperationer og talberegninger. Vi har også udviklet cachefølsomme søgetræer: en indeksstruktur, der koder et træ som et array for effektivt opslag på GPU'en. I test var indsættelse af værdier cirka 100 gange hurtigere end Microsoft SQL Server, og matematiske operationer var omkring 4 gange hurtigere. Nogle opgaver var dog langsommere: at føje værdier til eksisterende tabeller blev gradvist langsommere jo større tabellen blev, og udvælgelse af en hel tabel var langsommere end i SQL Server. Filtrerede udvælgelser kunne ikke gennemføres, men direkte test af indekset viste god ydeevne. Selvom DBMS'et kun er en prototype, peger det på lovende næste skridt, herunder bredere typesupport (fx strenge) og relationelle operationer (fx joins), samt optimeringer som omstrukturering af forespørgsler og mere effektiv hukommelsesstyring.

This report presents a prototype database management system (DBMS) that runs on a graphics processing unit (GPU). By storing tables directly in GPU memory and using the GPU's strength in parallel computation, the system speeds up common tasks. The CPU parts are written in C#, and the GPU code uses CUDA (NVIDIA's toolkit for programming GPUs). Applications issue queries through a custom LINQ provider (a .NET feature for writing database-like queries in code). Data is organized as arrays that represent tables and columns, and CUDA kernels (small GPU programs) implement set operations and numerical calculations. We also built cache-sensitive search trees: an index structure that encodes a tree as an array to make lookups efficient on the GPU. In tests, inserting values was about 100 times faster than Microsoft SQL Server, and math operations were roughly 4 times faster. Some tasks were slower: appending values to existing tables became progressively slower as the table grew, and selecting an entire table lagged behind SQL Server. Filtered selections could not be performed, but direct tests of the index showed good performance. Although the DBMS is only a prototype, it points to promising next steps, including broader type support (e.g., strings) and relational operations (e.g., joins), as well as optimizations such as query restructuring and more efficient memory management.

[This abstract was generated with the help of AI]

Keywords