Мой план состоит в том, чтобы рассчитать матрицу расстояний, используя корреляцию Пирсона, и получить q-ближайших соседей для каждого узла (q = ln (n)) из матрицы расстояний и поместить их в вектор результатов.Я сделал это в C ++, используя очередь приоритетов STL внутри цикла функции корреляции.
Но как вы думаете, есть ли способ сделать это в GPU?
- Может кто-нибудь помочь мне, как я могу сделать то же самое в GPU (вероятно, Тяга будет проще для меня!)
- Как реализовать очередь с приоритетами в графическом процессоре?
Вот мой код процессора (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