Я новичок в OpenCL, скажите, пожалуйста, что хост-процессор можно использовать только для выделения памяти устройству, или мы можем использовать его как устройство openCL. (Поскольку после того, как распределение будет выполнено, центральный процессор будет простаивать).
OpenCL - пустая трата вычислительной мощности хоста
Ответы (2)
Вы можете использовать процессор в качестве вычислительного устройства. Opencl даже позволяет многоядерным/процессорным системам сегментировать ядра на отдельные вычислительные блоки. Мне нравится использовать эту функцию для разделения процессоров в моей системе на группы на основе узлов NUMA. Можно разделить ЦП на вычислительные устройства, которые используют один и тот же уровень кэш-памяти (L1, L2, L3 или L4).
Вам нужна платформа, которая его поддерживает, например AMD SDK. Я знаю, что есть способы использовать платформы Nvidia и AMD на одной машине, но мне никогда не приходилось этого делать.
Кроме того, система событий/обратных вызовов opencl позволяет вам использовать ваш процессор, как обычно, пока выполняются ядра графического процессора. Таким образом, вы можете использовать openmp или любой другой код на хосте, пока ждете завершения работы ядра gpu.
Нет причин, по которым ЦП должен простаивать, но ему нужна отдельная работа. После отправки работы в OpenCL вы можете:
- Займитесь чем-нибудь другим, например, подготовьте следующий набор работ или выполните расчет чего-то совершенно другого.
- Настройте ЦП как другое вычислительное устройство и передайте ему часть работы.
Лично я, как правило, чаще нуждаюсь в первом случае, так как редко сталкиваюсь с двумя независимыми задачами, которые поддаются стилю OpenCL. Хитрость заключается в том, чтобы поддерживать баланс, чтобы вам не приходилось долго ждать завершения задачи графического процессора или простоя графического процессора, пока процессор выполняет другую работу.
Это та же самая проблема, с которой пришлось столкнуться кодировщикам OpenGL. Избегайте привязки к процессору или графическому процессору и балансируйте между ними для лучшей производительности.