6565#include " ggml-kompute.h"
6666#endif
6767
68+ #ifdef GGML_USE_HEXAGON
69+ #include " ggml-hexagon.h"
70+ #endif
71+
6872// disable C++17 deprecation warning for std::codecvt_utf8
6973#if defined(__clang__)
7074# pragma clang diagnostic push
@@ -155,6 +159,10 @@ struct ggml_backend_reg_entry {
155159 dl_handle_ptr handle;
156160};
157161
162+ static bool laylaUseVulkan = false ;
163+ static bool laylaUseOpenCL = false ;
164+ static bool laylaUseHexagon = false ;
165+
158166struct ggml_backend_registry {
159167 std::vector<ggml_backend_reg_entry> backends;
160168 std::vector<ggml_backend_dev_t > devices;
@@ -170,10 +178,14 @@ struct ggml_backend_registry {
170178 register_backend (ggml_backend_sycl_reg ());
171179#endif
172180#ifdef GGML_USE_VULKAN
173- register_backend (ggml_backend_vk_reg ());
181+ if (laylaUseVulkan) {
182+ register_backend (ggml_backend_vk_reg ());
183+ }
174184#endif
175185#ifdef GGML_USE_OPENCL
176- register_backend (ggml_backend_opencl_reg ());
186+ if (laylaUseOpenCL) {
187+ register_backend (ggml_backend_opencl_reg ());
188+ }
177189#endif
178190#ifdef GGML_USE_CANN
179191 register_backend (ggml_backend_cann_reg ());
@@ -187,6 +199,11 @@ struct ggml_backend_registry {
187199#ifdef GGML_USE_KOMPUTE
188200 register_backend (ggml_backend_kompute_reg ());
189201#endif
202+ #ifdef GGML_USE_HEXAGON
203+ if (laylaUseHexagon) {
204+ register_backend (ggml_backend_hexagon_reg ());
205+ }
206+ #endif
190207#ifdef GGML_USE_CPU
191208 register_backend (ggml_backend_cpu_reg ());
192209#endif
@@ -296,8 +313,15 @@ struct ggml_backend_registry {
296313 }
297314};
298315
316+ void ggml_backend_reg_layla (bool useVulkan, bool useOpenCL, bool useHexagon) {
317+ laylaUseVulkan = useVulkan;
318+ laylaUseOpenCL = useOpenCL;
319+ laylaUseHexagon = useHexagon;
320+ }
321+
299322static ggml_backend_registry & get_reg () {
300323 static ggml_backend_registry reg;
324+
301325 return reg;
302326}
303327
@@ -577,6 +601,7 @@ void ggml_backend_load_all_from_path(const char * dir_path) {
577601 ggml_backend_load_best (" vulkan" , silent, dir_path);
578602 ggml_backend_load_best (" opencl" , silent, dir_path);
579603 ggml_backend_load_best (" musa" , silent, dir_path);
604+ ggml_backend_load_best (" hexagon" , silent, dir_path);
580605 ggml_backend_load_best (" cpu" , silent, dir_path);
581606 // check the environment variable GGML_BACKEND_PATH to load an out-of-tree backend
582607 const char * backend_path = std::getenv (" GGML_BACKEND_PATH" );
0 commit comments