我想在我的CUDA应用程序中使用推力减少。因此,我包括标题并调用函数:
#include <thrust\reduce.h>
__host__ void reduction(){
unsigned int t = 0;
thrust::reduce(t,t);
}
但是我得到了编译错误(只有一种类型):“name后跟”::“必须是类或命名空间”。问题是一个名为xutility的文件(我还没有触及)。所有错误都与以下类定义有关:
// TEMPLATE CLASS iterator_traits
template<class _Iter>
struct iterator_traits
{ // get traits from iterator _Iter
typedef typename _Iter::iterator_category iterator_category;
typedef typename _Iter::value_type value_type;
typedef typename _Iter::difference_type difference_type;
typedef difference_type distance_type; // retained
typedef typename _Iter::pointer pointer;
typedef typename _Iter::reference reference;
};
我不是真正参与模板编程。我做错了什么?
答案 0 :(得分:1)
Thrust例程都设计为从主机端而不是在内核中调用。
有关使用thrust::reduce
的示例,请参阅此内容。
https://github.com/thrust/thrust/blob/master/examples/sum.cu