Извлечь индекс минимизатора для каждого нижнего индекса, используя `accumarray'с gpuArray
У меня есть массив, если значения vals', and a corresponding array of subscripts
subs'с повторными подписками в выходной массив. Я хотел бы извлечь для каждого нижнего индекса индекс минимизатора соответствующих элементов в 'vals'. Для этого у меня есть следующий кусок кода:
function i = minimizer(idx)
[~, i] = min(vals(idx));
i = idx(i);
end
accum = accumarray(subs, (1:numel(vals))', [], @minimizer);
Теперь предположим, что "subs" - это gpuArray. Этот код не работает из-за ограничения accumarray для gpuArrays - я не могу указать пользовательскую функцию агрегирования. Есть ли быстрая альтернатива, которую я могу использовать для массивов GPU?
PS - то, о чем я думал, это встраивание всей информации в сложный массив, так что действительные (vals) - это значения, а imag (vals) - это индексы. Но, похоже, неясно, как обеспечить, чтобы функция `min 'сравнивала только значения, например, на какой коэффициент мне нужно умножить индексы, чтобы они стали незначительными при сравнении (я могу убедиться, что значения неотрицательно, поэтому сравнение абсолютных значений в порядке).