HMLP: High-performance Machine Learning Primitives
hmlp::KernelMatrix< T, Allocator > Class Template Reference
Inheritance diagram for hmlp::KernelMatrix< T, Allocator >:
hmlp::VirtualMatrix< T, Allocator > hmlp::ReadWrite hmlp::SPDMatrixMPISupport< T >

Public Member Functions

 KernelMatrix (size_t m_, size_t n_, size_t d_, kernel_s< T, T > &kernel_, Data< T > &sources_, Data< T > &targets_)
 
 KernelMatrix (size_t m, size_t n, size_t d, kernel_s< T, T > &kernel, Data< T > &sources)
 
 KernelMatrix (Data< T > &sources)
 
 ~KernelMatrix ()
 
virtual T operator() (size_t i, size_t j) override
 
virtual Data< T > operator() (const vector< size_t > &I, const vector< size_t > &J) override
 
virtual Data< T > GeometryDistances (const vector< size_t > &I, const vector< size_t > &J) override
 
Data< T > Diagonal (vector< size_t > &I)
 
pair< T, size_t > ImportantSample (size_t j)
 
void Print ()
 
size_t dim ()
 
double flops (size_t na, size_t nb)
 
- Public Member Functions inherited from hmlp::VirtualMatrix< T, Allocator >
 VirtualMatrix (size_t m, size_t n)
 
virtual void resize (size_t m, size_t n)
 
size_t row ()
 
size_t col ()
 
Data< T > KernelDistances (const vector< size_t > &I, const vector< size_t > &J)
 
Data< T > AngleDistances (const vector< size_t > &I, const vector< size_t > &J)
 
virtual Data< T > UserDistances (const vector< size_t > &I, const vector< size_t > &J)
 
Data< T > Distances (DistanceMetric metric, const vector< size_t > &I, const vector< size_t > &J)
 
virtual Data< pair< T, size_t > > NeighborSearch (DistanceMetric metric, size_t kappa, const vector< size_t > &Q, const vector< size_t > &R, pair< T, size_t > init)
 
virtual Data< T > Diagonal (const vector< size_t > &I)
 
virtual pair< T, int > ImportantSample (int j)
 
- Public Member Functions inherited from hmlp::SPDMatrixMPISupport< T >
virtual void SendIndices (vector< size_t > ids, int dest, mpi::Comm comm)
 
virtual void RecvIndices (int src, mpi::Comm comm, mpi::Status *status)
 
virtual void BcastIndices (vector< size_t > ids, int root, mpi::Comm comm)
 
virtual void RequestIndices (const vector< vector< size_t >> &ids)
 
- Public Member Functions inherited from hmlp::ReadWrite
 ReadWrite ()
 
void DependencyAnalysis (ReadWriteType type, Task *task)
 This is the key function that encode the dependency. More...
 
void DependencyCleanUp ()
 

Additional Inherited Members

- Public Types inherited from hmlp::VirtualMatrix< T, Allocator >
typedef T T
 
- Public Attributes inherited from hmlp::ReadWrite
deque< Task * > read
 
deque< Task * > write
 

Constructor & Destructor Documentation

template<typename T, class Allocator = std::allocator<T>>
hmlp::KernelMatrix< T, Allocator >::KernelMatrix ( size_t  m_,
size_t  n_,
size_t  d_,
kernel_s< T, T > &  kernel_,
Data< T > &  sources_,
Data< T > &  targets_ 
)
inline

(Default) constructor for non-symmetric kernel matrices.

template<typename T, class Allocator = std::allocator<T>>
hmlp::KernelMatrix< T, Allocator >::KernelMatrix ( size_t  m,
size_t  n,
size_t  d,
kernel_s< T, T > &  kernel,
Data< T > &  sources 
)
inline

(Default) constructor for symmetric kernel matrices.

template<typename T, class Allocator = std::allocator<T>>
hmlp::KernelMatrix< T, Allocator >::~KernelMatrix ( )
inline

(Default) destructor.

Member Function Documentation

template<typename T, class Allocator = std::allocator<T>>
Data<T> hmlp::KernelMatrix< T, Allocator >::Diagonal ( vector< size_t > &  I)
inline

end GeometryDistances() get the diagonal of KII, i.e. diag( K( I, I ) )

return values

at this moment we already have the corrdinates on this process

template<typename T, class Allocator = std::allocator<T>>
size_t hmlp::KernelMatrix< T, Allocator >::dim ( )
inline

end Print() Return number of attributes.

template<typename T, class Allocator = std::allocator<T>>
double hmlp::KernelMatrix< T, Allocator >::flops ( size_t  na,
size_t  nb 
)
inline

flops required for Kab

template<typename T, class Allocator = std::allocator<T>>
virtual Data<T> hmlp::KernelMatrix< T, Allocator >::GeometryDistances ( const vector< size_t > &  I,
const vector< size_t > &  J 
)
inlineoverridevirtual

Early return if possible.

Request for coordinates: A (targets), B (sources).

For symmetry matrices, extract from sources.

For non-symmetry matrices, extract from targets and sources.

Compute inner products.

Compute square 2-norms.

end omp parallel for

end omp parallel for

Add square norms to inner products to get square distances.

Return all pair-wise distances.

Reimplemented from hmlp::VirtualMatrix< T, Allocator >.

template<typename T, class Allocator = std::allocator<T>>
pair<T, size_t> hmlp::KernelMatrix< T, Allocator >::ImportantSample ( size_t  j)
inlinevirtual

important sampling

Reimplemented from hmlp::VirtualMatrix< T, Allocator >.

template<typename T, class Allocator = std::allocator<T>>
virtual T hmlp::KernelMatrix< T, Allocator >::operator() ( size_t  i,
size_t  j 
)
inlineoverridevirtual

ESSENTIAL: override the virtual function

Implements hmlp::VirtualMatrix< T, Allocator >.

template<typename T, class Allocator = std::allocator<T>>
virtual Data<T> hmlp::KernelMatrix< T, Allocator >::operator() ( const vector< size_t > &  I,
const vector< size_t > &  J 
)
inlineoverridevirtual

(Overwrittable) ESSENTIAL: return K( I, J )

Early return if possible.

Request for coordinates: A (targets), B (sources).

Evaluate KIJ using legacy interface.

Return K( I, J ).

Reimplemented from hmlp::VirtualMatrix< T, Allocator >.


The documentation for this class was generated from the following file: