]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
whisper : use vulkan as gpu backend when available (#2302)
authorMatt Stephenson <redacted>
Tue, 16 Jul 2024 07:21:09 +0000 (03:21 -0400)
committerGitHub <redacted>
Tue, 16 Jul 2024 07:21:09 +0000 (10:21 +0300)
* ggml: use vulkan as gpu backend when available

Signed-off-by: Matt Stephenson <redacted>
* whisper: enable using vk as default buffer type

Signed-off-by: Matt Stephenson <redacted>
---------

Signed-off-by: Matt Stephenson <redacted>
ggml/src/ggml-vulkan.cpp
src/whisper.cpp

index 101781ede4b4fd303c95acd72ed1ebdb9858ec73..164345b4417be96b793a4f0b51903ffcdcc57ca7 100644 (file)
@@ -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);
 
index 47c58cfb76a0f0f3611dd8f8a0838eaab37f27d8..492a0999e86602d0c0be779e1cbccf2613882de9 100644 (file)
 #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;