-1

我想在我的 CUDA 应用程序中使用减少推力。因此我包含标题并调用函数:

#include <thrust\reduce.h>

__host__ void reduction(){
    unsigned int t = 0;
    thrust::reduce(t,t);
}

但是我得到编译错误(只有一种类型):“名称后跟“::”必须是类或命名空间”。问题出在一个名为 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;
    };

我不是很喜欢模板编程。我究竟做错了什么?

4

1 回答 1

1

推力例程都设计为从主机端调用,而不是在内核中调用。

有关使用thrust::reduce.

https://github.com/thrust/thrust/blob/master/examples/sum.cu

于 2013-10-06T14:44:12.973 回答