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

3
我的计划是使用Pearson相关系数计算距离矩阵,并从距离矩阵中获取每个节点的q-最近邻居(q=ln(n)),并将它们放入结果向量中。我在C++中使用STL优先队列在相关函数的循环内部完成了这个过程。
但是你认为有没有办法在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(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个回答

1
你尝试过使用Thrust's sort吗?你只需读取前q个元素。如果有足够的元素,你可能会看到相当不错的加速效果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接