Робота з Big Data за допомогою GPU: прискорення роботи баз даних в десятки разів



Вже кілька років дата-центри багатьох компаній працюють з обчисленнями з прискоренням на GPU. Наша компанія зараз вивчає це питання, оскільки такий тип обчислень стає все більш затребуваним. Так, обчислення з прискоренням на GPU можна (і потрібно) використовувати для прискорення вимогливих до ресурсів додатків, створених для роботи в таких сферах, як глибоке навчання, аналітика та проектування. Цей метод використовують у дата-центрах великих компаній, в лабораторіях науково-дослідних організаціях, на підприємствах.

Завдяки прискоренню на GPU працюють багато сервіси, що забезпечують роботу нейронних мереж або обробляють дані, що надходять з розумних автомобілів. Плюсом такого методу є те, що ресурсномістка частина програми, яка вимагає великої обчислювальної потужності, обробляється на GPU, а все інше виконується на CPU. В останні кілька років стали з'являтися комбіновані рішення, на основі яких створюються високошвидкісні бази даних. Такі рішення варто використовувати, наприклад, для візуалізації великих масивів даних.

Ми розглядаємо можливість запустити подібний сервіс в себе, тому вивчили питання досить докладно. Ми вибрали декілька рішень, які хотіли б використовувати. Не всі з них відкриті, але можливості радують.

Map-D


Назва цього проекту означає «масивно паралельна база даних». З його допомогою можна візуалізувати величезні масиви даних. Наприклад, відстежити переміщення спалаху вірусу грипу майже в реальному часі.

За допомогою Map-D можна будувати і карту повідомлень про різних катастрофах. Все це робиться всього за кілька мілісекунд, за умови наявності готового масиву первинних даних.

Map-D — платформа, яка з'явилася кілька років тому, і з тих пір це рішення продовжує вдосконалюватися. З його допомогою можна проводити аналіз великих масивів даних, де використовується міць паралельних обчислень на GPU. Це прискорює аналіз масивів даних у 70-1000 разів, в залежності від типу самих даних.

База даних сервісу інтегрується в пам'ять великого числа GPU і окремих кластерів. Вона дозволяє обробляти мільярди базових точок з практично миттєвим виведенням результатів аналізу в графічному вигляді. За словами творців проекту, SQL база даних може оброблятися Map-D з величезною швидкістю.

Kinetica
Буквально в цьому місяці оновився ще один цікавий проект, який називається Kinetica. Принцип його роботи приблизно такий же, як і в попередньому випадку. Використовувати рішення пропонується у випадках, коли потрібно працювати з величезними масивами даних, які потрібно візуалізувати. Дані переробляються «на льоту» з швидким виведенням об'єктивної картини результатів.

Раніше компанія називалася GPUdb, що вже натякало на її ставлення до баз даних. Рішення позиціонується, як допомога корпораціям. Саме тому є підтримка стандартних комерційних функцій на зразок SQL-92 запитів, кластеризації, установки в один клік і іншого.

За словами розробників, використання GPU означає роботу 4000+ ядер на один пристрій, проти 8-32 ядер у випадку використання СPU. Kinetica включає нативний движок візуалізації, плюс плагіни від сторонніх компаній. Все це, як стверджують творці платформи, що дозволяє отримувати стократний приріст продуктивності в порівнянні з CPU.

BlazingDB


Це досить специфічний проект, який позиціонується як рішення для компаній, що працюють з PostgreSQL, MySQL або Amazon: Redshift. Розробники обіцяють багаторазовий приріст продуктивності для всіх цих продуктів.

Ключовою відмінністю платформи від інших рішень є пропозиція локальних і хмарних инстансов зі сторонніх розробників. Якщо у вас вже є дані в Amazon або Azure, ви можете додати BlazingDB і порівняти приріст продуктивності.
Раніше компанія була некомерційною, і лише з червня розробники почали пробувати монетизувати сервіс. Для роботи з BlazingDB знадобиться Nvidia CUDA драйвер для Linux. На жаль, єдина підтримувана зараз платформа — це Ubuntu 14.04.

Blazegraph


Не всі бази даних SQL-системами. Деякі з них оптимізовані для специфічних завдань по роботі з даними. Наприклад, для роботи з графами, де аналізується взаємозв'язок окремих об'єктів з візуалізацією після аналізу отриманої інформації.

Така робота вимагає ресурсів, і GPU-орієнтовані обчислення якраз те, що потрібно. Одна з платформ, «заточених» під виконання подібних завдань — це Blazegraph. Відзначимо те, що це open-source рішення, написаний на Java, з двома методами прискорення обчислень на основі GPU.

Розробники кажуть, що Blazegraph забезпечує 200-300 кратний зростання продуктивності в порівнянні з CPU-рішеннями. Власне, перше рішення — це використання GPU для обчислень.

Другий варіант — просто переписати своє ресурсномісткий додаток з використанням Blazegraph DASL. Це мова, розроблений для забезпечення виконання паралельних операцій на GPU. «Використання Spark з CUDA GPU прискорює виконання багатьох програм у 1000 разів, якщо порівнювати з виконанням тих же додатків на CPU», — кажуть розробники.

PGStrom
Це популярна open-source PostgreSQL база даних, у якій багато позитивних сторін. По-перше, ця БД масштабована, підтримує NoSQL/JSON і деякі інші функції.

Цікаво те, що вона не підтримує прискорення на основі GPU «з коробки». Для того, щоб отримати таку функцію, необхідно використовувати сторонній проект, який називається PGStrom. При отриманні запиту
PG-Strom визначає, чи може бути цей запит виконаний за допомогою GPU. Якщо це так, то створюється GPU-оптимізована версія запиту. Результат — переспрямування та виконання запиту з GPU.

Налаштування PG-Strom — значний працю. Він вимагає набору інструментів Nvidi CUDA і повинен бути скомпільовано з вихідного коли. Але як тільки
PG-Strom інтегрується в PostgreSQL, він починає працювати без необхідності щось переписувати для використання на GPU.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.