diff --git a/ggml/src/ggml-vulkan.cpp b/ggml/src/ggml-vulkan.cpp index 101781ed..164345b4 100644 --- a/ggml/src/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan.cpp @@ -2042,9 +2042,9 @@ void ggml_vk_instance_init() { } static void ggml_vk_init(ggml_backend_vk_context * ctx, size_t idx) { - GGML_ASSERT(idx < vk_instance.device_indices.size()); VK_LOG_DEBUG("ggml_vk_init(" << ctx->name << ", " << idx << ")"); ggml_vk_instance_init(); + GGML_ASSERT(idx < vk_instance.device_indices.size()); ctx->name = GGML_VK_NAME + std::to_string(idx); diff --git a/src/whisper.cpp b/src/whisper.cpp index 47c58cfb..492a0999 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -17,6 +17,10 @@ #include "ggml-sycl.h" #endif +#ifdef GGML_USE_VULKAN +#include "ggml-vulkan.h" +#endif + #ifdef GGML_USE_BLAS #include "ggml-blas.h" #endif @@ -1269,6 +1273,16 @@ static ggml_backend_t whisper_backend_init_gpu(const whisper_context_params & pa } #endif +#ifdef GGML_USE_VULKAN + if (params.use_gpu) { + WHISPER_LOG_INFO("%s: using Vulkan backend\n", __func__); + result = ggml_backend_vk_init(params.gpu_device); + if (!result) { + WHISPER_LOG_ERROR("%s: ggml_backend_vk_init() failed\n", __func__); + } + } +#endif + return result; } @@ -1317,6 +1331,10 @@ static ggml_backend_buffer_type_t whisper_default_buffer_type(const whisper_cont result || (result = ggml_backend_sycl_buffer_type(params.gpu_device)); #endif +#ifdef GGML_USE_VULKAN + result || (result = ggml_backend_vk_buffer_type(params.gpu_device)); +#endif + result || (result = ggml_backend_cpu_buffer_type()); return result;