Одна вещь, которую я знаю, может повесить некоторые графические процессоры AMD, это иметь барьер, который выполняется только некоторыми рабочими элементами рабочей группы. Обратите внимание, что это не ошибка в графическом процессоре, спецификация OpenCL явно говорит это о барьере ():
Эта функция должна встречаться всеми рабочими элементами в рабочей группе, выполняющей ядро.
То есть все или все рабочие элементы не должны сталкиваться с барьером. Если только некоторые из них, ваша программа может зависнуть на GPU. Поэтому я бы проверил код OpenCL на такие вещи:
if (localmem[i] > 0) {
barrier(CLK_LOCAL_MEM_FENCE);
}
Вы также можете попробовать использовать Oclgrind в своем коде, это эмулятор OpenCL GPU, который полезен для поиска проблем в коде OpenCL.