O Thrust tem o thrust::reduce_by_key
algoritmo que funciona bem para um problema meu. Eu queria tentar usar o CUB para um controle mais fino de memória e fluxos, bem como interação com meus próprios kernels, mas não parece haver um reduce_by_key
equivalente no CUB. Há, cub::DeviceSegmentedReduce
mas ele não parece gerar uma ordem de chave, e eu precisaria encontrar o início de cada segmento consecutivo de chaves de antemão, o que é seu próprio problema.
O problema é reduzir uma matriz de pares chave-valor em uma matriz onde todas as chaves são únicas e cada valor tem a redução de todos os mesmos valores de chave.
Existe uma maneira fácil de fazer isso com o CUB que não estou vendo?