CUDA on Thrust:如何实现优先级队列

时间:2010-11-21 10:05:49

标签: cuda thrust

我的计划是使用Pearsons相关计算距离矩阵,并从距离矩阵获得每个节点(q = ln(n))的q-最近邻居,并将它们放入结果向量中。我是在C ++中使用相关函数循环内的STL优先级队列完成的。

但是你认为,有没有办法在GPU中做到这一点?

  1. 任何人都可以帮助我,我怎么能在GPU中做同样的事情(可能 Thrust 对我来说会更容易!)
  2. 如何在GPU中实现优先级队列
  3. 这是我的CPU(C ++ STL)代码:

    例如,

          distance matrix
    -----------------------
     0 3 2 4
     3 0 4 5
     2 4 0 6
     .....
    
    output in a object vector
    =================
    
        source  target  weight
    --------------------------------
    0 2 2
    0 1 3  ....    (sorted by Edge weight)
    
    1 0 3
    1 2 4
    
    2 0 2
    .....
    
    
    calculatePearsonCorrelation(float  vector1[], float vector2[], int m) {
                   // float distancePearson(vector vector1, vector vector2){
    
                                int i;
                                float a=0,b=0,c=0,d=0, e = 0, sumX=0, sumY=0;
    
                                //m = vector1.size();
    
                                for(i=0;iq){
                            MIN=pqx.top().get_corr();
                            if(corr::iterator it = qNNVector.begin(); it!=qNNVector.end(); ++it) {
                fout 
    

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用Thrust's sort?你可以读出前q个元素。如果有足够的元素,你可能会看到一个不错的加速。