2026年6月13日土曜日

Flux.2 Klein の実行命令

cpy_f32_f32の部分を手を入れて、結構足掻いてみた物の、最終的には現状のロジックのまま、SYCLに対する純粋な最適化を行った形で落ち着きました。

結果的に早くなっているのかどうかかなり微妙だったりしますが、動作的には一番安定してそうです。

ここのロジックを弄ると、safetensorsファイルのGPUへの読込時間がダイレクトに変わってくるので最適化したいところですが、前提条件として全く同じ形式の構造の場合はmemcpyを実行しているので、ロジックが効いてくるのは転送元と転送先の構造が違っていたり、特殊な構造だったりして、もう少し深く突っ込まないとこれ以上の最適化はできなさそうなので、含みを残したまま一旦止めたいと思います。いままで手を入れた部分も、前提が崩れそうなのでもう少し条件を厳しくして、前提条件を抑えたうえで、手を加えたロジックを動かす形にする必要がありかなぁ…。

 

で、次にターゲットにするものを吟味する上で出力ログからスプレッドシートで集計してみました。

ggml_sycl_mul 2228
ggml_sycl_cpy 2210
ggml_sycl_dup 1810
ggml_sycl_add 1546
ggml_sycl_repeat 800
ggml_sycl_mul_mat 796
ggml_sycl_op_mul_mat_sycl/to_fp32_sycl 784
ggml_sycl_rms_norm 480
ggml_sycl_silu 338
ggml_sycl_norm 328
concat_impl_sycl 288
ggml_sycl_im2col 72
ggml_sycl_group_norm 60
ggml_sycl_scale 10
ggml_sycl_op_timestep_embedding 8
ggml_sycl_upscale 6
ggml_sycl_op_soft_max 2

2つ分混じってしまっているかもしれませんが、比率は変わらないので有効なデータですw

やはりよく見かけるmulという乗算が一番効果的な感じがしますね。タイプ別に当りをつけるのが大変そうですが…

dupも結構影響がでかそうなのでQ8回りまで触っておいた方がいいのかな?悩むなw 

0 件のコメント:

コメントを投稿