OpenCL support for nearest neighbour search. More...
#include <nabo_private.h>
Public Types | |
|
typedef NearestNeighbourSearch < T >::Vector | Vector |
| an Eigen vector of type T, to hold the coordinates of a point | |
|
typedef NearestNeighbourSearch < T >::Matrix | Matrix |
| a column-major Eigen matrix in which each column is a point; this matrix has dim rows | |
|
typedef NearestNeighbourSearch < T >::Index | Index |
| an index to a Vector or a Matrix, for refering to data points | |
|
typedef NearestNeighbourSearch < T >::IndexVector | IndexVector |
| a vector of indices to data points | |
|
typedef NearestNeighbourSearch < T >::IndexMatrix | IndexMatrix |
| a matrix of indices to data points | |
Protected Attributes | |
| const cl_device_type | deviceType |
| the type of device to run CL code on (CL_DEVICE_TYPE_CPU or CL_DEVICE_TYPE_GPU) | |
| cl::Context & | context |
| the CL context | |
| cl::Kernel | knnKernel |
| the kernel to perform knnSearch, mutable because it is stateful, but conceptually const | |
| cl::CommandQueue | queue |
| the command queue | |
| cl::Buffer | cloudCL |
| the buffer for the input data | |
|
| |
| OpenCLSearch (const Matrix &cloud, const Index dim, const unsigned creationOptionFlags, const cl_device_type deviceType) | |
| constructor, calls NearestNeighbourSearch<T>(cloud) | |
| void | initOpenCL (const char *clFileName, const char *kernelName, const std::string &additionalDefines="") |
| Initialize CL support. | |
| virtual unsigned long | knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k, const T epsilon, const unsigned optionFlags, const T maxRadius) const |
| Find the k nearest neighbours for each point of query. | |
OpenCL support for nearest neighbour search.
| void Nabo::OpenCLSearch< T >::initOpenCL | ( | const char * | clFileName, | |
| const char * | kernelName, | |||
| const std::string & | additionalDefines = "" | |||
| ) | [inline, protected] |
Initialize CL support.
| clFileName | name of file containing CL code | |
| kernelName | name of the CL kernel function | |
| additionalDefines | additional CL code to pass to compiler |
| unsigned long Nabo::OpenCLSearch< T >::knn | ( | const Matrix & | query, | |
| IndexMatrix & | indices, | |||
| Matrix & | dists2, | |||
| const Index | k, | |||
| const T | epsilon, | |||
| const unsigned | optionFlags, | |||
| const T | maxRadius | |||
| ) | const [inline, virtual] |
Find the k nearest neighbours for each point of query.
If the search finds less than k points, the empty entries in dists2 will be filled with infinity and the indices with 0.
| query | query points | |
| indices | indices of nearest neighbours, must be of size k x query.cols() | |
| dists2 | squared distances to nearest neighbours, must be of size k x query.cols() | |
| k | number of nearest neighbour requested | |
| epsilon | maximal percentage of error for approximate search, 0 for exact search | |
| optionFlags | search options, a bitwise OR of elements of SearchOptionFlags | |
| maxRadius | maximum radius in which to search, can be used to prune search, is not affected by epsilon |
Implements Nabo::NearestNeighbourSearch< T >.
1.6.3