Почему GLSL очень редко используют для GPGPU?

Хочу задать программистам давно мучащий меня (программиста с меня не вышло) вопрос.

Некий товарищ когда-то выложил топик о сравнении OpenCL, CUDA, GLSL, OpenMP. В тестах, проведенных там скорость вычислений на Radeon с использованием GLSL была наивысшей. Потенциал видеокарт ATI нераскрыт из-за неоптимизированности OpenCL, в то время как GLSL показывает себя лучшим образом.

Кроме того, есть вот такое Видео, где демонстрируемая скорость GLSL вычислений на GTX570 даже чуть-чуть превышает «скорость Куды».

Кроме того, GLSL вычисления используется в WebGL: WebGL Path Tracing, Fluid Simulation.

Исходя из всего этого становится ясно, что на GLSL можно вычислять физику и рендерить трассировкой пути.

Допустим, в GLSL нету сложных функций — так их же можно вычислить через простые?

Допустим, производители коммерческих программ по договорренности с производителями железа продвигают определенную платформу для вычислений, но дело обстоит так даже в OpenSource программах.

GLSL работает на всех ОСях и на всех видеокартах.

Чего только не используют: PhysiX, CUDA, FireStream, OpenCL а вот ускорение вычислений на GLSL почти ничего не слышно.
  • Вопрос задан
  • 7569 просмотров
Пригласить эксперта
Ответы на вопрос 4
xanep
@xanep
Потому что GLSL(+OpenGL) предназначен для отрисовки картинки. Чтоб делать параллельные вычисления с помощью OpenGL+GLSL, нужно изгаляться, представлять данные в виде текстуры, а все вычисления — как блендинг текстур. Это примерно как вырезать гланды через попу. OpenCL же был создан как стандарт, аналогичный OpenGL, но не для отрисовки, а для параллельных вычислений.
Вот эта статья ответит на все ваши вопросы habrahabr.ru/post/72247/
Особенно обратите внимание на врезку (3-й абзац), там написано почему редко используются OpenGL+GLSL. Ну а в конце статьи написано почему OpenCL такой медленный на видеокартах ATI. Думаю, что OpenCL уже сейчас должен работать хорошо на новых видеокартах от ATI (либо будет в ближайшем будущем).
Ответ написан
@BrainHacker
Попробую ответить так: GLSL не используют, потому что это не нативная технология производителей. Для Nvidia нативной является CUDA, для AMD — Intermediate language (а не OpenCL). На Intermediate language пишется по сути тот же шейдер. Сравнений по скоростям привести не могу, так как не писал на GLSL.
Ответ написан
@megalol
Никому не нужен константный прирост скорости, его можно добиться посидев ничего не делая.
Есть более важные вещи — инструментарий, сообщество, библиотеки и реюзабельность кода. CUDA бьет всех по всем фронтам, и дело не в пиаре
Ответ написан
Комментировать
@Robotex
Потому что во-первых, это сложнее, а во-вторых, медленнее, чем предназначенные для GPGPU либы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы