我用一幅图像中提取的特征点features1建立kdtree,然后用另一幅图像中提取的特征点用bbf算法同时对建立的kdtree进行遍历,结果当特征点数不是特别少时的确比在CPU上速度要快。但我遇到了如下问题:
如果建立kdtree的特征点数为5056,当用以下个数的特征点同时对kdtree进行遍历时,用时如下:
同时进行kdtree遍历的特征点数 GPU上用时(ms)
190 483
1364 499
1753 530
2113 546
2940 983
3898 998
5056 1107
7884 1981
9169 2043
11103 2543
19828 4196
我的线程数为128 线程块数为(n2+127)/128,其中n2为参与遍历kdtree的特征点数,也就是说所有的特征点都同时对同一棵kdtree树进行遍历。我想以上用时应该差不多,可实际用时却相差这么多,4196和483相差了8、9倍,这是为什么啊???
求指导!
|