@@ -500,7 +500,11 @@ bool ggml_backend_dev_supports_buft(ggml_backend_dev_t device, ggml_backend_buff
500500}
501501
502502bool ggml_backend_dev_offload_op (ggml_backend_dev_t device, const struct ggml_tensor * op) {
503- return device->iface .offload_op (device, op);
503+ if (device->iface .offload_op != NULL ) {
504+ return device->iface .offload_op (device, op);
505+ }
506+
507+ return false ;
504508}
505509
506510// Backend (reg)
@@ -534,6 +538,10 @@ void * ggml_backend_reg_get_proc_address(ggml_backend_reg_t reg, const char * na
534538#include " ggml-metal.h"
535539#endif
536540
541+ #ifdef GGML_USE_BLAS
542+ #include " ggml-blas.h"
543+ #endif
544+
537545struct ggml_backend_registry {
538546 std::vector<ggml_backend_reg_t > backends;
539547 std::vector<ggml_backend_dev_t > devices;
@@ -545,10 +553,13 @@ struct ggml_backend_registry {
545553#ifdef GGML_USE_METAL
546554 register_backend (ggml_backend_metal_reg ());
547555#endif
548-
549- register_backend (ggml_backend_cpu_reg ());
556+ #ifdef GGML_USE_BLAS
557+ register_backend (ggml_backend_blas_reg ());
558+ #endif
550559
551560 // TODO: sycl, vulkan, kompute, cann
561+
562+ register_backend (ggml_backend_cpu_reg ());
552563 }
553564
554565 void register_backend (ggml_backend_reg_t reg) {
@@ -1229,16 +1240,22 @@ static ggml_backend_dev_t ggml_backend_cpu_reg_get_device(ggml_backend_reg_t reg
12291240 };
12301241
12311242 return &ggml_backend_cpu_device;
1243+ }
1244+
1245+ static void * ggml_backend_cpu_get_proc_address (ggml_backend_reg_t reg, const char * name) {
1246+ if (strcmp (name, " ggml_backend_set_n_threads" ) == 0 ) {
1247+ return (void *)ggml_backend_cpu_set_n_threads;
1248+ }
1249+ return NULL ;
12321250
12331251 GGML_UNUSED (reg);
1234- GGML_UNUSED (index);
12351252}
12361253
12371254static const struct ggml_backend_reg_i ggml_backend_cpu_reg_i = {
12381255 /* .get_name = */ ggml_backend_cpu_reg_get_name,
12391256 /* .get_device_count = */ ggml_backend_cpu_reg_get_device_count,
12401257 /* .get_device = */ ggml_backend_cpu_reg_get_device,
1241- /* .get_proc_address = */ NULL ,
1258+ /* .get_proc_address = */ ggml_backend_cpu_get_proc_address ,
12421259};
12431260
12441261ggml_backend_reg_t ggml_backend_cpu_reg (void ) {
0 commit comments