Что мы можем сделать с OpenCL? - PullRequest
4 голосов
/ 19 апреля 2011

Я читал об OpenCL и нашел эту строку:

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

Допустим, мне нужно выполнить операцию с интенсивным использованием ЦП или алгоритм на Java или Clojure (или, может быть, даже запустить Hadoop MapReduce). Могу ли я выполнить операцию в GPU с помощью OpenCL? если да, то почему я это сделал?

Если у нас есть процессор, зачем использовать графический процессор?

Каковы сценарии приложений OpenCL?

Я читал, что OpenCL обеспечивает параллельное программирование, означает ли это, что он будет разделять целевую работу между процессором и графическим процессором? или только через GPU?

Ответы [ 3 ]

7 голосов
/ 19 апреля 2011

OpenCL предоставляет переносимый интерфейс для программирования на параллельных машинах.Программы OpenCL могут быть запущены на CPU или GPU.Я не видел технологии, которая позволяла бы запускать код одновременно и на процессоре, и на графическом процессоре.

Использование графических процессоров для вычислений общего назначения позволяет использовать тот факт, что графические процессоры на самом деле созданы из сотен или даже тысяч простых,мелкие обрабатывающие элементы (ПЭ).Для некоторых задач эта архитектура может выполнить задачу за долю времени, требуемую ЦП.

Одним из недостатков графических процессоров является то, что они действительно являются мутантами SIMD (Single Instruction Multiple Data) машин;таким образом, большие группы PE вынуждены выполнять одну и ту же операцию в одно и то же время, но с разными данными.Это ограничение делает разработку программы немного сложнее.

Графические процессоры очень хороши для любой задачи, которая может быть распараллелена без необходимости большого взаимодействия между различными потоками.Такие технологии, как NVIDIA CUDA и OpenCL, стали широко использоваться в научных приложениях и высокопроизводительных вычислениях, которые в значительной степени используют параллелизм.

5 голосов
/ 20 апреля 2011

OpenCL был разработан после того, как ученый обнаружил, что архитектура GPU способна очень эффективно выполнять вычисления линейной алгебры.

Задачи линейной алгебры, как правило, очень легко распараллелить и быть достаточно простыми для отдельных элементов.В большинстве векторных и матричных операций нужны только четыре основные математические функции +, -, / и *.Кроме того, некоторые сравнения для поиска Max и Min, и один может выполнять большую работу в параллельной среде.Если размер проблемы достаточно велик, чтобы дополнительное время копирования данных из ОЗУ в графический процессор и обратно было намного меньше, чем прирост скорости графического процессора, это приводит к значительному увеличению производительности.Первые расчеты были выполнены путем преобразования задач в графические задачи и обратно.OpenCL был разработан для обеспечения чистого интерфейса для вычислений.

OpenCL подходит для задач, которые могут выполняться параллельно без особых зависимостей и которые требуют больших вычислительных ресурсов.Линейная алгебра, алгоритмы поиска, преобразования сигналов и трехмерных сцен и проверки на слияния являются классическими примерами.

0 голосов
/ 09 декабря 2014

Intel, безусловно, не в восторге от openCL. Я не думаю, что смогу установить драйверы на мою систему Linux, они сделали это так неловко. Существуют и другие технологии, такие как чипы цифровой обработки сигналов от Texas Instruments. Я бы использовал openCL, если бы мог. Однако есть несколько преимуществ использования, скажем, кластера дешевых плат ARM для довольно большого количества приложений. Простота программирования очень важна, а не гипотетически, но никогда не используется.

...