SparseJLT
-
template<typename RegType, template<std::size_t> class HashType, std::size_t RangeSize, std::size_t ReplicationCount>
class SparseJLT A functor implementing a CountSketch-based sparse JLT on a collection of registers.
good reference for operator declarations: https://stackoverflow.com/questions/4421706/what-are-the-basic-rules-and-idioms-for-operator-overloading
Implements CountSketch using a
ReplicationCountnumber of pairs of hash functions.[0] M. Charikar, K. Chen, M. Farach-Colton. Finding frequent items in data streams. Theoretical Computer Science. 2004. https://edoliberty.github.io/datamining2011aFiles/FindingFrequentItemsInDataStreams.pdf
[1] K. Clarkson, D. Woodruff. Low-rank approximation in input sparsity time. Journal of the ACM. 2017. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.746.6409&rep=rep1&type=pdf
- Template Parameters:
RegType – The type of register over which the functor operates
HashType – The hash functor type to use to define CountSketch random mappings.
RangeSize – The power-of-two embedding dimension.
ReplicationCount – The number of replicated CountSketch transforms to use.