123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: jmorganca <jmorganca@gmail.com>
- Date: Sat, 4 Jan 2025 22:52:48 -0800
- Subject: [PATCH] use dynamic backend loading for clip
- ---
- examples/llava/clip.cpp | 74 +++++++++++++++--------------------------
- 1 file changed, 27 insertions(+), 47 deletions(-)
- diff --git a/examples/llava/clip.cpp b/examples/llava/clip.cpp
- index 205af1eb..560021c7 100644
- --- a/examples/llava/clip.cpp
- +++ b/examples/llava/clip.cpp
- @@ -9,25 +9,25 @@
- #include "ggml-backend.h"
- #include "gguf.h"
-
- -//#ifdef GGML_USE_CUDA
- -//#include "ggml-cuda.h"
- -//#endif
- -//
- -//#ifdef GGML_USE_SYCL
- -//#include "ggml-sycl.h"
- -//#endif
- -//
- -//#ifdef GGML_USE_METAL
- -//#include "ggml-metal.h"
- -//#endif
- -//
- -//#ifdef GGML_USE_CANN
- -//#include "ggml-cann.h"
- -//#endif
- -//
- -//#ifdef GGML_USE_VULKAN
- -//#include "ggml-vulkan.h"
- -//#endif
- +#ifdef GGML_USE_CUDA
- +#include "ggml-cuda.h"
- +#endif
- +
- +#ifdef GGML_USE_SYCL
- +#include "ggml-sycl.h"
- +#endif
- +
- +#ifdef GGML_USE_METAL
- +#include "ggml-metal.h"
- +#endif
- +
- +#ifdef GGML_USE_CANN
- +#include "ggml-cann.h"
- +#endif
- +
- +#ifdef GGML_USE_VULKAN
- +#include "ggml-vulkan.h"
- +#endif
-
- #define STB_IMAGE_IMPLEMENTATION
- #include "stb_image.h"
- @@ -1309,35 +1309,15 @@ struct clip_ctx * clip_model_load(const char * fname, const int verbosity = 1) {
- }
- }
-
- -//#ifdef GGML_USE_CUDA
- -// new_clip->backend = ggml_backend_cuda_init(0);
- -// LOG_INF("%s: CLIP using CUDA backend\n", __func__);
- -//#endif
- -//
- -//#ifdef GGML_USE_METAL
- -// new_clip->backend = ggml_backend_metal_init();
- -// LOG_INF("%s: CLIP using Metal backend\n", __func__);
- -//#endif
- -//
- -//#ifdef GGML_USE_CANN
- -// new_clip->backend = ggml_backend_cann_init(0);
- -// LOG_INF("%s: CLIP using CANN backend\n", __func__);
- -//#endif
- -//
- -//#ifdef GGML_USE_VULKAN
- -// new_clip->backend = ggml_backend_vk_init(0);
- -// LOG_INF("%s: CLIP using Vulkan backend\n", __func__);
- -//#endif
- -//
- -//#ifdef GGML_USE_SYCL
- -// new_clip->backend = ggml_backend_sycl_init(0);
- -// LOG_INF("%s: CLIP using SYCL backend\n", __func__);
- -//#endif
- -
- - if (!new_clip->backend) {
- - new_clip->backend = ggml_backend_cpu_init();
- - LOG_INF("%s: CLIP using CPU backend\n", __func__);
- + ggml_backend_t backend = ggml_backend_init_best();
- + if (backend == nullptr) {
- + LOG_ERR("%s: failed to initialize backend\n", __func__);
- + clip_free(new_clip);
- + gguf_free(ctx);
- + return nullptr;
- }
- + LOG_INF("%s: using %s backend\n", __func__, ggml_backend_name(backend));
- + new_clip->backend = backend;
-
- // model size and capabilities
- {
|