Ядро OpenCL: параллельное суммирование в переменной __global - PullRequest
0 голосов
/ 25 мая 2018

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

float a = ...;// Назначаем разные значения для каждого потока

Gvar [1] + = a;// Делаем сумму одновременно с одним и тем же индексом глобальной переменной

Спасибо

1 Ответ

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

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

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

Обратите внимание, что большинство элементарных функций недоступно для типов данных с плавающей запятой,поэтому вам нужно будет использовать целочисленные типы или альтернативный метод для решения вашей проблемы.

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