OpenCL предлагает доступ только к одномерным массивам с использованием спецификаций C99. Однако моя проблема заключается в двух измерениях, и я использую двухмерные массивы на стороне хоста
Вместо того, чтобы делать мой код менее читабельным путем вычисления индексов, я хотел бы использовать макрос C для получения элемента A [i] [j]
. К сожалению, я плохо разбираюсь в этом и имею мало опыта работы с C. Я думаю, что имею общее представление о том, как это делается, но если бы кто-то мог критиковать, это было бы признательно.
Это будет примерно так:
#define 2d_access(u, y, x) (u[y][x])
где u - матрица, y - строка, а x - столбец, и макрос вернет
значение в u [y] [x]
Матрица размещается статически, поэтому макрос будет иметь компонент WIDTH.
#define 2d_access(u, y, x) (u[y * WIDTH] + x])