Существует простая функция, которую я использовал с C++ в прошлом для моделирования простых форм тесселяции. Функция принимает число и делитель. Делитель должен быть () мощностью от - 1), а n должно находиться между 0 и делителем. Он возвращает результат модуля n% (d + 1) с использованием побитового &.OpenCL Alternative Modulo Uses, Advice
Справедливо, что функция выглядит:
unsigned int BitwiseMod(unsigned int n, unsigned int d){ return n & d; }
Я хотел, чтобы эффективно использовать это в OpenCL и мне интересно, если он будет работать, как я тоже себе это. На мой взгляд, модуль - очень дорогостоящая операция на графическом процессоре, но я знаком с ним, чтобы сформировать пространства величин и другие методы для перемещения по данным.
Чаще всего, я бы с большей вероятностью просто написал, что при допущении, что функции имеют некоторые накладные расходы.
x[i] = 8*(i&d)+offset[i]; //OR in other contexts,...
num = i&d+offset[i];
x[num] = data;
Возникает вопрос: Будет ли это полезно или получить в пути, если полезно вы можете дать мне несколько примеров, где я мог бы попытаться применить его.
разве это n & (d-1) вместо n & d? –