Skip to content


Repository files navigation

Algorithms for Modern Hardware

This repository contains full examples and other associated code from

The book is still unfinished, and my writing process is very slow and non-sequential — sometimes the "idea → code → benchmarks → article" pipeline may take 6 months or even more — so in this repository you can get a preview on a lot of interesting things that I haven't yet properly written up and published.

Things that have improved on the state-of-the-art:

Things that match current state-of-the-art:

Various benchmarks:

At the implementation stage:

  • Ordered Trees (apply the same technique as with binary searching, but with dynamically-allocated B-tree nodes)
  • Range minimum queries (both static and dynamic)
  • Filters (Bloom, cuckoo, xor, theoretical minimum)
  • Dot product / logistic regression (newton's method, SIMD, quantization)
  • Prime number sieves (blocking plus wheel)
  • Sorting (speeding up quicksort and mergesort with SIMD and radix sort)
  • Writing series of integers (SIMD + fast mod-10)
  • Bitmaps (blocking, SIMD)

At the idea stage:

  • String searching (SIMD-based strstr and rolling hashing)
  • Using SIMD to speed up Pollard's algorithm (naive sqrt-parallelization)
  • SIMD-based random number generation and hashing