Размер локального буфера __local int buf[7072]
(28288 байт) слишком велик. Я не знаю, насколько велика общая память для AMD Radeon Pro 450, но, скорее всего, она составляет 32 или 64 КБ на вычислительную единицу.
32768/28288 = 1
, 65536/28288 = 2
означает, что только 1 или максимум 2 волновых фронта (64 рабочих элемента) могут работать только одновременно, поэтому занятость вычислительного устройства очень очень низкая, следовательно, низкая производительность.
Ваша цель должна состоять в том, чтобы максимально уменьшить локальный буфер, чтобы одновременно обрабатывать больше волновых фронтов.
Используйте CodeXL
для профилирования вашего ядра - есть инструменты, чтобы показать вам все это.
В качестве альтернативы вы можете взглянуть на электронную таблицу CUDA occupancy calculator
excel, если не хотите запускать профилировщик, чтобы получить более полное представление о том, что это такое.