3値数を8ビットに詰め込む:SIMDで高速に展開する巧妙な方法
How to pack ternary numbers in 8-bit bytes

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.