namespaceが違うというのはわかるので、違っているような感じなのですが、どこかの定義で一致してるのかな?
ggml/sycl内ではcommon.hppでtypedef sycl::queue_ptr *queue_ptrとか記述があったので、sycl内では特にしていなければsycl::queue_ptrとなっているはずなのですが、dpct::queue_ptrと明示されているところもあるわけでして…
syclとdpctの違いも良く分かってないのですが、sycl2020ではsycl::queue_ptrと記述するのがよろしいようで…ただ、dpctのドキュメントではdpct::を使えという指示が明記されているので、正直悩みますw
なのでとりあえずggml/src/ggml-sycl/以下のqueue_ptr記述を全てdpct::queue_ptrに書き換えてみたのですが、まぁ変化はないわけで(笑)
その間に少し別の角度から調べてみました。
出力ログから使用されているggml_sycl関連のメソッドは次の通りでした。
ggml_backend_sycl_buffer_reset
ggml_backend_sycl_buffer_init_tensor
ggml_backend_sycl_buffer_set_tensor
ggml_backend_sycl_graph_compute
ggml_backend_sycl_graph_compute_impl
ggml_sycl_mul_mat
ggml_sycl_add
ggml_sycl_norm
ggml_sycl_scale
ggml_sycl_op_timestep_embedding
ggml_sycl_silu
ggml_sycl_op_mul_mat/quantize_row_q8_1_sycl
ggml_sycl_dup
ggml_sycl_cpy
ggml_sycl_mul
ggml_sycl_op_mul_mat_sycl/to_fp32_sycl
concat_impl_sycl
ggml_sycl_rms_norm
ggml_sycl_repeat
ggml_sycl_op_soft_max
ggml_sycl_gelu
よくよく見てみると、呼び出されてるノードも正しく終わっているループと止まってしまうループは同じ数の様で、目視確認だけですが、全て正しくdoneされているように見えます。
単純に何らかの例外が発生しているだけなのでしょう。気になるのは、使用しているqueueはin_order()となっていたのでそこまで複雑な状態ではないようですが、同期処理と非同期処理が混じっているのが気になるぐらいでしょうか。まだまだやれそうなことがあるのでまだあきらめきれないw
0 件のコメント:
コメントを投稿