sslotin/amh-code

Complete implementations from "Algorithms for Modern Hardware"

Jupyter Notebook

845

177 commits

updated Dec 11, 2022

See the code

See what people are saying

README

Algorithms for Modern Hardware

This repository contains full examples and other associated code from https://en.algorithmica.org/hpc

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
algorithms
computer-science
hpc
performance

sslotin/amh-code

Complete implementations from "Algorithms for Modern Hardware"

Jupyter Notebook

845

177 commits

updated Dec 11, 2022

See the code

See what people are saying

README

Algorithms for Modern Hardware

This repository contains full examples and other associated code from https://en.algorithmica.org/hpc

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
algorithms
computer-science
hpc
performance

Significant stargazers

(top 24 of 36)

Gleb Mazovetskiy

936 followers · starred Jan 2023

Mikola Lysenko

2,860 followers · starred Feb 2022

strager

1,046 followers · starred Jan 2023

Elijah Insua

968 followers · starred Feb 2022