Количество вычислительных блоков OpenCL в многоядерной реализации - PullRequest
0 голосов
/ 16 сентября 2018

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

Все мои ядра выполняются одновременно, и я думаю, что только рабочие группы, выполняющие одно и то же ядро, назначены одномувычислительный блок.Таким образом, я считаю, что у меня есть по крайней мере один вычислительный блок для каждого другого ядра, которое я использую.Я прав?

Я знаю, что могу использовать clGetDeviceInfo и посмотреть в поле CL_DEVICE_MAX_COMPUTE_UNITS, но он не говорит мне, как распределены ядра или сколько вычислительных единиц я использую.

И связано с этимвопрос, если я не укажу, сколько вычислительных единиц будет использоваться с " атрибутом ((num_compute_units (X)))", сколько будет использовано?

Спасибо

1 Ответ

0 голосов
/ 17 сентября 2018

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

...