Blog Posts

Levenshtein Edit Distance with AVX-512

A discussion of how changing the memory layout of the table used in Levenshtein edit distance can make it more SIMD friendly and how this can be leveraged with AVX-512.

Dividing 8-bit Uints with AVX-512VBMI

Exploring how AVX-512VBMI can be used to perform Granlund-Montgomery division on 8-bit uints, and how a simpler more naive algorithm beats the hardware div instruction by up to ~30x .

Integer Averaging, Up to SIMD Midpoint

A look at the problem of integer averaging, techniques for implementing averaging while following various rounding schemes, and potential techniques for creating SIMD vectorized implementations thereof.