Здравствуйте, mossad_re, Вы писали:
_>Доброго времени суток. _>У меня следующий вопрос: _>Есть двумерный массив перестановок: _>__device__ int ArrayDev[8][64] = {{.....}};
_>И в теле каждого потока я обращаюсь к его элементам. _>int A = AnyFactor; _>int B = OtherFactor; _>int C = ArrayDev[A][B]; _>......
_>Вопрос, как можно оптимизировать такой доступ? Именно он отнимает много времени. _>Массив ArrayDev определён глобально.
Вариантов много. Наиболее качественный результат можно получить только учитывая особенности алгоритма и доступа к массиву:
— если есть взаимно независимый доступ к элементам, то можно разделить массив на блоки и поместить в отдельные SM;
— если алгоритм доступа имеет однозначную последовательность доступа, то переформатировать массив для параллелизации и маскирования доступа к глобальной памяти;
— другие варианты, учитывающие параллелизацию алгоритма...