GPU-val is gyorsítható lesz a PostgreSQL

A PostgreSQL az egyik legelterjedtebb adatbázisszoftver, ráadásul nyílt forráskódú megoldásról van szó, így a licenc szempontjából is szabad szoftvernek számít. A rendszer természetesen a megszokott módon fejlődik, méghozzá folyamatosan, viszont a nyílt forráskódnak hála olyan kutatások indíthatók, amelyek új modullal egészíthetik ki a szoftvert, így téve lehetővé az új irányokra való gyors reagálást. Kobei KaiGai, a NEC OSS szoftverprogramozója a DB Tech Showcase rendezvény alkalmával be is mutatta a PG-Strom modult, amely a PostgreSQL-t egészíti ki a GPU-s gyorsítás támogatásával.

Hirdetés

A több mint két éve fejlesztett, szintén nyílt forráskódú rendszer Kobei KaiGai elmondása szerint a heterogén többmagos processzorok terjedésére reagál, mivel ma már a szoftverfejlesztők nem várhatnak előrelépést a hagyományos többmagos processzorok oldaláról, amit azzal támaszt alá, hogy az érkező processzorokban a lapkaterület egyre nagyobb részét foglalja el az integrált grafikus vezérlő. Maga a folyamat még évekkel korábban kezdődött és az akkori Sandy Bridge kódnevű fejlesztés 17%-a volt IGP, míg idén a Kaveri APU esetében ez az érték már 47%. Ez a folyamat ráadásul felgyorsul, így a következő év elején olyan megoldás is érkeznek, ahol az IGP a lapkaterület több mint 70%-át elfoglalja.

Egyre több helyet foglalnak el az IGP-k
Egyre több helyet foglalnak el az IGP-k [+]

Kobei KaiGai úgy gondolja, hogy a változással a szoftverfejlesztőknek is együtt kell élni, így ha a szoftver nem tartja a lépést a modern hardverek újszerű karakterisztikájával, akkor azok általánosan kihasználatlanok lesznek.

A PG-Strom modul a PostgreSQL kiegészítéseként működik, így bizonyos SQL feladatokat ad át a GPU-nak futtatásra. A jelenlegi béta kódban a full table scan, a hash join és az aggregate esetében van direkt támogatás, de később ez még bővülni fog. A PG-Strom modul a felhasználó nézőpontjából láthatatlan, így minden a megszokott módon fut le, csak éppen sokkal gyorsabban. A natív GPGPU-s kód egy JIT fordítón keresztül jön létre SQL lekérdezőbe bevitt parancs alapján. A rendszer architektúrája meglehetősen komplex, így számos specifikus komponensből áll, de erre szükség van ahhoz, hogy az OpenCL-en keresztül elért GPU jól működjön.

PG-Strom architektúrája felületesen felvázolva
PG-Strom architektúrája felületesen felvázolva [+]

Kobei KaiGai egyébként a munkát a CUDA platformon kezdte, de végül az év elején úgy döntött, hogy átírja az egészet OpenCL-re, mivel ezzel az összes gyártót le lehet fedni. A CUDA opció innentől kezdve nem is fejlődött tovább. Az aktuális OpenCL kód teljesítménye igen jó. Munkafolyamattól függően legrosszabb esetben 3-szor, míg közel optimális kihasználás mellett akár 28-szor is gyorsabb lehet a lekérdezés egy NVIDIA GeForce GTX 980-nal egy Intel Xeon E5-2640 eredményeihez viszonyítva. A megszokott munkafolyamatok mellett a gyorsulás átlagosan 15-szörös, de ez sok tényezőtől függ.

Az alábbi oldalon elérhető béta kód a fixpontos, lebegőpontos, szöveg, dátum és idő, valamint a numerikus adattípusokat támogatja, illetve ezekre elérhetők az aritmetikai és összehasonlító operátorok. A lebegőpontos adattípus esetében támogatottak a matematikai funkciók, illetve a rendezésre és csoportosításra szolgáló függvények esetén elérhető a MIN, MAX, SUM, AVG, STD, VAR és CORR.

A jövő szempontjából a PG-Strom modul gyorsan fog fejlődni. Egyrészt tervben van a PostgreSQL összes elemének támogatása, ami nyilván a funkcionalitás szempontjából rendkívül fontos. Másrészt ma még korlátozott az elérhető gyorsulás mértéke, ugyanis a GPU-t jelenleg egy processzormag eteti, ami lekorlátozza a kihasználhatóságot. A teljesítmény további növelése céljából érkezik a párhuzamos scan funkció. Mindemellett később lehetséges lesz majd egyéni funkciók kreálása is a pgOpenCL-lel.

A hosszabb távú tervek egyelőre bizonytalanok, így ebből a szempontból a közösség véleménye fontos lehet. Mivel az adatbázisszoftverek piacai igen nagy, így Kobei KaiGai részletezte a megcélzott szegmenst is. Elmondása szerint az egyik legnagyobb probléma, hogy a relatíve kis adatmennyiséggel dolgozó területeken nincs olyan megoldás, ami gyors, olcsó és energiahatékony is, így a PG-Strom pont itt találhat otthonra. A hozzá szükséges alapok, mint a grafikus vezérlő, illetve az IGP-vel rendelkező processzor, valamint maga a PostgreSQL adatbázisszoftver könnyen beszerezhető.