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が同じ述語で機能することを追加したかっただけです。