Tipo de valor de retorno de thrust :: remove_if
Eu tenho duas matrizes de inteirosdmap
edflag
no dispositivo do mesmo comprimento e eu envolvi-os com ponteiros de dispositivo de impulso,dmapt
edflagt
Existem alguns elementos na matriz dmap com valor -1. Eu quero remover esses -1 e os valores correspondentes da matriz dflag.
Eu estou usando a função remove_if para fazer isso, mas não consigo descobrir qual é o valor de retorno desta chamada ou como devo usar esse valor retornado para obter.
(Eu quero passar esses arrays reduzidos para oreduce_by_key
função onde dflagt será usado como as chaves. )
Eu estou usando a seguinte chamada para fazer a redução. Por favor, deixe-me saber como posso armazenar o valor retornado em uma variável e usá-lo para abordar as matrizes individuaisdflag
edmap
thrust::remove_if(
thrust::make_zip_iterator(thrust::make_tuple(dmapt, dflagt)),
thrust::make_zip_iterator(thrust::make_tuple(dmapt+numindices, dflagt+numindices)),
minus_one_equality_test()
);
onde o predador functor usado acima é definido como
struct minus_one_equality_test
{
typedef typename thrust::tuple<int,int> Tuple;
__host__ __device__
bool operator()(const Tuple& a )
{
return thrust::get<0>(a) == (-1);
}
}