Я пытаюсь уменьшить количество инструкций и постоянных чтений памяти для ядра CUDA.
В результате я понял, что могу извлекать размеры плиток из постоянной памяти и превращать их в макросы. Как определить макросы, которые оценивают константы во время предварительной обработки, чтобы я мог просто настроить три значения и уменьшить количество инструкций, выполняемых в каждом ядре?
Вот пример:
#define TX 8
#define TY 6
#define TZ 4
#define TX2 (TX * 2)
#define TY2 (TY * 2)
#define OVER_TX (1.0f / float(TX))
Возможно, это уже имеет место (или, возможно, обрабатывается компилятором nvcc), но ясно, что я хочу, чтобы второй блок макросов оценивался препроцессором, а не заменялся в коде, чтобы он не выполнялся в каждом ядре. Есть предложения?