libnabo
1.0.1
|
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 = "" |
||
) | [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 [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 >.