Потому что GLSL(+OpenGL) предназначен для отрисовки картинки. Чтоб делать параллельные вычисления с помощью OpenGL+GLSL, нужно изгаляться, представлять данные в виде текстуры, а все вычисления — как блендинг текстур. Это примерно как вырезать гланды через попу. OpenCL же был создан как стандарт, аналогичный OpenGL, но не для отрисовки, а для параллельных вычислений.
Вот эта статья ответит на все ваши вопросы
habrahabr.ru/post/72247/
Особенно обратите внимание на врезку (3-й абзац), там написано почему редко используются OpenGL+GLSL. Ну а в конце статьи написано почему OpenCL такой медленный на видеокартах ATI. Думаю, что OpenCL уже сейчас должен работать хорошо на новых видеокартах от ATI (либо будет в ближайшем будущем).