2026年5月7日木曜日

Sycl16とSycl32

Sycl16とSycl32の違いをあまり気にせず単純に色々と軽そうだからという事でSycl16を使っていたのですが、もしかすると動作が変わるかもしれないという淡い期待の元makeしてみました。

そもそも、CUDAではF16にしないと処理時間が4倍になるという話を見かけたので、実質的に16ビット前提にやってたところがあります。

実際にSycl16とSycl32を比べると…出力時間に関してはN150環境でSD3.5で1024x1024で約54分でした。そのうちvaeの出力は約7分かかりました。アレ?Sycl16と実行時間変わってない?

実際に作られたバイナリのサイズを見てみましょう。

./stable-diffusion.cpp/build-sycl/bin
51197144 26/05/06 05:01 sd-cli*
51638480 26/05/06 05:03 sd-server*
./stable-diffusion.cpp/build-sycl32/bin
51374152 26/05/06 23:35 sd-cli*
51815424 26/05/06 23:37 sd-server*

バイナリの大きさは若干sycl32の方が大きくなっていますね。

同じ画像を出力させてみました。

Sycl32
 

Sycl16

出力されたものを比べてみると、勝手に追加された看板の文字が変わっているのと、犬の鼻の位置が少しだけずれているのが確認できました。

何が違ってるのでしょう?乱数の精度の差が出ただけなのかな?

0 件のコメント:

コメントを投稿