libnabo  1.0.6
Public Types | Public Member Functions | Protected Attributes | List of all members
Nabo::OpenCLSearch< T, CloudType > Struct Template Reference

OpenCL support for nearest neighbour search. More...

#include <nabo_private.h>

Inheritance diagram for Nabo::OpenCLSearch< T, CloudType >:
Nabo::NearestNeighbourSearch< T, CloudType > Nabo::BruteForceSearchOpenCL< T, CloudType > Nabo::KDTreeBalancedPtInLeavesStackOpenCL< T, CloudType > Nabo::KDTreeBalancedPtInNodesStackOpenCL< T, CloudType >

Public Types

typedef NearestNeighbourSearch< T, CloudType >::Vector Vector
 
typedef NearestNeighbourSearch< T, CloudType >::Matrix Matrix
 
typedef NearestNeighbourSearch< T, CloudType >::Index Index
 
typedef NearestNeighbourSearch< T, CloudType >::IndexVector IndexVector
 
typedef NearestNeighbourSearch< T, CloudType >::IndexMatrix IndexMatrix
 
- Public Types inherited from Nabo::NearestNeighbourSearch< T, CloudType >
enum  SearchType
 type of search
 
enum  CreationOptionFlags
 creation option
 
enum  SearchOptionFlags
 search option
 
typedef Eigen::Matrix< T, Eigen::Dynamic, 1 > Vector
 an Eigen vector of type T, to hold the coordinates of a point
 
typedef Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > Matrix
 a column-major Eigen matrix in which each column is a point; this matrix has dim rows
 
typedef CloudType CloudType
 a column-major Eigen matrix in which each column is a point; this matrix has dim rows
 
typedef int Index
 an index to a Vector or a Matrix, for refering to data points
 
typedef Eigen::Matrix< Index, Eigen::Dynamic, 1 > IndexVector
 a vector of indices to data points
 
typedef Eigen::Matrix< Index, Eigen::Dynamic, Eigen::Dynamic > IndexMatrix
 a matrix of indices to data points
 

Public Member Functions

virtual unsigned long knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const
 
- Public Member Functions inherited from Nabo::NearestNeighbourSearch< T, CloudType >
unsigned long knn (const Vector &query, IndexVector &indices, Vector &dists2, const Index k=1, const T epsilon=0, const unsigned optionFlags=0, const T maxRadius=std::numeric_limits< T >::infinity()) const
 Find the k nearest neighbours of query. More...
 
virtual unsigned long knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k=1, const T epsilon=0, const unsigned optionFlags=0, const T maxRadius=std::numeric_limits< T >::infinity()) const=0
 Find the k nearest neighbours for each point of query. More...
 
virtual unsigned long knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const=0
 Find the k nearest neighbours for each point of query. More...
 
virtual ~NearestNeighbourSearch ()
 virtual destructor
 

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 CloudType &cloud, const Index dim, const unsigned creationOptionFlags, const cl_device_type deviceType)
 constructor, calls NearestNeighbourSearch<T, CloudType>(cloud)
 
void initOpenCL (const char *clFileName, const char *kernelName, const std::string &additionalDefines="")
 Initialize CL support. More...
 
virtual unsigned long knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k, const T epsilon, const unsigned optionFlags, const T maxRadius) const
 

Additional Inherited Members

- Static Public Member Functions inherited from Nabo::NearestNeighbourSearch< T, CloudType >
static NearestNeighbourSearchcreate (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const SearchType preferedType=KDTREE_LINEAR_HEAP, const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters())
 Create a nearest-neighbour search. More...
 
static NearestNeighbourSearchcreate (const WrongMatrixType &cloud, const Index dim=std::numeric_limits< Index >::max(), const SearchType preferedType=KDTREE_LINEAR_HEAP, const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters())
 Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
 
static NearestNeighbourSearchcreateBruteForce (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0)
 Create a nearest-neighbour search, using brute-force search, useful for comparison only. More...
 
static NearestNeighbourSearchcreateBruteForce (const WrongMatrixType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0)
 Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
 
static NearestNeighbourSearchcreateKDTreeLinearHeap (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters())
 Create a nearest-neighbour search, using a kd-tree with linear heap, good for small k (~up to 30) More...
 
static NearestNeighbourSearchcreateKDTreeLinearHeap (const WrongMatrixType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters())
 Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
 
static NearestNeighbourSearchcreateKDTreeTreeHeap (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters())
 Create a nearest-neighbour search, using a kd-tree with tree heap, good for large k (~from 30) More...
 
static NearestNeighbourSearchcreateKDTreeTreeHeap (const WrongMatrixType &, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters())
 Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
 
- Public Attributes inherited from Nabo::NearestNeighbourSearch< T, CloudType >
const CloudTypecloud
 the reference to the data-point cloud, which must remain valid during the lifetime of the NearestNeighbourSearch object
 
const Index dim
 the dimensionality of the data-point cloud
 
const unsigned creationOptionFlags
 creation options
 
const Vector minBound
 the low bound of the search space (axis-aligned bounding box)
 
const Vector maxBound
 the high bound of the search space (axis-aligned bounding box)
 
- Static Public Attributes inherited from Nabo::NearestNeighbourSearch< T, CloudType >
static constexpr Index InvalidIndex
 the invalid index
 
static constexpr T InvalidValue
 the invalid value
 
- Protected Member Functions inherited from Nabo::NearestNeighbourSearch< T, CloudType >
 NearestNeighbourSearch (const CloudType &cloud, const Index dim, const unsigned creationOptionFlags)
 constructor
 
void checkSizesKnn (const Matrix &query, const IndexMatrix &indices, const Matrix &dists2, const Index k, const unsigned optionFlags, const Vector *maxRadii=0) const
 Make sure that the output matrices have the right sizes. Throw an exception otherwise. More...
 

Detailed Description

template<typename T, typename CloudType = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>>
struct Nabo::OpenCLSearch< T, CloudType >

OpenCL support for nearest neighbour search.

Member Function Documentation

◆ initOpenCL()

template<typename T , typename CloudType >
void Nabo::OpenCLSearch< T, CloudType >::initOpenCL ( const char *  clFileName,
const char *  kernelName,
const std::string &  additionalDefines = "" 
)
protected

Initialize CL support.

Parameters
clFileNamename of file containing CL code
kernelNamename of the CL kernel function
additionalDefinesadditional CL code to pass to compiler

The documentation for this struct was generated from the following files: