3値数を8ビットに詰め込む:SIMDで高速に展開する巧妙な方法

How to pack ternary numbers in 8-bit bytes

3値数を8ビットに詰め込む:SIMDで高速に展開する巧妙な方法

BitNet b1.58の3値重みを効率的にパックする方法を紹介。5つの3値桁(trit)を8ビットに収め、1.6ビット/tritで理論限界の99.06%の効率を達成。除算や剰余を使わず、乗算と固定小数点数を用いてSIMDフレンドリーに展開するテクニックを解説。llama.cppのプルリクエストでAVX2とARM NEON向けに実装された。

Tada! Now digits can be easily extracted from the top two bits of the resulting 10-bit number when multiplying this 8-bit byte by 3.

この日のほかの記事

2026-07-21