1010#include " shared/apir_backend.h"
1111#include " shared/venus_cs.h"
1212
13- #define GGML_BACKEND_LIBRARY_PATH " /Users/kevinpouget/remoting/llama_cpp/build.remoting-backend/bin/libggml-metal.dylib"
14- #define GGML_BACKEND_REG_FCT_NAME " ggml_backend_metal_reg"
15- #define GGML_BACKEND_INIT_FCT_NAME " ggml_backend_metal_init"
13+ #define GGML_BACKEND_LIBRARY_PATH_ENV " APIR_LLAMA_CPP_GGML_LIBRARY_PATH"
14+ #define GGML_BACKEND_LIBRARY_REG_ENV " APIR_LLAMA_CPP_GGML_LIBRARY_REG"
15+ #define GGML_BACKEND_LIBRARY_INIT_ENV " APIR_LLAMA_CPP_GGML_LIBRARY_INIT"
16+
1617
1718static void *backend_library_handle = NULL ;
1819
@@ -28,8 +29,9 @@ extern "C" {
2829 dev->iface .get_memory (dev, &free, &total);
2930 WARNING (" %s: free memory: %ld MB\n " , __func__, (size_t ) free/1024 /1024 );
3031
31- show_timer ();
32-
32+ show_timer (&graph_compute_timer);
33+ show_timer (&set_tensor_timer);
34+ show_timer (&get_tensor_timer);
3335 /* *** */
3436
3537 if (backend_library_handle) {
@@ -43,40 +45,54 @@ extern "C" {
4345 uint32_t apir_backend_initialize () {
4446 const char * dlsym_error;
4547
46- INFO (" %s: hello :wave: \\ o/" , __func__);
48+ const char * library_name = getenv (GGML_BACKEND_LIBRARY_PATH_ENV);
49+ const char * library_reg = getenv (GGML_BACKEND_LIBRARY_REG_ENV);
50+ const char * library_init = getenv (GGML_BACKEND_LIBRARY_INIT_ENV);
51+
52+ INFO (" %s: loading %s (%s|%s)" , __func__, library_name, library_reg, library_init);
4753
48- backend_library_handle = dlopen (GGML_BACKEND_LIBRARY_PATH, RTLD_LAZY);
54+ if (!library_name) {
55+ ERROR (" Cannot open library: env var '%s' not defined\n " , GGML_BACKEND_LIBRARY_PATH_ENV);
56+
57+ return APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY;
58+ }
59+
60+ backend_library_handle = dlopen (library_name, RTLD_LAZY);
4961
5062 if (!backend_library_handle) {
5163 ERROR (" Cannot open library: %s\n " , dlerror ());
5264
5365 return APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY;
5466 }
5567
56- void *ggml_backend_reg_fct = dlsym (backend_library_handle, GGML_BACKEND_REG_FCT_NAME);
68+ if (!library_reg) {
69+ ERROR (" Cannot register library: env var '%s' not defined\n " , GGML_BACKEND_LIBRARY_REG_ENV);
70+
71+ return APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY;
72+ }
73+
74+ void *ggml_backend_reg_fct = dlsym (backend_library_handle, library_reg);
5775 dlsym_error = dlerror ();
5876 if (dlsym_error) {
5977 ERROR (" Cannot load symbol: %s\n " , dlsym_error);
6078
6179 return APIR_BACKEND_INITIALIZE_MISSING_GGML_SYMBOLS;
6280 }
6381
64- void *ggml_backend_init_fct = dlsym (backend_library_handle, GGML_BACKEND_INIT_FCT_NAME);
82+ if (!library_init) {
83+ ERROR (" Cannot initialize library: env var '%s' not defined\n " , library_init);
84+
85+ return APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY;
86+ }
87+
88+ void *ggml_backend_init_fct = dlsym (backend_library_handle, library_init);
6589 dlsym_error = dlerror ();
6690 if (dlsym_error) {
6791 ERROR (" Cannot load symbol: %s\n " , dlsym_error);
6892
6993 return APIR_BACKEND_INITIALIZE_MISSING_GGML_SYMBOLS;
7094 }
7195
72- INFO (" #" );
73- #if APIR_ALLOC_FROM_HOST_PTR
74- INFO (" # USING ALLOC_FROM_HOST_PTR" );
75- #else
76- INFO (" # USING ALLOC_BUFFER" );
77- #endif
78- INFO (" #" );
79-
8096 return backend_dispatch_initialize (ggml_backend_reg_fct, ggml_backend_init_fct);
8197 }
8298
0 commit comments