Tipo de valor de retorno de empuje :: remove_if

Tengo dos matrices de enterosdmap ydflag en el dispositivo de la misma longitud y los he envuelto con punteros para dispositivos de empuje,dmapt ydflagt

Hay algunos elementos en la matriz de dmap con valor -1. Quiero eliminar estos -1 y los valores correspondientes de la matriz dflag.

Estoy usando la función remove_if para hacer esto, pero no puedo averiguar cuál es el valor de retorno de esta llamada o cómo debo usar este valor devuelto para obtener.

(Quiero pasar estas matrices reducidas a lareduce_by_key Función donde se utilizará dflagt como teclas. )

Estoy usando la siguiente llamada para hacer la reducción. Déjeme saber cómo puedo almacenar el valor devuelto en una variable y usarlo para abordar los arreglos individualesdflag ydmap

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() 
); 

donde el predicador funtor utilizado anteriormente se define 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); 
    } 
} 

Respuestas a la pregunta(1)

Su respuesta a la pregunta