Функция Opencl atomic_add() возвращает неверное значение
Хорошо провести время
у меня есть проблема в OpenCL 1.2.
Послушайте, у меня есть массив как глобальный в ядре, а размер группы равен 1000.
Проблема в том, что функция atomic_add() работает неправильно.
Мой код ядра :
buffer[3] = 100; atomic_add(&buffer[3], 1);
если я создам 1000 потоков, то ожидаю, что значение buffer[3] будет равно 1100, не так ли?
но поведение программы не определено.
иногда это будет 1100, иногда 1064, иногда 1093 и т. д...
Что я уже пробовал:
я также включаю расширение opencl, как показано ниже :
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
но проблема все равно существует.
в другом проекте я создам простой проект opencl, и atomic_add работает правильно, и я проверил почти всю конфигурацию проекта, но я не знаю, где находится проблема.
Вы не могли бы мне помочь?
спасибо