0
如何用多種類型的binary_functions使用推力減小?在我的情況下,我有一個結構FaceUV,它有一個'距離'成員。我想計算所有FaceUV的距離!= 0.我該怎麼做?用binary_function和多種類型推力減少
我認爲這是這一點,但它並不能編譯:
struct FaceHasUVCmp : public thrust::binary_function<FaceUV, uint32_t, uint32_t> {
__device__
uint32_t operator()(const FaceUV& o1, const uint32_t& count) const {
return count + (o1.distance != 0);
}
};
float get_percent_of_FACES_with_UVs(thrust::device_ptr<FaceUV> face_uvs, unsigned int size){
uint32_t num_with_UVs = thrust::reduce(thrust::cuda::par, face_uvs, face_uvs + size, 0, FaceHasUVCmp());
return num_with_UVs/(float)size;
}
它實際上可以用'thrust :: reduce',但是您需要爲您的類型實現自定義迭代器,而不是使用自定義二元函數 – talonmies