CUDA Thrust: reduce_por_clave solo en algunos valores de una matriz, basados ​​en valores de una matriz "clave"

Digamos que tengo dos arreglos de device_vector <byte>,d_keys yd_data.

Sid_data es, por ejemplo, una matriz 2D 3x5 aplanada (por ejemplo, {1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3}) yd_keys es una matriz 1D de tamaño 5 (por ejemplo, {1, 0, 0, 1, 1}), ¿cómo puedo hacer una reducción tal que termine agregando solo valores por fila si el correspondiented_keys el valor es uno (por ejemplo, terminando con un resultado de {10, 23, 14})?

lossum_rows.cu ejemplo me permite agregar todos los valores end_data, pero eso no es del todo correcto.

Alternativamente, puedo, por fila, usar unzip_iterator y combinard_keys con una fila ded_data a la vez, y hacer untransform_reduce, agregando solo si el valor clave es uno, pero luego tendría que recorrer eld_data formación.

Lo que realmente necesito es algún tipo detransform_reduce_by_key Funcionalidad que no está incorporada, pero seguramente debe haber una manera de hacerlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta