CUDA Thrust: reduction_by_key tylko na niektórych wartościach w tablicy, opartych na wartościach off w tablicy „key”

Powiedzmy, że mam dwie tablice device_vector <byte>,d_keys id_data.

Jeślid_data to na przykład spłaszczona tablica 2D 3x5 (np. {1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3}) id_keys jest tablicą 1D o rozmiarze 5 (np. {1, 0, 0, 1, 1}), jak mogę zrobić redukcję tak, że w końcu dodam tylko wartości w przeliczeniu na wiersz, jeśli odpowiadająced_keys wartość wynosi jeden (np. kończy się wynikiem {10, 23, 14})?

Thesum_rows.cu przykład pozwala mi dodać każdą wartośćd_data, ale to nie do końca prawda.

Alternatywnie, mogę, w przeliczeniu na rząd, użyć azip_iterator i połączd_keys z jednym rzędemd_data na raz i zróbtransform_reduce, dodając tylko wtedy, gdy wartość klucza wynosi jeden, ale wtedy musiałbym przejść przezd_data szyk.

To, czego naprawdę potrzebuję, to coś w rodzajutransform_reduce_by_key funkcjonalność, która nie jest wbudowana, ale na pewno musi istnieć sposób, aby to zrobić!

questionAnswers(2)

yourAnswerToTheQuestion