Вход | Регистрация


Информационные технологии :: Математика и алгоритмы

Ускорение СУБД с помощью GPU и CUDA

Ускорение СУБД с помощью GPU и CUDA
Я
   Garykom
 
20.09.16 - 16:33
Ускорение СУБД с помощью GPU и CUDA.

Изучал тут про cuDNN и прочее "глубокое обучение" на GPU и напоролся на такое http://cs.kai.ru/proekty/niokr/74-razrabotka-gpu-subd-dlya-platformy-vychislitelnogo-klastera.

Суть что обычную небольшую базу данных засунули в видеопамять видеокарты NVIDIA и с помощью CUDA получили в тестах ускорение для "сложных запросов" до 32 раз по сравнению с обычными CPU.

Но для простых запросов или с индексами/первичными ключами ускорения почти не было.

Вот возникла мысль заюзать это "ускорение" путем приобретения "дешевых" видеокарт с хорошими объемами внутренней памяти (2-4 гига) сборки из них некой системы/кластера и получения бюджетного суперсервера.
 
 
   Garykom
 
1 - 20.09.16 - 16:33
(0)+ На sql.ru уже вроде обсуждали http://www.sql.ru/forum/907011/subd-ispolzuushhaya-vychisleniya-na-gpu
   Кирпич
 
2 - 20.09.16 - 16:38
от лишь бы не работать. любой херней будем заниматься
   mikecool
 
3 - 20.09.16 - 16:38
то бишь видеопамять круче встроенного кеша в проц?
   Господин ПЖ
 
4 - 20.09.16 - 16:40
там выигрыш весь на параллелизме. чего в 1с не бывает. как и сложных запросов.

они в 1с не сложные, а ипанутые. как и структура бд

а проигрышь - nvidia + cuda в реализации хз на чем. я книжку листал по ней - там на фортране чтоли все было
   Garykom
 
5 - 20.09.16 - 16:40
(3) Угу и круче SSD в разы и даже обычной DDR3 RAM
   Garykom
 
6 - 20.09.16 - 16:41
(4) Так задача обычного sql сервера как раз и состоит в параллелизме, когда одновременная обработка кучи запросов от разных клиентов.
   b_ru
 
7 - 20.09.16 - 16:41
>>Вот возникла мысль заюзать это "ускорение" путем приобретения "дешевых" видеокарт с хорошими объемами внутренней памяти (2-4 гига) сборки из них некой системы/кластера и получения бюджетного суперсервера.

Люди еще теорию не проработали даже, а ты уже в продакшен примеряешь?
   oslokot
 
8 - 20.09.16 - 16:42
(3) ага. брутфорс работает в разы быстрее :)
   Господин ПЖ
 
9 - 20.09.16 - 16:42
(6) не путай свою шерсть и государственную

задачи sql - чтобы быстро
задачи 1с чтобы доступно и всерьез
   Asmody
 
10 - 20.09.16 - 16:42
GPU — это "числодробилка" для флоатов. Ну, матрицы в один проход перемножать умеют. Каким боком тут базы данных?
 
 Рекламное место пустует
   Garykom
 
11 - 20.09.16 - 16:44
(10) если б я уже понял... Пока пытаюсь разобраться как
   Кирпич
 
12 - 20.09.16 - 16:51
(11) да очень просто. разрабатываешь свою СУБД, которая умеет чота считать на видеокарте и всё.
   Garykom
 
13 - 20.09.16 - 16:53
(12) Хорошая идея для стартапа в Сколково...
   Кирпич
 
14 - 20.09.16 - 16:53
(11) ты же не надеешься, что можно заставить 1C или MS SQLServer чего то там считать на видюхе. Хотя SQLServer вполне может быть уже и использует видюху.
   Кирпич
 
15 - 20.09.16 - 16:54
(13) пилить хочешь? пилилка еще не отросла.
   Господин ПЖ
 
16 - 20.09.16 - 16:56
>разрабатываешь свою СУБД

уже все разработано

"Стебелек"
   Jokero
 
17 - 20.09.16 - 16:56
В инете давно ходит байка, что на производительность 1С влияет видеокарта. Я думал это юмор, но видимо в любой шутке есть доля...
   Garykom
 
18 - 20.09.16 - 16:57
(14) Не надеюсь что саму 1С а вот sql сервер почему бы и нет?
Да банальную ВК для 1С наваять которая может использовать GPU для шустрой обработки чего то.

(15) Ну вдруг напильник попросят ))
   Garykom
 
19 - 20.09.16 - 16:57
   Jump
 
20 - 20.09.16 - 16:58
(3) Дело далеко не в видеопамяти.
Процессор один, а в видеокарте их около четырех сотен.
Правда узкоспециализированных.
Поэтому если задача паралелиться, то можно получить ускорение в 400раз.
   z80a
 
21 - 20.09.16 - 16:59
Можно выборку из таблицы запаралелить, вместо одного ядра - будет 100500..
   Jump
 
22 - 20.09.16 - 17:00
(10) Ну теоретически можно придумать некоторые моменты работы с БД, требующие вычислений, и чтобы эти вычисления легко паралелились, и получить очень быстрого сферического коня в вакууме.
   Кирпич
 
23 - 20.09.16 - 17:00
(19) ну вот. скопипасть, назови "Иванушка" и в сколково
   Jump
 
24 - 20.09.16 - 17:02
На узко специфичных задачах типа брутофорсов это давно работает.
Тот же майнинг криптовалюты, или подбор цепочек ДНК.
   qwerty
 
25 - 20.09.16 - 17:04
Чтобы посчитать что-то на видюхе, сначала это что-то нужно туда передать, т.к. процессоры видюхи только с ее памятью могут работать (либо отображаемой для встроенной графики).

ИМХО, идея с СУБД тухлая, т.к. даже современные видюхи имеют всего навсего 8 ГБ на борту.

Jump уже написал, где можно применять мощь видюх.
   Garykom
 
26 - 20.09.16 - 17:04
(24) Выборка/сортировка/соединения/группировка в базах данных по умолчанию хорошо параллелится
   Господин ПЖ
 
27 - 20.09.16 - 17:06
(22) затраты на придумывания и реализацию себя не окупят

есть задачи хорошо укладывающиеся в подобные "оптимизации"

а есть - которым ни жарко ни холодно

а есть которым будет хуже - из-за накладных расходов
   Garykom
 
28 - 20.09.16 - 17:07
(25) Правильно, поэтому для сильно больших баз это не актуально.
Но если часть (часто используемую) базы засунуть в память видеокарт как в некий кэш и далее работать с ней там?

Понятно что будет долгий старт сервер (пока данные с диска в видеопамять копируем) и долгое выключение сервера (из видеопамяти скидываем на диск).
   Asmody
 
29 - 20.09.16 - 17:21
Вот тут https://habrahabr.ru/company/mailru/blog/266811/ хорошая статья про устройство РСУБД.
Из всего, что требует вычислительной мощи, можно выделить расчет хешей, расчет статистики и оптимизатор запросов. Вся остальная работа СУБД укладывается в формулу: "Пойди туда — сам знаешь куда, принеси то — сам знаешь что. И побыстрее!"
   Asmody
 
30 - 20.09.16 - 17:23
+ вот ещё хорошая статься для понимания JOIN https://habrahabr.ru/post/278087/
   Kuzen
 
31 - 20.09.16 - 17:23
(0)СУБД это в основном работа с данными, прочитать, записать, и каких то мега сложных громоздких параллельных вычислений не предполагается на ней выполнять. Это все ранво что ускорять файловую систему ntfs за счет CUDA.

Сложными вычислениями занимается уже конкретное приложение  его и нужно затачивать под использование видеокарт.
   Septera
 
32 - 20.09.16 - 17:24
(0) Идея интересная, но имеет много подводных камней. Если очень хочется скорости для СУБД, то можно поступить проще. Берем 32+ ГБ DDR3/DDR4 памяти, создаем виртуальный диск в памяти и получаем скорость записи и чтения 8-9 ГБ/с. В 32 раза это конечно не ускорит, но в несколько раз думаю легко, особенно для 1с+postgresql с их блокировками таблиц.
   Garykom
 
33 - 20.09.16 - 17:28
(32) Слишком стандартно и никакого ускорения от например параллельной проверки на условия в выборке, путем разделения таблицы между процессорами на равные куски.
 
 
   Kuzen
 
34 - 20.09.16 - 17:30
(32) Я так делал. Для 1с этот вариант не сработает. Потому, что узким местом будет не чтение/запись базы данных, а алгоритмы внутреннего движка самого 1С которые достаточно прожорливы .

Ускорить работу 1С можно только увеличивая частоту/скорость работы процессора и памяти.
   gitotuta
 
35 - 20.09.16 - 17:31
обычный сервер и проц то на 100% не использует, а данные и так в кэше лежат
   gitotuta
 
36 - 20.09.16 - 17:32
Как понимаю Хэш джойн на картах считают?
   Garykom
 
37 - 20.09.16 - 17:32
(29) (30) Фишка GPU не вычислительная мощь, как раз одно ядро GPU не сильно быстрое но их же дофига!
   gitotuta
 
38 - 20.09.16 - 17:33
Больше на вскидку нигде параллельность не применить
   gitotuta
 
39 - 20.09.16 - 17:33
*вычислительную
   Jump
 
40 - 20.09.16 - 17:50
(26) Да.
Но должны быть запросы с кучей таких вещей, чтобы это себя оправдало.
Т.е опять же узкая специализация.

Можно увидеть конкретную ситуацию с кучей таких запросов, и купить под это дело кластер из видеокарт.

А вот имея кластер видеокарт, искать под него задачи - дело глухое.
   Jump
 
41 - 20.09.16 - 17:52
(28) Не понял в чем смысл использования памяти видеокарт???
Не проще ли оперативную память использовать?
Это проще, дешевле, быстрее, и производительнее.
   Jump
 
42 - 20.09.16 - 17:53
(37) Это как раз и есть вычислительная мощь.
   gitotuta
 
43 - 20.09.16 - 17:54
(36) Так как наличие индексов не дает прироста, то скорее всего так и есть
   Garykom
 
44 - 20.09.16 - 17:58
(31) Попробуйте написать алгоритм "кодом" для получения результата сложного запроса 1С.

Причем никаких Сортировать() или Группировать() из коробки у ТЗ не использовать, чисто методом пузырька или другими.

И вот поговорим о сложности вычислительной...
   Garykom
 
45 - 20.09.16 - 18:01
(41) DDR3 vs GDDR5, но что обычная оперативка дешевле это так.
Но с обычной проблема с кол-вом ядер, вроде больше 8 пока нет в широком доступе камней. Хотим больше ядер придется разоряться на кластер из нескольких блейдов.
   H A D G E H O G s
 
46 - 20.09.16 - 18:10
Автор еще аналог ТВ не дописал, а уже что то новое мутит. Мощён.
   Garykom
 
47 - 20.09.16 - 18:17
   gitotuta
 
48 - 20.09.16 - 18:34
(47) Это все ты?
   Torquader
 
49 - 20.09.16 - 18:39
До появления SSD была такая вещь, как RAM-диск, чтобы все данные в памяти жили. Сейчас, правда, не очень актуальная, так как все данные итак можно сложить в памяти.
Что касается множества процессоров, то число теоретически, можно даже сравнение строк выполнять сразу скопом (по шине памяти), которая, например, у видеокарт 256 или 512 бит.
То есть поиск строк по совпадению без индекса, конечно, видеокарта сможет ускорить очень сильно - вопрос только в том, что проще добавить индекс и не сканировать все таблицы.
 
 Рекламное место пустует
   Garykom
 
50 - 20.09.16 - 18:40
(48) Нет это не я, но я сделал подобный лисапед свой
   Garykom
 
51 - 20.09.16 - 18:43
(49) Да но индексы они требуют просто дофига места на hdd/ssd и накладных затрат на создания/поддержание/обновление.

Может проще без индексов, тогда и сама база меньше и шустрее пашет.
Но что только для специфичных баз хорошо применимо это да, для какого то биллинга или чего подобного с часто обновляемыми данными оно вполне может спасти.
   gitotuta
 
52 - 20.09.16 - 18:44
(51) Вообще принято деление на ОЛТП с минимум индексов и ОЛАП где уже все как надо.
   Garykom
 
53 - 20.09.16 - 18:47
(52) А в курсе сколько времени занимает заливка данных (с вычислениями) в OLAP? Прежде чем можно ее нагружать будет
   gitotuta
 
54 - 20.09.16 - 18:49
(53) Вот тут моно параллельностьпо полной юзать


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует