OpenCL - растрата вычислительной мощности хоста - PullRequest
0 голосов
/ 16 февраля 2012

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

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

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

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

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

0 голосов
/ 01 марта 2012

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

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

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

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

...