Влияние размерности работы на производительность OpenCL - PullRequest
0 голосов
/ 13 мая 2018

У меня изначально есть рабочие единицы размером 11*11*6779.Ради простоты я не хочу переводить это в 1D глобальный размер работы.Когда, когда я изменил его на 21*21*6779, производительность 5-6x медленнее , чем раньше.насколько я знаю, код не имеет никакого отношения к числу запущенных потоков.

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

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

Интересно,установка размеров рабочего элемента в 21*21*6779 использует слишком много моих рабочих элементов, или размеры просто неудобны для настройки openCL?

1 Ответ

0 голосов
/ 14 мая 2018

Если ваши максимальные рабочие элементы 256x256x256, то почему вы используете 21x21x6779 (где 6779 больше 256)? Обратите внимание, что если размер рабочей группы не указан, среда выполнения попытается выбрать группу, которая может разделить ваш глобальный размер работы. Если ваши измерения нелегко делить на время выполнения, он может выбрать неверные размеры рабочей группы. Это может объяснить, почему производительность меняется в зависимости от общего объема работы. Я рекомендую вам указать размер рабочей группы и сделать глобальный размер работы кратным этому (при необходимости передайте реальный размер в качестве параметров, и в каждом рабочем элементе проверьте, находится ли он в диапазоне; это типичный шаблон, который вы увидите много в OpenCL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...