3

私の計画は、ピアソンの相関を使用して距離行列を計算し、距離行列から各ノード (q=ln(n)) の q-最近傍を取得し、それらを結果ベクトルに入れることです。相関関数のループ内で STL プライオリティ キューを使用して C++ で実行しました。

しかし、GPUでそれを行う方法はあると思いますか?

  1. GPUで同じことを行うにはどうすればよいですか(おそらくThrustの方が簡単です!)
  2. GPU でプライオリティ キューを実装する方法は?

これが私のCPU(C ++ STL)コードです:

例えば、

      距離行列
-----------------------
 0 3 2 4
 3 0 4 5
 2 4 0 6
 .....

オブジェクト ベクトルでの出力
=================

    ソース ターゲット ウェイト
--------------------------------
0 2 2
0 1 3 .... (エッジの重みでソート)

1 0 3
1 2 4

2 0 2
.....


calculatePearsonCorrelation(float vector1[], float vector2[], int m) {
               // float distancePearson(ベクトル vector1, ベクトル 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) {
            ファウト
4

1 に答える 1

1

Thrust の sortを使ってみましたか? 最初の q 個の要素を読み取るだけです。十分な要素があれば、かなりの速度向上が見られるでしょう。

于 2011-03-01T18:04:50.403 に答える