Skip to content

Commit afb1eaf

Browse files
committed
clip : no smart ptr for ggml_backend_t
1 parent a7fb802 commit afb1eaf

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

examples/llava/clip.cpp

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -323,37 +323,43 @@ struct clip_ctx {
323323
std::vector<ggml_backend_t> backend_ptrs;
324324
std::vector<ggml_backend_buffer_type_t> backend_buft;
325325

326-
ggml_backend_ptr backend;
327-
ggml_backend_ptr backend_cpu;
326+
ggml_backend_t backend;
327+
ggml_backend_t backend_cpu;
328328
ggml_backend_buffer_ptr buf;
329329

330330
ggml_backend_sched_ptr sched;
331331

332332
clip_image_size load_image_size;
333333

334334
clip_ctx(clip_context_params & ctx_params) {
335-
backend_cpu = ggml_backend_ptr(ggml_backend_init_by_type(GGML_BACKEND_DEVICE_TYPE_CPU, nullptr));
336-
backend = ggml_backend_ptr(ctx_params.use_gpu
335+
backend_cpu = ggml_backend_init_by_type(GGML_BACKEND_DEVICE_TYPE_CPU, nullptr);
336+
backend = ctx_params.use_gpu
337337
? ggml_backend_init_by_type(GGML_BACKEND_DEVICE_TYPE_GPU, nullptr)
338-
: nullptr);
338+
: nullptr;
339339

340-
ggml_backend_t backend_cpu_raw_ptr = backend_cpu.get();
341340
if (backend) {
342-
LOG_INF("%s: CLIP using %s backend\n", __func__, ggml_backend_name(backend.get()));
343-
backend_ptrs.push_back(backend.get());
344-
backend_buft.push_back(ggml_backend_get_default_buffer_type(backend.get()));
341+
LOG_INF("%s: CLIP using %s backend\n", __func__, ggml_backend_name(backend));
342+
backend_ptrs.push_back(backend);
343+
backend_buft.push_back(ggml_backend_get_default_buffer_type(backend));
345344
} else {
346-
backend = std::move(backend_cpu);
345+
backend = backend_cpu;
347346
LOG_INF("%s: CLIP using CPU backend\n", __func__);
348347
}
349348

350-
backend_ptrs.push_back(backend_cpu_raw_ptr);
351-
backend_buft.push_back(ggml_backend_get_default_buffer_type(backend_cpu_raw_ptr));
349+
backend_ptrs.push_back(backend);
350+
backend_buft.push_back(ggml_backend_get_default_buffer_type(backend_cpu));
352351

353352
sched.reset(
354353
ggml_backend_sched_new(backend_ptrs.data(), backend_buft.data(), backend_ptrs.size(), 8192, false)
355354
);
356355
}
356+
357+
~clip_ctx() {
358+
ggml_backend_free(backend);
359+
if (backend != backend_cpu) {
360+
ggml_backend_free(backend_cpu);
361+
}
362+
}
357363
};
358364

359365
static ggml_cgraph * clip_image_build_graph_siglip(clip_ctx * ctx, const clip_image_f32_batch & imgs) {
@@ -1429,7 +1435,7 @@ struct clip_model_loader {
14291435
}
14301436

14311437
// alloc memory and offload data
1432-
ggml_backend_buffer_type_t buft = ggml_backend_get_default_buffer_type(ctx_clip.backend.get());
1438+
ggml_backend_buffer_type_t buft = ggml_backend_get_default_buffer_type(ctx_clip.backend);
14331439
ctx_clip.buf.reset(ggml_backend_alloc_ctx_tensors_from_buft(ctx_clip.ctx_data.get(), buft));
14341440
ggml_backend_buffer_set_usage(ctx_clip.buf.get(), GGML_BACKEND_BUFFER_USAGE_WEIGHTS);
14351441
for (auto & t : tensors_to_load) {
@@ -2611,9 +2617,7 @@ bool clip_image_batch_encode(clip_ctx * ctx, const int n_threads, const clip_ima
26112617
}
26122618
}
26132619

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);
2620+
ggml_backend_cpu_set_n_threads(ctx->backend_cpu, n_threads);
26172621

26182622
auto status = ggml_backend_sched_graph_compute(ctx->sched.get(), gf);
26192623
if (status != GGML_STATUS_SUCCESS) {

0 commit comments

Comments
 (0)