Я пытаюсь найти минимальное число в массиве, используя Thrust и CUDA.
В следующем примере устройства возвращается с 0:
thrust::device_vector<float4>::iterator it = thrust::min_element(IntsOnDev.begin(),IntsOnDev.end(),equalOperator());
int pos = it - IntsOnDev.begin();
Тем не менее, эта версия хоста отлично работает:
thrust::host_vector<float4>arr = IntsOnDev;
thrust::host_vector<float4>::iterator it2 = thrust::min_element(arr.begin(),arr.end(),equalOperator());
int pos2 = it2 - arr.begin();
тип компаратора:
struct equalOperator
{
__host__ __device__
bool operator()(const float4 x,const float4 y) const
{
return ( x.w < y.w );
}
};
Я просто хотел добавить, что thrust :: sort работает с тем же предикатом.