2024年7月10日水曜日

SIMDの検討

 マニュアルでアンローリングしたコードを逆アセンブルしてみると、SIMD化していないことに気づきました。

モダンなC++では、下記のような書き方が出来るようですが、私のコードはそこまで洗練されていません。

https://proc-cpuinfo.fixstars.com/2022/12/loop-unroll-in-modern-cpp/

AVX2だと、単精度で8演算が同時に可能なので、8WEEKSに取り掛かる前にさらにSIMDによる高速化を検討します。具体的には、以下のような処理をします。

SIMD 演算で if 文の並列化 - その1 - - kawa0810 のブログ (hateblo.jp)

データフェッチが不揃いなので、ネックは、データフェッチ自体にあります。なので、どれだけ効果があるのかは、現時点では不明です。


また、4Weeksに関しては、現時点でも0.3ms位なので、これ以上何かしても、全く寄与しないことは明らかです。が、これから8weeks、さらに巨大なインスタンスに立ち向かうときは、この計算がネックなので、出来る限りのことをやっておいても無駄にはなりません。



0 件のコメント:

コメントを投稿