Альтернативное использование мощностей GPU?

    Недавно я опубликовал статью о распределенном рендеринге на GPU — поступили некоторые вопросы и предложения. Поэтому считаю нужным рассказать о теме более развернуто (и с картинками, а то без картинок статьи практически не читают), тем самым привлечь к этой теме больше читателей.
    Думаю, этим вопросом заинтересуются обладатели мощных вычислительных систем: майнеры, геймеры, админы других мощных вычислительных систем.

    Многие обладатели мощного железа задумывались над тем, а нельзя ли подзаработать на мощности своей железки, пока она стоит бестолку?


    Красота моя бестоковая!


    Один из самых доступных способов — это Bitcoin. В связи с появлением распределенной платежной системы Bitcoin появилось такое интересное занятие — майнинг («добыча биткоинов», вычисления в пользу защиты биткоин системы, за которые система вознаграждает участника биткоинами, которые он может обменять на одну из известных валют в биткоин биржах) — занятие достаточно затратное, и не всегда прибыльное. Вернее майнинг оказался более прибыльным на FPGA-шечках, чем на Радеончиках. Поэтому обладателям последних повезло меньше, в плане майнинга, и им приходится продавать свои железки.


    Майнинг ферма, я насчитал 66 видеокарт. Красотища! Взято отсюда.

    Я сам пробовал недавно помайнить на GTX580 (а Нвидии плохи для майнинга, да), но понял, что 17 (семнадцать) долл. в месяц — хоть и бешеные деньги, но не совсем та зарплата, о которой я мечтал.
    Но не спешим впадать в спячку отчаяния! Можно попытаться спасти положение!

    Итак, мощные видюшки, при правильном использовании:
    1. Могут служить во благо кому-то.
    2. Могут приносить больше прибыли, чем Биткоин.
    3. Приносить прибыль от Биткоин во время простоя.

    В чем же могут пригодиться видеокарты?
    1. Вычисления общего назначения на видеокартах (англ. General Purpose Graphic Processor Unit — GPGPU).
    2. Аппаратная растеризация (OpenGL, DirectX).

    Начнем с GPGPU


    Как задействовать видеокарты?
    CUDA — хороший френймворк для карточек Nvidia, и только для них. Аппаратно-зависимая платформа.
    Firestream — фреймворк для GPGPU вычислений на видеокартах AMD. Опять-таки аппаратно-зависимая платформа. Честно, я даже не встречал ни одного рендера на Firestream.
    OpenCL — аппаратно, и программно-независимая платформа для вычислений на чем попало: и CPU, и GPU, на тостерах и микроволновках. Всё прекрасно, но на личном опыте, и многочисленных тестах убедился, что платформа пока что далека от совершенства. Глюки, баги, плохая оптимизация. Может пишут на нем кривыми ручками? Не знаю, может кто-то в комментариях выскажет.
    HLSL — шейдерный язык DirecrX. Что такое шейдерный? На нем пишут алгоритмы закрашивания поверхностей в DirectX. Даже один товарищ сделал рендер на HLSL. Всё бы ничего, но платформа программно-зависимая. Только DirectX от Мелкомягких.
    DirectCompute — прикладной (к DirectX, к чему еще) язык программирования от Мелкомягких. Частенько, с помощью него на видеокарты вешают физику.
    GLSL — шейдерный язык OpenGL. А OpenGL, как мы знаем, поддерживает подавляющее большинство железок, работает на Windows, Linux, OSX. Так что вариант вроде бы самый выигрышный. Честно, серьезного софта я на нем не видел, но думаю, есть повод задуматься. Попробовать, а не искать оправдания, почему его не используют.
    В негра-фических вычислениях GLSL пользуется популярностью в WebGL приложениях. Можете сами посмотреть как работает unbiased render на WebGL, и мышкой помешать пиксели на экране.

    Есть ролик, показывающий производительность кода, написанного с помощью разных фреймворков на Nvidia GeForce GTS250 и Core i5.

    Это видео — не абсолютный показатель. Во-первых инфа могла устареть, а вдруг, OpenCL уже быстрее всех на свете? Во-вторых, GTS250 — это же не топовая видеокарта, чтобы оценивать производительность OpenCL на тех же майнинг фермах.

    На мой взгляд, наиболее подходящие платформы:
    1. GLSL в виду его универсальности, стабильности и скорости. Минус — неудобство программирования.
    2. OpenCL — универсален, всеяден. Задействует все поддерживаемые CPU и GPU. Минус — есть недоработки.
    3. Совмещать 1 и 2.

    Задач, которые нуждаются в вычислениях на GPU великое множество. Инженерных, научных, финансовых, графических. Я же сконцентрируюсь на рендеринге (о котором я расскажу чуть дальше), так как занимаюсь графикой, и мне есть что сказать на этот счет.

    Аппаратная Растеризация


    Первое, что приходит в голову — облачные игры (см. Onlive). Облачная отрисовка игр — это когда требовательная к ресурсам игра рисуется удаленно, на вычислительном сервере, а готовая картинка со звуком присылается пользователю. Пользуются этим, если компьютер пользователя едва тянет эту же игру на самых низких настройках, или вообще несовместим с этой игрой.

    Ролик о том, как на Android планшете можно играть требовательные к железу игры:


    Итак, теперь вернемся к системе облачно-распределенного рендеринга, которую я хочу предложить.

    ОБЛАЧНЫЙ РЕНДЕРИНГ


    Или распределенный? Вернее облачный, только облако распределенное. Облачно-распределенный рендеринг.
    Я бы хотел остановиться на рендеринге, но не на растеризации, а на более серьезных и глубоких алгоритмах, таких как unbiased рендеринг, о котором я уже всем уши прожужжал.
    Как примерно выглядит unbiased рендер на GPU — на примере Octane Render (Nvidia CUDA)


    Алгоритм хорош тем, что позволяет рендерить глобальное освещение (свет, отражения света, отражения отражений, отражения отражений отражений, и т.д.) в реальном времени, пусть и с большим шумом.
    Но чем больше производительность железки — тем быстрее изображение прочищается от шума.

    Но не бросать же в беде обладателей Радеонов! Есть рендеры, задействующие OpenCL:
    Это Cycles Render (opensource), IndigoRT, SmallLuxGPU (тоже opensource)

    SmallLuxGPU


    Вообще, думаю, время покажет, что лучше: писать свой софт, или разбираться в чужом коде.

    В каком виде подавать?
    1. Через плагин 3d редактора.
    2. Через браузер с жаваскриптом. Кстати, можно сделать что-то вроде «кинул ссылочку — показал кому-то 3д объект».

    А как использовать эту систему: за деньги, или даром для друзей или ради интересного проекта — пользователи решат сами.

    Может и задачи на CPU распределим?


    Как мы знаем, графические видеоадаптеры обладают достаточно высокой (по сравнению с CPU) производительностью в многопоточных вычислениях. Но вовсе не обязательно списывать CPU со счетов. Есть задачи, которые очень сложны в написании, или нецелесообразны в использовании GPU.

    Хотя, в целом, мое мнение отражает вот эта картинка:
    image
    Ну а пост без баяна — не пост.

    Идеологическая составляющая проекта


    Вычисления — лишь часть ресурсов, которые нуждаются в перераспределении. Одни нуждаются в производительном железе, у других оно стоит незадействованное. То же самое касается и других ресурсов: деньги, вода, пища, энергия, тепло. У одних избыток, не приносящий радости — у других недостаток, доставляющий дискомфорт.
    Человечество нуждается в взаимопомощи во всех аспектах жизни. А рендеринг и распределенные вычисления — лишь малая часть ресурсов, которыми мы можем помочь друг другу. Все-таки целесообразнее задействовать существующие простаивающие мощности, чем покупать новые железки?
    Это я к тому, что за распределенными вычислениями будущее! Я вовсе не утверждаю, что проект должен развиваться на голом энтузиазме, а разработчики — питаться святым духом.

    ИТОГО


    Если эта тема внезапно кого-то заинтересовала — предлагаю, товарищи, обсудить!
    Метки:
    Поделиться публикацией
    Комментарии 34
    • +2
      Печально что нету реальных сервисов для предоставления собственных мощностей. Т.е пока деньги можно только майнить. Была кстати тема о том как PIXAR бесплатно предоставляет свои сервера для рендеринга, я думаю можно было бы сделать аналогично только вычислительные мощности предоставлялись ото всех желающих.
      • 0
        Для игр не подойдет — слишком высокий лаг, а для 3д дизайнеров мне кажется это не очень востребовано, ибо какой моделер без своего железа?
        А больше рынков и нет, мне кажется.
        • 0
          Ну для моделирования одной картинки, пусть даже большой, своего железа может и хватить. И то, стоит ли ждать пол часа (к примеру), если можно отправить в сеть и получить результат через пол минуты? А если, к примеру, нужно отрендерить ролик? Там и днями можно ждать… А задача хорошо распределяется на много компов, потому, в идеале, можно получить результат очень быстро…
          • 0
            Ну вообще-то аренда хороших редер-ферм — неплохо так стоит. А вот школьники, в свободное от Варкрафта и Танков время вполне могли бы отдавать мощности своей видеокарты за полкопейки. Да, доступность каждой конкретной железки не гарантируется, но за счет общего их числа вполне можно было бы жить.
            • +2
              Товарищ, давай рассуждать логически.


              До игр не дойдет — слишком высокий лаг
              Ну я же дошел до Onlive! У меня пинг был 50мс из-за бугра! это всего лишь 1/20 секунды, я почти ничего не замечал. Хотя, были подлагивания, не спорю.

              какой моделер без своего железа
              Что нужно моделеру? В первую очередь, чтобы во вьюпорте всё быстро крутилось-вертелось. Для этого достаточно какой-нибудь простенькой Quadro или Firepro, с небольшим количеством шейдерных ядер. Рендеринг, симуляция жидкости и газов можно кинуть в облако на просчет, какие вопросы? ;)
              • 0
                Научные вычисления… Я бы скормил оптимизацию своей модели ГА на такой ферме, если не очень дорого.
                • 0
                  Для игр не подойдет — слишком высокий лаг


                  Sony и Gaikai с вами не согласны.
                • 0
                  Она была и провалилась. поддерживать ее некому было, а покупать никто не стал. В то время было не интресно. Но те кто учавствовал, говорят что рендеры обрабатывались чуть ли не со скоростью закачки файлов
                  • –1
                    • +1
                      А смысл? Это посредник между майнером и пулом, который себе дерет конский процент. Из его части, собственно, и оплачиваются рефералы. Зачем он нужен, если можно майнить напрямую на пуле?
                  • +9
                    Нужно больше тегов!
                    • +4
                      После «Ленин, сиськи» фантазия, приминительно к статье о IT, видимо просто закончилась…
                      • +2
                        Да, после Ленин, сиськи уже не мог ничего придумать.
                        Чего бы еще дописать?
                        • 0
                          хе. это ж — жёсткая найопка. тег есть, а сисек нет. всё прогрессивное человечество выражает вам своё «фе».
                          • 0
                            Вынужден признать, да. Я всех найопал, сисег тут нет :)
                    • +1
                      Я все равно не понял цепочки. Что берется от пользователя? Что отдается? Написано лишь что есть некая штука, на GLSL/OpenCL которая занимается рендерингом чего-то используя «ваши видеокарты».
                      • +3
                        А можно ссылку-источник вот для этого?
                        «Firestream — фреймворк для GPGPU вычислений на видеокартах AMD»

                        Насколько мне известно, AMD давным давно оставила поддержку только OpenCL для GPGPU. Хотя могу и ошибаться.
                        • 0
                          > майнинг оказался более прибыльным на FPGA-шечках, чем на Радеончиках
                          Что имеется ввиду под «FPGA-шечками»? Для тех, кто не в курсе.
                          • –1
                            Специализированные ASIC'и.
                            • 0
                              Теперь человеку стало ясно :)
                              Это такой специализированный многоядерный процессор.
                              • +1
                                Только FPGA и ASIC — немного разные вещи.
                          • 0
                            Можно вопрос, Можно ли с помощью GPU увеличить скорость обработки как SQL так и PHP ???

                            Если GPU намного мощнее чем CPU не получится ли так что в будущем если не будет хватать ресурсы сервера, то поставил видюшку и твой сервер стал работать 1,5 раза быстрее ??
                            • 0
                              SQL и РНР в общем случае, скорее всего, нет.

                              GPU быстрее CPU за счет того, что GPU представляет собой много небольших специализированных потоковых процессоров. Поэтому выигрыш можно получить только на тех задачах, которые легко можно распараллелить: обработка сигналов (звук, изображение, видео и т.д.), научные вычисления (физика, астрофизика, молекулярная физика, прогноз погоды и климата), 3д рендеринг, компьютерное зрение, медицинская визуализация и т.д.

                              Идеальная задача: большой объем входных данных, высокая степень параллелизма, слабая зависимость между элементами входных данных.

                              Хотя, если надо отсортировать кучу данных в БД, то это можно переложить на плечи GPU.
                              • 0
                                За SQL не скажу, но вот функции PHP типа array_map/array_reduce, циклы foreach (с определенными ограничениями, вероятно) должны сильно ускориться если колбэки сложной логики не содержат и на блокируемые ресурсы не завязаны. Вероятно сервера на неблокируемых сокетах (опять-таки без использования сложной логики и блокируемых ресурсов). В общем, функциональное и асинхронное программирование, но вот для задач типа CRUD вряд ли сильное преимущество получится, если вообще будет, да и принципы написания кода придется очень изменить — вряд ли оно того стоит, а писать придется много, чтобы использование видях было прозрачным для разработчика, было только заботой админа. Вот для языков заточенных под многопоточность by design (в частности erlang и golang) может очень хорошее ускорение получиться.
                              • +1
                                Nvidia анонсировала ящики с Теслами в начале года.
                                • 0
                                  и что?
                                  Вам нужна Тесла? Мне нет)
                                  • 0
                                    Это в тему вычислений на GPU, которые были и раньше (в основном в суперкомпьютерах), но теперь стали доступны массовые решения (от VGX до GRID).
                                • 0
                                  Я как-то тоже задумывался о подобных сервисах. И тоже был удивлен, что на данном рынке ничего толкового нету.
                                  Например интересная задумка с обменом неиспользованными мощностями. Да, у каждого 3д-шника должны быть свои мощности, но они ведь простаивают большую часть времени. А хорошо бы их заставить обсчитывать чужие сцены, в обмен на некие баллы, за которые потом можно рендерить свои сцены или банально продать.
                                  Кстати, с выходом нового железа для биткоин майнинга, может высвободиться довольно много уже окупленного GPU железа, которое люди будут готовы сдавать в аренду за некий достаточно вменяемый % к стоимости электрики. Тот кто подхватит этот рынок, может хорошо заработать.
                                  • 0
                                    Мелкомягких

                                    Вроде бы не холивар, а про GPU.
                                    • 0
                                      Это была острота.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                        • 0
                                          А учитывая появление специализированных железок, которые кроме подсчета sha256 ничего и не умеют, зато весьма производительны и стоят вполне умеренные деньги…
                                          • НЛО прилетело и опубликовало эту надпись здесь

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.