В рамках проекта PG-Storm (https://github.com/pg-strom) при участии компании NEC развивается дополнение к СУБД PostgreSQL, позволяющее вынести на плечи GPU выполнение некоторых операций обработки SQL-запроса. В частности, за счёт привлечения GPU могут быть ускорены такие операции как сравнительный перебор элементов таблиц, агрегирование записей и слияние хэшей.
<center><img src="http://www.opennet.me/opennews/pics_base/0_1419364747.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></center>Код для выполнения на стороне GPU генерируется в момент разбора SQL-запроса при помощи специального JIT-компилятора и в дальнейшем выполняется параллельно с другими связанными с текущим запросом операциями, выполняемыми на CPU. Для выполнения заданий на GPU задействован OpenCL. Из присутствующих на данной стадии развития проекта ограничений отмечается возможность использования GPU только для данных, хранимых в оперативной памяти. Увеличение производительности операций слияния таких таблиц при использовании GPU увеличивается в десятки раз.
<center><img src="http://www.opennet.me/opennews/pics_base/0_1419364684.png" style="border-style: solid; border-color: #606060; border-width: 1px;max-width:100%;" title="" border=0></center>
<center><img src="http://www.opennet.me/opennews/pics_base/0_1419364872.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></center>
<center><img src="http://www.opennet.me/opennews/pics_base/0_1419364956.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></center>
<center>
<iframe src="//www.slideshare.net/slideshow/embed_code/42903351" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe></center>URL: https://news.ycombinator.com/item?id=8787414
Новость: http://www.opennet.me/opennews/art.shtml?num=41333
Это заговор бородатых свитероносцев: скоро выйдет Half-Life3 и свитероносцы хотят иметь внятное обоснование хорошим видеокартам в серверной.
...а хранить эту самую базу надо будет в видеопамяти видеокарты!
Теперь DBA прокачают свои скиллы в сетевых шутерах.
На тему параллелизма тоже есть несколько интересных попыток
http://rhaas.blogspot.ru/2014/12/parallelism-update.html
Хм, фраза насчёт "данных в памяти" намекает, что такая штука больше подошла бы всяким NoSQL, который ох как любят в памяти всё подряд хранить...
попробуй постгресу в конфиге памяти добавить, увидишь, как он память любит
> Хм, фраза насчёт "данных в памяти" намекает, что такая штука больше подошла
> бы всяким NoSQL, который ох как любят в памяти всё подряд
> хранить...Если postgres не использует всю оперативку, до которой может дотянуться, значит что-то в настройках не так.
Но идея с nosql интересная.
Это больше подойдет многопоточному memcache, чем однопоточному redis.
Правда, это ещё надо постараться нагрузить memcache так, чтобы возникла нужда в ускорении.
У pgsql нашли узкое место, которое можно ускорить.
С memcache так может не получиться.
> Это больше подойдет многопоточному memcache, чем однопоточному redis.Напомни, сколько на PCI-Express контактов?
>> Это больше подойдет многопоточному memcache, чем однопоточному redis.
> Напомни, сколько на PCI-Express контактов?Ну что же вы, уважаемый, никогда в редис не упирались?
https://code.google.com/p/memcached/wiki/NewConfiguringServe...
redis:
It does not use pipelining or any parallelism at all (one pending query per connection at most, and no multi-threading).
http://redis.io/topics/benchmarks
Не, я о другом. И я имел в виду не мемкеш, в котором, в общем-то, тоже только индексы считать, и даже не редис. А скорее что-то вроде mongo/couch, где, во-первых, map/reduce (т.е. хороший параллелизм гарантирован), во-вторых - документный формат, в котором можно всякие агрегаты считать для каждого документа, в-третьих - при нужде можно довольно спокойно пол-языка поломать под хорошую оптимизацию, и пользователи это проглотят.
PostgreSQL откушивает ровно столько, сколько задал в shared_buffers.
> PostgreSQL откушивает ровно столько, сколько задал в shared_buffers.Кеш и буферы ядра ещё посчитай, сразу не "ровно" станет.
не, это по-другому работает.
95% workload-а современных SQL БД - ворочается на тамошних UDF, которые ничем от байт-кода жабы или .Net отличаются в этом плане.
и в случае возможности хотя бы мизерно все это дело ускорить и/или распаралелить, профит фантастический.
те кто юзает не вполне SQL-compliant костыли вроде форков mysql и прочей хреновины, это дело не поддерживающих ССЗБ, конечно. но для остальных - профит весом, да.
Ну вот, будущее наступило. Теперь базе данных будет требоваться видеокарта :).
> Ну вот, будущее наступило. Теперь базе данных будет требоваться видеокарта :).Accelerating SQL Database Operations on a GPU with CUDA © 2010
http://www.gpucomputing.net/sites/default/files/papers/408/b...
> Accelerating SQL Database Operations on a GPU with CUDA © 2010Никто в здравом уме не будет лочить себя на апи от нвидии с единственной на планете реализацией в виде их проприетарного блоба. Пора бы это уже понять - психов готовых добровольно сунуться в этот медвежий капкан на планете немного.
>> Accelerating SQL Database Operations on a GPU with CUDA © 2010
> Никто в здравом уме не будет лочить себя на апи от нвидии
> с единственной на планете реализацией в виде их проприетарного блоба. Пора
> бы это уже понять - психов готовых добровольно сунуться в этот
> медвежий капкан на планете немного.Ононимные Оналитеги Опеннета рулят и пидалят! А TOP500 - просто сборище дебилов!
Где только они видели серверные платформы с боле-менее приличными видеокартами ... Самое большее - встроенные Intel или Matrox (чипы разработки 15-летней давности).
http://www.nvidia.ru/object/nvidia-grid-ru.html
> Где только они видели серверные платформы с боле-менее приличными видеокартами ...А вон в топ500 посмотри...
Ещё такие есть:http://www.intel.com/content/www/us/en/processors/xeon/xeon-...
http://blog.xcelerit.com/intel-xeon-phi-vs-nvidia-tesla-gpu/
Т.е. видеовыходов у этих "видеокарт" может и не быть
OpenCL подойдет для любых задач, так или иначе, связанных с большими объемами вычислений.
Но имеет смысл только на тех которые можно хорошо параллелизовать.
OpenCL жрет энергию и все равно все упрется в I/O
Давно пора.
> задействован OpenCLЭто правильно.
Нужное дело делают.
Интересно, а их не смущает тот факт, что у большинства видеокарт динамическая память (GDDRx) не то что без ECC, а еще и допускает и bitflip'ы чаще обычной системной ОЗУ без ECC?
> Интересно, а их не смущает тот факт, что у большинства видеокарт динамическая
> память (GDDRx) не то что без ECC,Вообще-то в профессиональных/серверных моделях видеокарт - вполне себе с ECC.
> а еще и допускает и bitflip'ы чаще обычной системной ОЗУ без ECC?
Так нефиг оверклокать и вольтажи за номинал выставлять. Ну и охлаждение нормальное должно быть (да, некоторые OEM-ы - те еще упыри, хотя ПЕЧи горячие сами по себе например). В том числе и в системнике (актуально для мощных GPU). Если все это соблюдено - нормальная видеокарта может работать годами без сбоев. Толпы майнеров уже проверили, потому что бабло побеждает зло :).
Для таких задачей есть firepro and tesla. у них память с ecc.
на серверах теперь будут игровые карточки ? =)
вечерком когда уже ни кому не уперлись скуль запросы можно порубиться в игрушки сисадминам ? =D==
все таки не зря говорят что история развивается по спирали, вернулись в 198х с 286 процессорами и математическими сопроцессорами 287
> на серверах теперь будут игровые карточки ? =)Игровые никуда не годятся. В тех же игровых nvidia CUDA чисто формальная. При попытке ускорить за счёт неё перемножение матриц получаешь только замедление.
Для использования GPU в таких целях нужно покупать специальные вычислительные GPU-шнки (наличие на которых output-интерфейсов для подключения мониторов далеко не обязательно [1]).
[1] http://www.3dnews.ru/assets/external/illustrations/2012/11/1...
> все таки не зря говорят что история развивается по спирали, вернулись в 198х с 286 процессорами и математическими сопроцессорами 287
Сколько лет мне промывают мозги этими GPU-шками, но лично меня всё равно больше привлекают CPU-шки с AVX-ами (и им подобными).
>Игровые никуда не годятся. В тех же игровых nvidia CUDA чисто формальная. При попытке ускорить за счёт неё перемножение матриц получаешь только замедление.А пацаны из BOINC и не знали.
> А пацаны из BOINC и не знали.Авторы майнеров коинов и крякеров хэшей тоже как-то не в курсе :)
>> А пацаны из BOINC и не знали.
> Авторы майнеров коинов и крякеров хэшей тоже как-то не в курсе :)Mine-ите coin-ы на своей игровой видеокарте? Успешно?
>>Игровые никуда не годятся. В тех же игровых nvidia CUDA чисто формальная. При попытке ускорить за счёт неё перемножение матриц получаешь только замедление.
> А пацаны из BOINC и не знали.А можно конкретные ссылки? Я лично сам пробовал эту CUDA. Или может поделитесь собственным опытом?
всё правильно написал
Ну так NVidia - тот ещё махинатор. На вид там карты от AMD лучше пойдут - куча мелких вычислительных блоков.
> Игровые никуда не годятся. В тех же игровых nvidia CUDA чисто формальная.Выкинь маркетинговый булшит от нвидии из головы, чувак.
0) CUDA - проприетарное нечто от нвидии. А OpenCL - для всех, в отличие от. Он в том числе и нвидией реализуется.
1) У амд например игровые карточки в OpenCL долбят так что за ушами трещит. Мой восьмиядерник на массово параллелизуемых задачах ненавязчиво продувает видяхе В 20-30 РАЗ. Вот если алгоритм не параллелится - хилые и относительно низкочастотные ALUшки с слабым flow control - могут разочаровать. Это не general purpose проц и даже не собиралось им быть.
2) На самом деле все сильно зависит от задач. У нвидии меньше алушек но они более сложные. У амд их при прочих равных больше. Поэтому они ударно себя показывают на несколько разных задачах.
3) Если что, у амд профессиональные карты от обычных отличаются в основном всякой там ECC памятью да повышенным числом выходов на монитор. А дробилка там та же самая. Ну да, на игровую карту пожадничают память с ECC паять, геймерам не критично. На серверах это уже более критично (системную память с ECC там ведь ставят, в отличие от десктопников).
> но лично меня всё равно больше привлекают CPU-шки с AVX-ами (и им подобными).
Никакие AVX ни разу не заткнут за пояс пачку ALU где счет идет на тысячи простых SIMDобразных дробилок. В сумме эта конструкция втыкает системному процу в десятки раз, если алгоритм параллелится. Потому что оно за 1 такт воротит прорву работы на порядки превышающие все эти AVX в их самых радужных мечтах. И даже сравнительная низкочастотность (GPU как правило тактируют в районе 1ГГц) при ТАКОМ количестве ALU - не проблема.
>> Игровые никуда не годятся. В тех же игровых nvidia CUDA чисто формальная.
> Выкинь маркетинговый булшит от нвидии из головы, чувак.
> 0) CUDA - проприетарное нечто от нвидии.Согласен
> А OpenCL - для всех,
> в отличие от. Он в том числе и нвидией реализуется.Но OpenCL пытается быть универсальным, из-за чего теряет в производительности.
> 1) У амд например игровые карточки в OpenCL долбят так что за
> ушами трещит. Мой восьмиядерник на массово параллелизуемых задачах ненавязчиво продувает
> видяхе В 20-30 РАЗ.А вам не лень показать исходный код?
> Вот если алгоритм не параллелится - хилые
> и относительно низкочастотные ALUшки с слабым flow control - могут разочаровать.
> Это не general purpose проц и даже не собиралось им быть.Я в качестве сферического эксперимента в вакууме делаю тупое перемножение матриц. Очень легко параллелизуемый алгоритм.
>> но лично меня всё равно больше привлекают CPU-шки с AVX-ами (и им подобными).
> Никакие AVX ни разу не заткнут за пояс пачку ALU где счет
> идет на тысячи простых SIMDобразных дробилок. В сумме эта конструкция втыкает
> системному процу в десятки раз, если алгоритм параллелится. Потому что оно
> за 1 такт воротит прорву работы на порядки превышающие все эти
> AVX в их самых радужных мечтах. И даже сравнительная низкочастотность (GPU
> как правило тактируют в районе 1ГГц) при ТАКОМ количестве ALU -
> не проблема.Честно сказать, не изучал вопрос расчёта на AMD-шных карточках. Я лишь лично тестировал nvidia. Я конечно могу уже очень плохо помнить, ибо было сравнительно давно, но с учётом почти 4-кратного прироста на double-ах на AVX даже с учётом перегонки данных туда-сюда, я получил на i5 производительность для перемножения матриц во _много_ раз больше, чем на GeForce GTX 650 Ti. Притом размер матриц подбирался специально так, чтобы выжать наибольшую производительность на этой GPU-шке. Может, конечно, память играет со мной злую шутку.
Недавно мой коллега рассказывал свои разочарования про попытку использовать OpenCL с такой же карточкой.
> на серверах теперь будут игровые карточки ? =)Причем тут карточки, если серверы нормальные вообще без графики ставятся?
помимо смайликов Вам еще показывать табличку "сарказм" ?"Графический процессор (англ. graphics processing unit, GPU) — отдельное устройство персонального компьютера или игровой приставки, выполняющее графический рендеринг."
лопата, можно смеяться ;)
Торт.Невероятно крутая штука.
Опомнились.