ちょっと高速化した。

  • Haswell では、レジスタ幅が同じなら VGATHERDD より VGATHERQQ の方が常に速いので、置き換えられるところは置き換える。
  • 符号列の読み込みが一切不要な場合は条件分岐でスキップするようにした。この条件分岐はジャンプ率 66% ぐらいなので予測に失敗した時のパイプラインストールの方が大きいと思うのだが、実際にマスク操作ではなく条件分岐に置き換えたら速くなった。

で、計測

C:\Users\umezawa\Documents\huff4>huff4 _exp.dat
* NORMAL Huffman Decode x4
decode 771.519552msec
       2.874134nsec/symbol
ok

* AVX2 Parallel Huffman Decode
decode 683.574067msec
       2.546512nsec/symbol
ok

11% ほど速いようです。

ただ、並列でないハフマンデコードに依存した最適化が使えなくなることを考えると、11% 程度では置き換えられません。やっぱりお蔵入りです。Skylake 待ちですかね。

Trackback

no comment untill now

Add your comment now