@@ -337,6 +337,7 @@ struct clip_ctx {
337337 ? ggml_backend_init_by_type (GGML_BACKEND_DEVICE_TYPE_GPU, nullptr )
338338 : nullptr );
339339
340+ ggml_backend_t backend_cpu_raw_ptr = backend_cpu.get ();
340341 if (backend) {
341342 LOG_INF (" %s: CLIP using %s backend\n " , __func__, ggml_backend_name (backend.get ()));
342343 backend_ptrs.push_back (backend.get ());
@@ -346,8 +347,8 @@ struct clip_ctx {
346347 LOG_INF (" %s: CLIP using CPU backend\n " , __func__);
347348 }
348349
349- backend_ptrs.push_back (backend_cpu. get () );
350- backend_buft.push_back (ggml_backend_get_default_buffer_type (backend_cpu. get () ));
350+ backend_ptrs.push_back (backend_cpu_raw_ptr );
351+ backend_buft.push_back (ggml_backend_get_default_buffer_type (backend_cpu_raw_ptr ));
351352
352353 sched.reset (
353354 ggml_backend_sched_new (backend_ptrs.data (), backend_buft.data (), backend_ptrs.size (), 8192 , false )
@@ -2610,7 +2611,9 @@ bool clip_image_batch_encode(clip_ctx * ctx, const int n_threads, const clip_ima
26102611 }
26112612 }
26122613
2613- ggml_backend_cpu_set_n_threads (ctx->backend_cpu .get (), n_threads);
2614+ ggml_backend_t cpu_backend_raw_ptr =
2615+ ggml_backend_is_cpu (ctx->backend .get ()) ? ctx->backend .get () : ctx->backend_cpu .get ();
2616+ ggml_backend_cpu_set_n_threads (cpu_backend_raw_ptr, n_threads);
26142617
26152618 auto status = ggml_backend_sched_graph_compute (ctx->sched .get (), gf);
26162619 if (status != GGML_STATUS_SUCCESS) {
0 commit comments