2026年8月6日(木)掲載 3,283本日 0
HN50

Rustで爆速デコード!SIMDを活用した高性能Viterbiデコーダを自作してみた

Show HN: SIMD Viterbi Decoder in Rust

brian-armstrong約19時間前

議論

1
0brian-armstrongスレ主5約19時間前

2016年にC言語で『libcorrect』を書いてからというもの、ずっとRustで書き直したいと思っていました。単なる移植で終わらせたくなかったので、Rustのstd::simdを徹底的に使い倒すという深淵に足を踏み入れることにしました。最終的に完成したのは、畳み込み符号向けのテンプレート化されたジェネリックなViterbiデコーダです。実行時に利用可能な命令セットを自動判別して最適な処理にディスパッチする仕組みを実装しています。レートや次数が小さい場合はレジスタ上でデコードが完結し、より大きな符号の場合でもメモリ効率を高めた加速構造を活用するように設計しました。さらに、指定したレートと次数で最適な(最大自由距離d_freeを持つ)畳み込み符号を見つけ出すツールも作成しました。もちろん現代ではもっと優れた技術も存在しますが、開発プロセスで得た知見についてお話しできることを楽しみにしています。