2026年7月4日土曜日

祝 脱wait()♪

右往左往しながらようやく本腰入れて検索しまくったりgeminiに聞いたりしながらようやく無駄な非同期タイミングのwait()を卒業することができました。

結果的に実装はそんなに大変ではなかったものの…効果は…微妙でした(笑)

利点としては、実行キューに溜まっている処理が一定以下に入るまでsleepさせて待つことができるのでCPU負荷が今まで100%となっていたところを40%とか20%とかまで低下させることができるところでしょうか。

正直なところ、無駄な同期待ちのためにGPUから見ると処理が途切れなくなることによって実行時間が短縮できたり、他のスレッドの影響で実行時間が変動するのを抑えられることを期待したのですが、目に見えるほど差はないようです。

それでも、幾分か実行時間のブレは減っているような気はします。

手持ちの環境のソースは数日前に不要そうなdcpt_inline指定を外したのですが、それが実は結構効果があった様で実行時間はちょっと伸び気味ですが、intel N150のflux2 klein 4B 512x512でこんな感じです。

text encode image vae total
taking
taking
taking

2.90s 17.58s 7.15s 309.25s 0.60s 29.50s 356.35s
5.46s 20.12s 7.09s 309.03s 0.60s 29.04s 358.20s
6.21s 20.97s 9.25s 311.10s 0.80s 30.67s 362.75s

希望的なものではimageがもっと短くなるはずなんですけど、イマイチ時短に繋がっていません(涙

ただ、syclの実行自体はかなりいい感じで安定しているのでintel_gpu_topを見ていてとっても面白いのと、htopで見ていてCPUの使用率が下がって気持ち消費電力も下がったのがよかったかな…というかそこしか今のところ効果が出てないとも言う…orz

0 件のコメント:

コメントを投稿