Обновить

Комментарии 4

Вычисления на видеокартах ассоциируются преимущественно с графикой, научными рассчётами и с недавних пор с нейросетями.

И чуть ниже:

их очень удобно использовать в задачах, напрямую не связанных с перечисленным выше.

Я тут сразу подумал: это что же ещё можно делать массово параллельно на GPU - map-reduce с бизнес логикой? Или что? И дальше идёт пример с перемножением матриц - то есть, классический пример научных вычислений или нейросетей.

Так о чем же статья? Непонятно.

И вопрос. Примерно, очень грубо, насколько быстрее оптимизированного варианта с CPU будут перемножаться матрицы на встроенном GPU? Имеется ввиду какой-нибудь Intel Core 5 или 7 за последние лет 5, например. Или другая формулировка: если расчёт на NVidia 4060 ускоряется в N раз, то во сколько раз ускорится расчёт на встроенном GPU?

Интересует потому, что не каждый комп имеет отдельную мощную GPU плату, но каждый имеет встроенный GPU.

Я тут сразу подумал: это что же ещё можно делать массово параллельно на GPU - map-reduce с бизнес логикой?

Пример простой типовой бизнес-таски для GPU - построить гистограмму по большому объему данных.
В общем случае на GPU map - легко, reduce - задачка со звездочкой, хотя есть готовые кернелы для редукции.

Примерно, очень грубо, насколько быстрее оптимизированного варианта с CPU будут перемножаться матрицы на встроенном GPU?

да, будет быстрее, на сколько - it depends, хотя маленькие матрицы (условно до 512 х 512) на CPU да еще и с векторизацией, могут считаться быстрее.
На некоторых задачах встроенный GPU может быть быстрее чем выделенный, т.к. память общая и нету перекачки RAM <-> VRAM через PCI - это основное узкое горлышко.

Ваще писать бизнес логику на GPU может быть сложновато из-за

  • достаточно низкоуровневого программирования

  • необходимости учитывать кучу особенностей именно GPU

Вот еще неплохая статья про GPGPU https://habr.com/ru/companies/yandex_praktikum/articles/661543/

Спасибо за инфу

нет ну вообще звучит, логично всё, вы хотите сказать, цпу паралелит кернелы так чтоли?)

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

скорость - хорошо, но получается на такую хост - машину поступает таск посчитать матрицу, всё что он может сделать - посчитать. Выдаст быстро результат, но таких результатов надо не 1 допустим.

На некоторых задачах встроенный GPU может быть быстрее чем выделенный, т.к. память общая и нету перекачки RAM <-> VRAM через PCI - это основное узкое горлышко.

я такие большие матрицы не считал(Opengl4.6), но так как разговор о GPU, можно замапать их(ssbo), согласно количеству драйвера, тогда накладные расходы на PCI будут минимальны поидее.

у opengl4.6 есть DSA, и там например некоторые вещи привели в порядок по выставлению состояния.

1024*16*4 байт поидее, нормально значит можно тоже самое делать и на Opengl4.6 если позволяет драйвер по капам констант драйвера, так как в примере указана встройка, значит посчитает.

но мне кажется это интенсивные вычисления, тоесть раскрутит нагрузку.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации