C
carom
Gast
Das von dir verlinkte Paper zeigt die Probleme schön auf.
Also dein DB-Server braucht einfach seine Daten, auf denen er Queries ausführen kann, und mit GPU on-the-fly auf Ram oder HDD zuzugreifen ist nicht drin, wenn man die durch die GPU gewonnenen Vorteile nicht wieder (mehr als) zunichte machen will. Also müssen alle Datensätze, die abgefragt werden sollen, komplett im GPU-Ram vorliegen. Da hast du das Problem, dass dieser bei aktuellen GPUs viel zu klein ist. Als Notlösung wird beschrieben, dass man immer nur die benötigten Teile der Datenbank vom System-RAM (von HDD wäre viel zu langsam) in den GPU-Ram schiebt, dann den teuren Query auf der GPU ausführt, und die Daten dann wieder zurückschiebt in die "richtige" DB. Das ist natürlich aufwendig und lohnt nur dann, wenn dieser gesamte Prozess schneller vonstatten geht, als den Query einfach direkt auf der CPU auszuführen. Und das ist bei 99,99% aller heutigen Anwendungen nicht der Fall, da bei normalen DB-Servern die CPU nur in seltenen Fällen der Flaschenhals ist.
Da stellt sich die Frage, wer eine GPU-DB möchte, auf welcher ein paar wenige Queries 20-40x schneller laufen, die DB in ihrer gesamten Anwendung aber zigfach langsamer ist als konventionelle DBs. Das ist was für die Wissenschaft oder einen kleinen Teil der Wirtschaft oder Finanzmärkte, Big Data und so, aber beispielsweise nichts fürs Web.
GPGPU-Sachen werden sicherlich immer wichtiger werden und da steckt großes Potential dahinter, aber GPUs werden dabei Satelliten (also Anhängsel) von CPUs bleiben und hier und da wohldefinierte Brocken zum verarbeiten bekommen... das komplette Programme auf der GPU laufen ist aber unwahrscheinlich, auch wenn es in deinem Paper so gemacht wurde (SQLlite nach Cuda portiert), da gibt es zu viele Restriktionen (nur mini-caches bei GPUs, verschiedene Ram-Level statt einem "Haupt-Ram" etc..).
Der Autor sagt selbst, dass es sehr komplex ist und viel Know-how benötigt, Dinge auf der GPU umzusetzen und diese auszureizen. Hardware kostet heute nichts mehr. Wenn bei einem DB-Server die CPU limitiert, dann kauft man sich lieber noch einen zweiten Server dazu, statt etwas teures entwickeln zu lassen.
Also dein DB-Server braucht einfach seine Daten, auf denen er Queries ausführen kann, und mit GPU on-the-fly auf Ram oder HDD zuzugreifen ist nicht drin, wenn man die durch die GPU gewonnenen Vorteile nicht wieder (mehr als) zunichte machen will. Also müssen alle Datensätze, die abgefragt werden sollen, komplett im GPU-Ram vorliegen. Da hast du das Problem, dass dieser bei aktuellen GPUs viel zu klein ist. Als Notlösung wird beschrieben, dass man immer nur die benötigten Teile der Datenbank vom System-RAM (von HDD wäre viel zu langsam) in den GPU-Ram schiebt, dann den teuren Query auf der GPU ausführt, und die Daten dann wieder zurückschiebt in die "richtige" DB. Das ist natürlich aufwendig und lohnt nur dann, wenn dieser gesamte Prozess schneller vonstatten geht, als den Query einfach direkt auf der CPU auszuführen. Und das ist bei 99,99% aller heutigen Anwendungen nicht der Fall, da bei normalen DB-Servern die CPU nur in seltenen Fällen der Flaschenhals ist.
Da stellt sich die Frage, wer eine GPU-DB möchte, auf welcher ein paar wenige Queries 20-40x schneller laufen, die DB in ihrer gesamten Anwendung aber zigfach langsamer ist als konventionelle DBs. Das ist was für die Wissenschaft oder einen kleinen Teil der Wirtschaft oder Finanzmärkte, Big Data und so, aber beispielsweise nichts fürs Web.
GPGPU-Sachen werden sicherlich immer wichtiger werden und da steckt großes Potential dahinter, aber GPUs werden dabei Satelliten (also Anhängsel) von CPUs bleiben und hier und da wohldefinierte Brocken zum verarbeiten bekommen... das komplette Programme auf der GPU laufen ist aber unwahrscheinlich, auch wenn es in deinem Paper so gemacht wurde (SQLlite nach Cuda portiert), da gibt es zu viele Restriktionen (nur mini-caches bei GPUs, verschiedene Ram-Level statt einem "Haupt-Ram" etc..).
Der Autor sagt selbst, dass es sehr komplex ist und viel Know-how benötigt, Dinge auf der GPU umzusetzen und diese auszureizen. Hardware kostet heute nichts mehr. Wenn bei einem DB-Server die CPU limitiert, dann kauft man sich lieber noch einen zweiten Server dazu, statt etwas teures entwickeln zu lassen.
Zuletzt bearbeitet: