HMLP: High-performance Machine Learning Primitives
|
#include <KernelMatrix.hpp>
Public Member Functions | |
DistKernelMatrix (size_t m, size_t n, size_t d, DistData< STAR, CBLK, TP > &sources, DistData< STAR, CBLK, TP > &targets, mpi::Comm comm) | |
DistKernelMatrix (size_t m, size_t n, size_t d, kernel_s< T, TP > &kernel, DistData< STAR, CBLK, TP > &sources, DistData< STAR, CBLK, TP > &targets, mpi::Comm comm) | |
DistKernelMatrix (size_t n, size_t d, DistData< STAR, CBLK, TP > &sources, mpi::Comm comm) | |
DistKernelMatrix (size_t n, size_t d, kernel_s< T, TP > &kernel, DistData< STAR, CBLK, TP > &sources, mpi::Comm comm) | |
DistKernelMatrix (DistData< STAR, CBLK, TP > &sources, mpi::Comm comm) | |
~DistKernelMatrix () | |
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) |
void | SendIndices (vector< size_t > ids, int dest, mpi::Comm comm) |
void | RecvIndices (int src, mpi::Comm comm, mpi::Status *status) |
void | BcastIndices (vector< size_t > ids, int root, mpi::Comm comm) |
void | RequestIndices (const vector< vector< size_t >> &ids) override |
![]() | |
DistVirtualMatrix (size_t m, size_t n, mpi::Comm comm) | |
![]() | |
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) |
![]() | |
MPIObject (mpi::Comm comm) | |
void | AssignCommunicator (mpi::Comm &comm) |
mpi::Comm | GetComm () |
mpi::Comm | GetPrivateComm () |
int | GetCommSize () |
int | GetCommRank () |
int | Comm_size () |
int | Comm_rank () |
int | Barrier () |
int | PrivateBarrier () |
![]() | |
ReadWrite () | |
void | DependencyAnalysis (ReadWriteType type, Task *task) |
This is the key function that encode the dependency. More... | |
void | DependencyCleanUp () |
Additional Inherited Members | |
![]() | |
typedef T | T |
![]() | |
deque< Task * > | read |
deque< Task * > | write |
end class KernelMatrix
|
inline |
(Default) unsymmetric kernel matrix
sources | by default we assume sources are distributed in [STAR, CBLK] |
targets | by default we assume targets are distributed in [STAR, CBLK] |
|
inline |
Unsymmetric kernel matrix with legacy kernel_s<T>
sources | by default we assume sources are distributed in [STAR, CBLK] |
targets | by default we assume targets are distributed in [STAR, CBLK] |
|
inline |
(Default) symmetric kernel matrix
sources | by default we assume sources are distributed in [STAR, CBLK] |
|
inline |
Symmetric kernel matrix with legacy kernel_s<T>
sources | by default we assume sources are distributed in [STAR, CBLK] |
|
inline |
(Default) destructor
|
inlinevirtual |
Bcast cids from sender for K( :, cids ) evaluation.
Bcast size of cids from root
Resize to receive cids and parameters
Bcast cids and parameters from root
Insert into hash table
Reimplemented from hmlp::SPDMatrixMPISupport< T >.
|
inline |
end GeometryDistances() Get the diagonal of KII, i.e. diag( K( I, I ) ).
MPI
return values
NOTICE: even KIJ can be an 0-by-0 matrix for this MPI rank, yet early return is not allowed. All MPI process must execute all collaborative communication routines to avoid deadlock.
at this moment we already have the corrdinates on this process
|
inline |
end Print() return number of attributes
|
inline |
flops required for Kab
|
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 >.
|
inlinevirtual |
end Diagonal() Important sampling
Reimplemented from hmlp::VirtualMatrix< T, Allocator >.
|
inlineoverridevirtual |
(Overwrittable) Request a single Kij
Implements hmlp::VirtualMatrix< T, Allocator >.
|
inlineoverridevirtual |
end operator () (Overwrittable) ESSENTIAL: return K( I, J )
Early return if possible.
Request for coordinates: A (targets), B (sources).
Reimplemented from hmlp::VirtualMatrix< T, Allocator >.
|
inlinevirtual |
Insert into hash table
Reimplemented from hmlp::SPDMatrixMPISupport< T >.
|
inlineoverridevirtual |
Send out cids request to each rank.
Exchange out parameters.
Reimplemented from hmlp::SPDMatrixMPISupport< T >.