29 #ifndef FLANN_UTIL_CUDA_RESULTSET_H
30 #define FLANN_UTIL_CUDA_RESULTSET_H
35 __device__ __forceinline__
38 return __int_as_float(0x7f800000);
42 #define INFINITY infinity()
50 template<
typename DistanceType >
87 for(
int i=1; i<
stride; i++ ) {
103 template<
typename DistanceType >
121 template<
typename DistanceType,
bool useHeap >
186 for(
int i=1; i<
k; i++ )
202 for(
int i=0; i<
stride; i++ ) {
216 for(
int i=
k-1; i>0; i-- ) {
225 template <
typename DistanceType>
269 template<
typename DistanceType,
bool useHeap>
337 for(
int i=1; i<
k; i++ )
372 template <
typename DistanceType,
bool useHeap>
437 for(
int i=1; i<
k; i++ )
453 for(
int i=0; i<
stride; i++ ) {
467 for(
int i=
k-1; i>0; i-- ) {
479 template<
typename DistanceType >
525 for(
int i=
count_-1; i>0; i-- ) {
__device__ __forceinline__ float infinity()
static double dist(double x1, double y1, double x2, double y2)
__host__ __device__ void sift_down(RandomAccessIterator array, size_t begin, size_t length, GreaterThan c=GreaterThan())
__host__ __device__ void make_heap(RandomAccessIterator begin, size_t length, GreaterThan c=GreaterThan())
__device__ __host__ void swap(T &x, T &y)
__device__ void insert(int index, float dist)
__device__ DistanceType worstDist()
__device__ void setResultLocation(DistanceType *, int *count, int thread, int stride)
__device__ __host__ CountingRadiusResultSet(DistanceType radius, int max_neighbors)
__device__ bool operator()(DistanceType a, DistanceType b)
__device__ void insert(int index, DistanceType dist)
__device__ DistanceType worstDist()
__device__ __host__ KnnRadiusResultSet(int knn, bool sortResults, DistanceType eps, DistanceType radius)
__device__ void setResultLocation(DistanceType *dists, int *index, int thread, int stride)
const DistanceType radius_sq
DistanceType * resultDist
__device__ void findLargestDistIndex()
DistanceType largestHeapDist
const DistanceType epsError
__device__ __host__ KnnResultSet(int knn, bool sortResults, DistanceType eps)
__host__ __device__ void finish()
__device__ void insert(int index, DistanceType dist)
DistanceType largestHeapDist
const DistanceType epsError
__device__ DistanceType worstDist()
__device__ void setResultLocation(DistanceType *dists, int *index, int thread, int stride)
__device__ void findLargestDistIndex()
const DistanceType radius_sq_
__device__ void insert(int index, DistanceType dist)
DistanceType * resultDist
__device__ DistanceType worstDist()
__device__ void findLargestDistIndex()
__device__ __host__ RadiusKnnResultSet(DistanceType radius, int knn, int *segment_starts, bool sortResults)
DistanceType largestHeapDist
__device__ void setResultLocation(DistanceType *dists, int *index, int thread, int)
__device__ __host__ RadiusResultSet(DistanceType radius, int *segment_starts, bool sorted)
__device__ void setResultLocation(DistanceType *dists, int *index, int thread, int)
__device__ void insert(int index, DistanceType dist)
__device__ DistanceType worstDist()
DistanceType * resultDist
result set for the 1nn search. Doesn't do any global memory accesses on its own,
__device__ float worstDist()
__device__ void insert(int index, DistanceType dist)
__device__ __host__ SingleResultSet(DistanceType eps)
DistanceType * resultDist
const DistanceType epsError
__device__ void setResultLocation(DistanceType *dists, int *index, int thread, int stride)