2010-11-21 26 views
3

私の計画は、Pearsonsの相関を使用して距離行列を計算し、距離行列から各ノード(q = ln(n))についてq最近傍を取得し、ベクター。私はC++で、相関関数のループ内でSTL優先順位キューを使用していました。CUDA on Thrust:優先キューを実装する方法

しかし、GPUで行う方法はありますか?

  1. 誰もがGPUでプライオリティキューを実装するためにどのよう
  2. (おそらく推力は私のために容易になります!)どのように私はGPUで同じことを行うことができ、私を助けることができますか?

ここでは私の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

あなたはThrust's sortを使用してみましたか?あなたは最初のq要素を読み出すことができます。十分な要素がある場合は、まあまあのスピードアップが見られるでしょう。

関連する問題