Я пытаюсь использовать конструкцию GFOR, но я даже не могу заставить ее работать для базовых вещей.
Я подозреваю, что цикл GFOR не работает с линейными индексами, я прав?
Вот некоторые примеры кода, которые не работают
af::array x(100, 200);
af::array y(100, 200);
af::array xx(100, 200);
gfor(af::seq i, (100 * 200)) {
xx(i) = x(i) + y(i);
}
Этот должен выполнять простое сложение по элементам (я знаю, что я могу просто сделать xx = x + y, я простохочу показать, что gfor работает не так, как ожидалось).Ошибка: неверный размер ввода: 203 в функции seqToDims.
Еще одна более простая программа, например
af::array x(100, 200);
af::array y(100, 200);
gfor(af::seq i, (100 * 200)) {
y(i) = x(i) + 1;
}
Та же ошибка.
Я виделдокументация, и я думаю, что gfor не работает с линейными индексами, и мне нужно как-то работать «строка за строкой» или «столбец за столбцом», потому что примеры в документации всегда показывают что-то вроде A (span,i), а не A (i).
Кроме того, я действительно хочу сделать что-то простое: у меня есть: изображение массива (строки, столбцы), массив x_ (8, строки * столбцы)), массив топоров (8,1);и скаляр, который находится по сумме (x_ (span, i) * ax) (на самом деле это скалярное произведение, но функция dot () не поддерживается в gfor), этот скаляр вычисляется с использованием столбцов x_ (sizeиз 8) и топор, который тоже имеет размер 8.
Я хочу
e(i) = image(i) - sum<float>(ax * x_(span,i));
Кажется, я не могу заставить его работать, потому что даже простые циклы gfor над работой, которыенеожиданно, что я делаю не так?
Спасибо!