OpenCL предоставляет переносимый интерфейс для программирования на параллельных машинах.Программы OpenCL могут быть запущены на CPU или GPU.Я не видел технологии, которая позволяла бы запускать код одновременно и на процессоре, и на графическом процессоре.
Использование графических процессоров для вычислений общего назначения позволяет использовать тот факт, что графические процессоры на самом деле созданы из сотен или даже тысяч простых,мелкие обрабатывающие элементы (ПЭ).Для некоторых задач эта архитектура может выполнить задачу за долю времени, требуемую ЦП.
Одним из недостатков графических процессоров является то, что они действительно являются мутантами SIMD (Single Instruction Multiple Data) машин;таким образом, большие группы PE вынуждены выполнять одну и ту же операцию в одно и то же время, но с разными данными.Это ограничение делает разработку программы немного сложнее.
Графические процессоры очень хороши для любой задачи, которая может быть распараллелена без необходимости большого взаимодействия между различными потоками.Такие технологии, как NVIDIA CUDA и OpenCL, стали широко использоваться в научных приложениях и высокопроизводительных вычислениях, которые в значительной степени используют параллелизм.