プログラミング
Show HN: RustによるSIMD Viterbiデコーダー
Show HN: SIMD Viterbi Decoder in Rust (github.com)
要約
投稿者は2016年にC言語で書いたライブラリlibcorrectをRustで再実装しました。今回はstd::simdを活用し、実行時に利用可能な命令セットに応じてデコードをディスパッチする、テンプレート化された汎用Viterbiデコーダーを開発しました。また、指定されたレートとオーダーに対して最適な畳み込み符号を見つけるツールも作成しました。
全文翻訳
2016年にC言語でlibcorrectを書き、Rustで再挑戦したいと思いました。単なる直接的な変換ではなく、Rustのstd::simdが私にとって機能するように、さらに深く掘り下げました。その結果、畳み込み符号用のテンプレート化された汎用Viterbiデコーダーができ、実行時に利用可能な命令セットに応じてデコードをディスパッチします。レートとオーダーが小さい場合、デコード全体がレジスタ内に収まります。より大きな符号はメモリを介して動作しますが、いくつかのアクセラレーション構造を利用します。
また、指定されたレートとオーダーに対して最適な(最大d_free)畳み込み符号を見つけるツールを構築するのに時間を費やしました。もちろん、今日ではより優れたメカニズムが利用可能ですが、このプロセスで学んだことについて喜んでお話しします。