Я хочу использовать thrust::reduce
для поиска максимального значения в массиве A. Однако A[i]
следует выбирать в качестве максимального только в том случае, если оно также удовлетворяет определенному логическому условию в другом массиве B. Например, B[i] должно быть истинным. Это их версия тяги:: уменьшить, которая делает это. Я просмотрел документацию и нашел только следующий API;
thrust::reduce(begin,end, default value, operator)
Однако мне было любопытно, подходит ли их версия для моей проблемы?
РЕДАКТИРОВАТЬ: Компиляция завершается ошибкой в последней строке!
typedef thrust::device_ptr<int> IntIterator;
typedef thrust::device_ptr<float> FloatIterator;
typedef thrust::tuple<IntIterator,FloatIterator> IteratorTuple;
typedef thrust::zip_iterator<IteratorTuple> myZipIterator;
thrust::device_ptr<int> deviceNBMInt(gpuNBMInt);
thrust::device_ptr<int> deviceIsActive(gpuIsActive);
thrust::device_ptr<float> deviceNBMSim(gpuNBMSim);
myZipIterator iter_begin = thrust::make_zip_iterator(thrust::make_tuple(deviceIsActive,deviceNBMSim));
myZipIterator iter_end = thrust::make_zip_iterator(thrust::make_tuple(deviceIsActive + numRow,deviceNBMSim + numRow));
myZipIterator result = thrust::max_element(iter_begin, iter_end, Predicate());