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 ReplicationCount number 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.