|
Ускорение СУБД с помощью GPU и CUDA | ☑ | ||
---|---|---|---|---|
0
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 гига) сборки из них некой системы/кластера и получения бюджетного суперсервера. |
|||
1
Garykom
гуру
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
|
от лишь бы не работать. любой херней будем заниматься
|
|||
3
mikecool
20.09.16
✎
16:38
|
то бишь видеопамять круче встроенного кеша в проц?
|
|||
4
Господин ПЖ
20.09.16
✎
16:40
|
там выигрыш весь на параллелизме. чего в 1с не бывает. как и сложных запросов.
они в 1с не сложные, а ипанутые. как и структура бд а проигрышь - nvidia + cuda в реализации хз на чем. я книжку листал по ней - там на фортране чтоли все было |
|||
5
Garykom
гуру
20.09.16
✎
16:40
|
(3) Угу и круче SSD в разы и даже обычной DDR3 RAM
|
|||
6
Garykom
гуру
20.09.16
✎
16:41
|
(4) Так задача обычного sql сервера как раз и состоит в параллелизме, когда одновременная обработка кучи запросов от разных клиентов.
|
|||
7
b_ru
20.09.16
✎
16:41
|
>>Вот возникла мысль заюзать это "ускорение" путем приобретения "дешевых" видеокарт с хорошими объемами внутренней памяти (2-4 гига) сборки из них некой системы/кластера и получения бюджетного суперсервера.
Люди еще теорию не проработали даже, а ты уже в продакшен примеряешь? |
|||
8
oslokot
20.09.16
✎
16:42
|
(3) ага. брутфорс работает в разы быстрее :)
|
|||
9
Господин ПЖ
20.09.16
✎
16:42
|
(6) не путай свою шерсть и государственную
задачи sql - чтобы быстро задачи 1с чтобы доступно и всерьез |
|||
10
Asmody
20.09.16
✎
16:42
|
GPU — это "числодробилка" для флоатов. Ну, матрицы в один проход перемножать умеют. Каким боком тут базы данных?
|
|||
11
Garykom
гуру
20.09.16
✎
16:44
|
(10) если б я уже понял... Пока пытаюсь разобраться как
|
|||
12
Кирпич
20.09.16
✎
16:51
|
(11) да очень просто. разрабатываешь свою СУБД, которая умеет чота считать на видеокарте и всё.
|
|||
13
Garykom
гуру
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
|
>разрабатываешь свою СУБД
уже все разработано "Стебелек" |
|||
17
Jokero
20.09.16
✎
16:56
|
В инете давно ходит байка, что на производительность 1С влияет видеокарта. Я думал это юмор, но видимо в любой шутке есть доля...
|
|||
18
Garykom
гуру
20.09.16
✎
16:57
|
(14) Не надеюсь что саму 1С а вот sql сервер почему бы и нет?
Да банальную ВК для 1С наваять которая может использовать GPU для шустрой обработки чего то. (15) Ну вдруг напильник попросят )) |
|||
19
Garykom
гуру
20.09.16
✎
16:57
|
||||
20
Jump
20.09.16
✎
16:58
|
(3) Дело далеко не в видеопамяти.
Процессор один, а в видеокарте их около четырех сотен. Правда узкоспециализированных. Поэтому если задача паралелиться, то можно получить ускорение в 400раз. |
|||
21
z80a
20.09.16
✎
16:59
|
Можно выборку из таблицы запаралелить, вместо одного ядра - будет 100500..
|
|||
22
Jump
20.09.16
✎
17:00
|
(10) Ну теоретически можно придумать некоторые моменты работы с БД, требующие вычислений, и чтобы эти вычисления легко паралелились, и получить очень быстрого сферического коня в вакууме.
|
|||
23
Кирпич
20.09.16
✎
17:00
|
(19) ну вот. скопипасть, назови "Иванушка" и в сколково
|
|||
24
Jump
20.09.16
✎
17:02
|
На узко специфичных задачах типа брутофорсов это давно работает.
Тот же майнинг криптовалюты, или подбор цепочек ДНК. |
|||
25
qwerty
20.09.16
✎
17:04
|
Чтобы посчитать что-то на видюхе, сначала это что-то нужно туда передать, т.к. процессоры видюхи только с ее памятью могут работать (либо отображаемой для встроенной графики).
ИМХО, идея с СУБД тухлая, т.к. даже современные видюхи имеют всего навсего 8 ГБ на борту. Jump уже написал, где можно применять мощь видюх. |
|||
26
Garykom
гуру
20.09.16
✎
17:04
|
(24) Выборка/сортировка/соединения/группировка в базах данных по умолчанию хорошо параллелится
|
|||
27
Господин ПЖ
20.09.16
✎
17:06
|
(22) затраты на придумывания и реализацию себя не окупят
есть задачи хорошо укладывающиеся в подобные "оптимизации" а есть - которым ни жарко ни холодно а есть которым будет хуже - из-за накладных расходов |
|||
28
Garykom
гуру
20.09.16
✎
17:07
|
(25) Правильно, поэтому для сильно больших баз это не актуально.
Но если часть (часто используемую) базы засунуть в память видеокарт как в некий кэш и далее работать с ней там? Понятно что будет долгий старт сервер (пока данные с диска в видеопамять копируем) и долгое выключение сервера (из видеопамяти скидываем на диск). |
|||
29
Asmody
20.09.16
✎
17:21
|
Вот тут https://habrahabr.ru/company/mailru/blog/266811/ хорошая статья про устройство РСУБД.
Из всего, что требует вычислительной мощи, можно выделить расчет хешей, расчет статистики и оптимизатор запросов. Вся остальная работа СУБД укладывается в формулу: "Пойди туда — сам знаешь куда, принеси то — сам знаешь что. И побыстрее!" |
|||
30
Asmody
20.09.16
✎
17:23
|
+ вот ещё хорошая статься для понимания JOIN https://habrahabr.ru/post/278087/
|
|||
31
Kuzen
20.09.16
✎
17:23
|
(0)СУБД это в основном работа с данными, прочитать, записать, и каких то мега сложных громоздких параллельных вычислений не предполагается на ней выполнять. Это все ранво что ускорять файловую систему ntfs за счет CUDA.
Сложными вычислениями занимается уже конкретное приложение его и нужно затачивать под использование видеокарт. |
|||
32
Septera
20.09.16
✎
17:24
|
(0) Идея интересная, но имеет много подводных камней. Если очень хочется скорости для СУБД, то можно поступить проще. Берем 32+ ГБ DDR3/DDR4 памяти, создаем виртуальный диск в памяти и получаем скорость записи и чтения 8-9 ГБ/с. В 32 раза это конечно не ускорит, но в несколько раз думаю легко, особенно для 1с+postgresql с их блокировками таблиц.
|
|||
33
Garykom
гуру
20.09.16
✎
17:28
|
(32) Слишком стандартно и никакого ускорения от например параллельной проверки на условия в выборке, путем разделения таблицы между процессорами на равные куски.
|
|||
34
Kuzen
20.09.16
✎
17:30
|
(32) Я так делал. Для 1с этот вариант не сработает. Потому, что узким местом будет не чтение/запись базы данных, а алгоритмы внутреннего движка самого 1С которые достаточно прожорливы .
Ускорить работу 1С можно только увеличивая частоту/скорость работы процессора и памяти. |
|||
35
gitotuta
20.09.16
✎
17:31
|
обычный сервер и проц то на 100% не использует, а данные и так в кэше лежат
|
|||
36
gitotuta
20.09.16
✎
17:32
|
Как понимаю Хэш джойн на картах считают?
|
|||
37
Garykom
гуру
20.09.16
✎
17:32
|
(29) (30) Фишка GPU не вычислительная мощь, как раз одно ядро GPU не сильно быстрое но их же дофига!
|
|||
38
gitotuta
20.09.16
✎
17:33
|
Больше на вскидку нигде параллельность не применить
|
|||
39
gitotuta
20.09.16
✎
17:33
|
*вычислительную
|
|||
40
Jump
20.09.16
✎
17:50
|
(26) Да.
Но должны быть запросы с кучей таких вещей, чтобы это себя оправдало. Т.е опять же узкая специализация. Можно увидеть конкретную ситуацию с кучей таких запросов, и купить под это дело кластер из видеокарт. А вот имея кластер видеокарт, искать под него задачи - дело глухое. |
|||
41
Jump
20.09.16
✎
17:52
|
(28) Не понял в чем смысл использования памяти видеокарт???
Не проще ли оперативную память использовать? Это проще, дешевле, быстрее, и производительнее. |
|||
42
Jump
20.09.16
✎
17:53
|
(37) Это как раз и есть вычислительная мощь.
|
|||
43
gitotuta
20.09.16
✎
17:54
|
(36) Так как наличие индексов не дает прироста, то скорее всего так и есть
|
|||
44
Garykom
гуру
20.09.16
✎
17:58
|
(31) Попробуйте написать алгоритм "кодом" для получения результата сложного запроса 1С.
Причем никаких Сортировать() или Группировать() из коробки у ТЗ не использовать, чисто методом пузырька или другими. И вот поговорим о сложности вычислительной... |
|||
45
Garykom
гуру
20.09.16
✎
18:01
|
(41) DDR3 vs GDDR5, но что обычная оперативка дешевле это так.
Но с обычной проблема с кол-вом ядер, вроде больше 8 пока нет в широком доступе камней. Хотим больше ядер придется разоряться на кластер из нескольких блейдов. |
|||
46
H A D G E H O G s
20.09.16
✎
18:10
|
Автор еще аналог ТВ не дописал, а уже что то новое мутит. Мощён.
|
|||
47
Garykom
гуру
20.09.16
✎
18:17
|
||||
48
gitotuta
20.09.16
✎
18:34
|
(47) Это все ты?
|
|||
49
Torquader
20.09.16
✎
18:39
|
До появления SSD была такая вещь, как RAM-диск, чтобы все данные в памяти жили. Сейчас, правда, не очень актуальная, так как все данные итак можно сложить в памяти.
Что касается множества процессоров, то число теоретически, можно даже сравнение строк выполнять сразу скопом (по шине памяти), которая, например, у видеокарт 256 или 512 бит. То есть поиск строк по совпадению без индекса, конечно, видеокарта сможет ускорить очень сильно - вопрос только в том, что проще добавить индекс и не сканировать все таблицы. |
|||
50
Garykom
гуру
20.09.16
✎
18:40
|
(48) Нет это не я, но я сделал подобный лисапед свой
|
|||
51
Garykom
гуру
20.09.16
✎
18:43
|
(49) Да но индексы они требуют просто дофига места на hdd/ssd и накладных затрат на создания/поддержание/обновление.
Может проще без индексов, тогда и сама база меньше и шустрее пашет. Но что только для специфичных баз хорошо применимо это да, для какого то биллинга или чего подобного с часто обновляемыми данными оно вполне может спасти. |
|||
52
gitotuta
20.09.16
✎
18:44
|
(51) Вообще принято деление на ОЛТП с минимум индексов и ОЛАП где уже все как надо.
|
|||
53
Garykom
гуру
20.09.16
✎
18:47
|
(52) А в курсе сколько времени занимает заливка данных (с вычислениями) в OLAP? Прежде чем можно ее нагружать будет
|
|||
54
gitotuta
20.09.16
✎
18:49
|
(53) Вот тут моно параллельностьпо полной юзать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |