小编Ant*_*sev的帖子

快速CUDA推力定制比较运算符

我正在评估CUDA并且目前使用Thrust库对数字进行排序.

我想为thrust :: sort创建我自己的比较器,但它会大幅减速!我只是从functional.h复制代码,创建了自己较少的实现.然而,它似乎以其他方式编译并且工作非常缓慢.

  1. 默认比较器:thrust :: less() - 94 ms
  2. 我自己的比较器:less() - 906 ms

我正在使用Visual Studio 2010.我应该怎样做才能获得与选项1相同的性能?

完整代码:

#include <stdio.h>

#include <cuda.h>

#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/generate.h>
#include <thrust/sort.h>

int myRand()
{
        static int counter = 0;
        if ( counter++ % 10000 == 0 )
                srand(time(NULL)+counter);
        return (rand()<<16) | rand();
}

template<typename T>
struct less : public thrust::binary_function<T,T,bool>
{
  __host__ __device__ bool operator()(const T &lhs, const T &rhs) const {
     return lhs < rhs;
  } …
Run Code Online (Sandbox Code Playgroud)

cuda thrust

4
推荐指数
1
解决办法
2345
查看次数

标签 统计

cuda ×1

thrust ×1