OpenCL - пустая трата вычислительной мощности хоста

Я новичок в OpenCL, скажите, пожалуйста, что хост-процессор можно использовать только для выделения памяти устройству, или мы можем использовать его как устройство openCL. (Поскольку после того, как распределение будет выполнено, центральный процессор будет простаивать).


person Nirley Gupta    schedule 16.02.2012    source источник
comment
Просто погуглив «ЦП OpenCL», вы получите ответ.   -  person James    schedule 16.02.2012


Ответы (2)


Вы можете использовать процессор в качестве вычислительного устройства. Opencl даже позволяет многоядерным/процессорным системам сегментировать ядра на отдельные вычислительные блоки. Мне нравится использовать эту функцию для разделения процессоров в моей системе на группы на основе узлов NUMA. Можно разделить ЦП на вычислительные устройства, которые используют один и тот же уровень кэш-памяти (L1, L2, L3 или L4).

Вам нужна платформа, которая его поддерживает, например AMD SDK. Я знаю, что есть способы использовать платформы Nvidia и AMD на одной машине, но мне никогда не приходилось этого делать.

Кроме того, система событий/обратных вызовов opencl позволяет вам использовать ваш процессор, как обычно, пока выполняются ядра графического процессора. Таким образом, вы можете использовать openmp или любой другой код на хосте, пока ждете завершения работы ядра gpu.

person mfa    schedule 16.02.2012
comment
Я инициализировал и играл с вычислительными контекстами ЦП и ГП, работающими одновременно, но никогда в производственном сценарии. Я ожидаю, что ОЧЕНЬ разные потребности и скорости обоих этих вычислительных устройств затруднят выполнение сложных вычислений на обоих. - person Ani; 16.02.2012
comment
Это всегда будет зависеть от проблемы. Я читал о реализации BLAS, в которой процессор обрабатывал края матрицы странной формы, в то время как графический процессор обрабатывал красивые внутренние матрицы NxM. В этой книге* есть целая глава о том, как использовать ЦП и ГП для вычисления столкновений частиц разного размера. *developer.amd.com/zones/OpenCLZone/universities/OpenCLTextBook / - person mfa; 16.02.2012

Нет причин, по которым ЦП должен простаивать, но ему нужна отдельная работа. После отправки работы в OpenCL вы можете:

  1. Займитесь чем-нибудь другим, например, подготовьте следующий набор работ или выполните расчет чего-то совершенно другого.
  2. Настройте ЦП как другое вычислительное устройство и передайте ему часть работы.

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

Это та же самая проблема, с которой пришлось столкнуться кодировщикам OpenGL. Избегайте привязки к процессору или графическому процессору и балансируйте между ними для лучшей производительности.

person Paul S    schedule 01.03.2012