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