2026年5月29日金曜日

Sycl パッチ

LocalAIで初回実行時に動作が安定しないので少し違う角度で見直していたらパッチで無駄にwait()してしまうかも…と少し変えてみました。(そもそもが一時的措置とは言え、これがないとハングするのが確定しているのでまだこのコードは活かしておかないとだめなのでw)

演算のグリフで無視されるノードが思っていた以上に含まれているようなので、カウンタを別途用意してwait()させるようにしました。(ループがintなので同じ型ならオーバーフローも同様なのでいいでしょと言う考え(笑)それとstaticなどに変わってしまうと初期化されなくなる心配もありますが、まぁそれはいいか…)

で、実行してみるとあら不思議…今までstable-diffusion.cppで初回のstep時に最大15Wまで消費していた電力が、通常運転の最大10Wに収まるようになりました。

考えられるのはwait()を無駄に空ぶると消費電力が上がってしまうのか、wait()とセットでデバッグ出力している部分が結構電力を消費してしまうのか…のどちらかが原因なんですが断定できる材料は今のところありません。それとは違って、動かしているモデルが違ってる…これは別途確認ですね。

全体的な動きとしては、wait()してはいけないところでwait()しているのでcpuの解放が行われないのが問題なので、もっと具体的な対応を見つけたいところですが、消費電力が荒ぶらなくなったのは精神衛生上とてもいい感じです(笑) 

 

0 件のコメント:

コメントを投稿