はじめに
アダプティブコンピューティング研究推進体(ACRi) にて「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化」という記事が投稿されています。
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(1)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(2)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(3)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(4)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(5)」
筆者はここに書かれているアイデアやアルゴリズムに興味を持ち、勝手ながらVHDL で実装して Ultra96-V2で実行してみました。VHDL のソースコードおよび Ultra96-V2 で動作する FPGA ビットストリームファイルとテストプログラムは GitHub にて公開しています。
- https://github.com/ikwzm/Merge_Sorter
- https://github.com/ikwzm/ArgSort-Ultra96
- https://github.com/ikwzm/ArgSort-Kv260
ここでは VHDL でどのように実装したかを、いくつかにわけて紹介します。
なお、あくまでもこれらの基本的なアイデアは 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化」を元にしたものです。これらのアイデアを記事として公開してくださった方々に感謝します。
お品書き
- はじめに (この記事)
- ワードの定義
- ワード比較器
- ソーティングネットワーク(コアパッケージ)
- ソーティングネットワーク(バイトニックマージソート)
- ソーティングネットワーク(バッチャー奇偶マージソート)
- シングルワード マージソート ノード
- マルチワード マージソート ノード
- マージソート ツリー
- 端数ワード処理
- ストリーム入力
- ストリームフィードバック
- ArgSort
- ArgSort-Ultra96
- ArgSort-Kv260
参照
ACRi
- アダプティブコンピューティング研究推進体(ACRi)
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(1)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(2)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(3)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(4)」
- 「FPGAを使って基本的なアルゴリズムのソーティングを劇的に高速化(5)」