@@ -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;
@@ -546,6 +554,10 @@ struct ggml_backend_registry {
546554 register_backend (ggml_backend_metal_reg ());
547555#endif
548556
557+ #ifdef GGML_USE_BLAS
558+ register_backend (ggml_backend_blas_reg ());
559+ #endif
560+
549561 register_backend (ggml_backend_cpu_reg ());
550562
551563 // TODO: sycl, vulkan, kompute, cann
@@ -1229,16 +1241,22 @@ static ggml_backend_dev_t ggml_backend_cpu_reg_get_device(ggml_backend_reg_t reg
12291241 };
12301242
12311243 return &ggml_backend_cpu_device;
1244+ }
1245+
1246+ static void * ggml_backend_cpu_get_proc_address (ggml_backend_reg_t reg, const char * name) {
1247+ if (strcmp (name, " ggml_backend_set_n_threads" ) == 0 ) {
1248+ return (void *)ggml_backend_cpu_set_n_threads;
1249+ }
1250+ return NULL ;
12321251
12331252 GGML_UNUSED (reg);
1234- GGML_UNUSED (index);
12351253}
12361254
12371255static const struct ggml_backend_reg_i ggml_backend_cpu_reg_i = {
12381256 /* .get_name = */ ggml_backend_cpu_reg_get_name,
12391257 /* .get_device_count = */ ggml_backend_cpu_reg_get_device_count,
12401258 /* .get_device = */ ggml_backend_cpu_reg_get_device,
1241- /* .get_proc_address = */ NULL ,
1259+ /* .get_proc_address = */ ggml_backend_cpu_get_proc_address ,
12421260};
12431261
12441262ggml_backend_reg_t ggml_backend_cpu_reg (void ) {
0 commit comments