
Комментарии 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 если позволяет драйвер по капам констант драйвера, так как в примере указана встройка, значит посчитает.
но мне кажется это интенсивные вычисления, тоесть раскрутит нагрузку.
OpenCL, SYCL и матрицы