Дни использования Cg или GLSL для GPGPU почти закончились. Тем не менее, они интенсивно используются для 3D-графики и будут использоваться таким образом в обозримом будущем. GLSL и Cg использовались только для научных вычислений, потому что они были единственной игрой в городе. Не было другой альтернативы для вычислений общего назначения на GPU.
Единственная реальная причина использовать GLSL для GPGPU прямо сейчас - быть независимым от платформы. Если вам абсолютно необходимо иметь возможность запускать свое программное обеспечение на различных графических процессорах, это пока еще путь. OpenCL изменит это в ближайшем будущем.
Причина, по которой научные вычисления переходят на такие вещи, как CUDA и OpenCL, многочисленна. Эти библиотеки предоставляют вам лучший доступ к аппаратному обеспечению графического процессора и намного больше прозрачности в узких местах производительности. Это облегчает получение максимальной производительности от графического процессора. CUDA и OpenCL также предлагают функции (например, совместно используемую память), которые просто недоступны в GLSL или Cg, но имеют решающее значение для получения хорошей производительности во многих алгоритмах (например, транспонирование матрицы). Другая причина заключается в том, что CUDA и OpenCL предоставляют вам доступ к графическому процессору, не требуя графического контекста, что позволяет, среди прочего, удаленно использовать графический процессор компьютера для вычислений.