The k-means NUMA Optimized Routine library or knor is a highly optimized and fast library for computing k-means in parallel with accelerations for Non-Uniform Memory Access (NUMA) architectures.

knor can perform at 10-100 times the speed of popular packages like Spark's MLlib, Dato (GraphLab) and H2O.

knor can operate:

On a single machine with all data in-memory -- knori.
In a cluster in distributed memory -- knord.
On a single machine with some data in-memory and the rest on disk (Semi-External Memory) -- knors.
These modules are incarnations of algorithms in our publication which will appear in the annuls of HPDC 2017.

By default knor can use a scalable adaption of Elkan's algorithm that can drastically reduce the number of distance computations required for k-means without the memory bloat traditionally associated with Elkan's algorithm.

See system requirements and other details.