CPU+GPU. С чего начать?
Для начала нужно разделять код хоста и код ядра. Ядро в общем случае пишется ТОЛЬКО на C, а точнее на его диалекте для openCL. Для Nvidia можно писать на своеобразном ассемблере. Код хоста просто дергает функции opencl и может быть на чем угодно, привязка для python есть. Смысла в подобном не вижу, ибо opencl - сишный код.
По второму вопросу: есть CUDA. Есть FPGA с кастомным дизайном.
В любом случае разработка для параллельных вычислений должна начинаться с параллельного алгоритма. Некоторые задачи не параллелятся.
1. mathema.tician.de/software/pyopencl
2. GLSL - это язык программирования шейдеров, если вам не визуализацию, а возвратить результаты, то не стоит. Альтернативы - CUDA (с ATI - сразу нет).