Skip to content

Commit 5b5ffec

Browse files
committed
remoting: rewrite to avoid hard-coded paths
1 parent 66b34d6 commit 5b5ffec

File tree

9 files changed

+1794
-42
lines changed

9 files changed

+1794
-42
lines changed

ggml/src/ggml-remotingbackend/backend.cpp

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,10 @@
1010
#include "shared/apir_backend.h"
1111
#include "shared/venus_cs.h"
1212

13-
#define USE_METAL 1
14-
15-
#if USE_METAL
16-
#define GGML_BACKEND_LIBRARY_PATH "/Users/kevinpouget/remoting/llama_cpp/build.remoting-backend/bin/libggml-metal.dylib"
17-
#define GGML_BACKEND_REG_FCT_NAME "ggml_backend_metal_reg"
18-
#define GGML_BACKEND_INIT_FCT_NAME "ggml_backend_metal_init"
19-
#else
20-
#define GGML_BACKEND_LIBRARY_PATH "/Users/kevinpouget/remoting/llama_cpp/build.remoting-backend/bin/libggml-vulkan.dylib"
21-
#define GGML_BACKEND_REG_FCT_NAME "ggml_backend_vk_reg"
22-
#define GGML_BACKEND_INIT_FCT_NAME "ggml_backend_vk_init"
23-
#endif
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+
2417

2518
static void *backend_library_handle = NULL;
2619

@@ -52,25 +45,47 @@ extern "C" {
5245
uint32_t apir_backend_initialize() {
5346
const char* dlsym_error;
5447

55-
INFO("%s: hello " GGML_BACKEND_REG_FCT_NAME " :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);
53+
54+
if (!library_name) {
55+
ERROR("Cannot open library: env var '%s' not defined\n", GGML_BACKEND_LIBRARY_PATH_ENV);
5656

57-
backend_library_handle = dlopen(GGML_BACKEND_LIBRARY_PATH, RTLD_LAZY);
57+
return APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY;
58+
}
59+
60+
backend_library_handle = dlopen(library_name, RTLD_LAZY);
5861

5962
if (!backend_library_handle) {
6063
ERROR("Cannot open library: %s\n", dlerror());
6164

6265
return APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY;
6366
}
6467

65-
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);
6675
dlsym_error = dlerror();
6776
if (dlsym_error) {
6877
ERROR("Cannot load symbol: %s\n", dlsym_error);
6978

7079
return APIR_BACKEND_INITIALIZE_MISSING_GGML_SYMBOLS;
7180
}
7281

73-
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);
7489
dlsym_error = dlerror();
7590
if (dlsym_error) {
7691
ERROR("Cannot load symbol: %s\n", dlsym_error);

ggml/src/ggml-remotingbackend/shared/api_remoting.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
#define VIRGL_APIR_COMMAND_TYPE_LoadLibrary 255
32
#define VIRGL_APIR_COMMAND_TYPE_Forward 256
43

ggml/src/ggml-remotingbackend/shared/apir_backend.h

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
#pragma once
22

3-
#define APIR_LIBRARY_PATH "/Users/kevinpouget/remoting/llama_cpp/build.remoting-backend-prod/bin/libggml-remotingbackend.dylib"
4-
#define APIR_INITIALIZE_FCT_NAME "apir_backend_initialize"
5-
#define APIR_DEINIT_FCT_NAME "apir_backend_deinit"
6-
#define APIR_DISPATCH_FCT_NAME "apir_backend_dispatcher"
7-
83
#define APIR_BACKEND_INITIALIZE_SUCCESSS 0
94
#define APIR_BACKEND_INITIALIZE_CANNOT_OPEN_BACKEND_LIBRARY 1
105
#define APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY 2
@@ -24,18 +19,9 @@ typedef struct {
2419
apir_buffer_type_host_handle_t buft_host_handle;
2520
} apir_buffer_context_t;
2621

27-
typedef uint32_t (*apir_backend_initialize_t)(void);
28-
typedef void (*apir_backend_deinit_t)(void);
29-
3022
struct vn_dispatch_context;
3123
struct virgl_apir_context;
3224

33-
typedef uint32_t (*apir_backend_dispatch_t)(uint32_t cmd_type, struct virgl_apir_context *ctx,
34-
char *dec_cur, const char *dec_end,
35-
char *enc_cur, const char *enc_end,
36-
char **enc_cur_after
37-
);
38-
3925
typedef enum ApirBackendCommandType {
4026
/* device */
4127
APIR_COMMAND_TYPE_DEVICE_GET_COUNT = 0,
@@ -72,7 +58,7 @@ typedef enum ApirBackendCommandType {
7258

7359
struct virgl_apir_callbacks {
7460
void *(*get_shmem_ptr)(struct vn_dispatch_context *ctx, uint32_t res_id);
75-
} ;
61+
};
7662

7763
struct virgl_apir_context {
7864
struct vn_dispatch_context *virgl_ctx;

ggml/src/ggml-remotingfrontend/CMakeLists.txt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,11 @@ ggml_add_backend_library(ggml-remotingfrontend
2222
venus_cs_ggml-rpc-front.cpp
2323
)
2424

25+
# dnf install -y libdrm-devel
2526
target_link_libraries(ggml-remotingfrontend PUBLIC drm)
2627
target_include_directories(ggml-remotingfrontend PUBLIC /usr/include/libdrm/)
28+
target_include_directories(ggml-remotingfrontend PUBLIC ./include)
2729

28-
set(REMOTING_PROJECT /Users/kevinpouget/remoting)
29-
set(MESA_PROJECT_HOME ${REMOTING_PROJECT}/mesa)
30-
set(MESA_PROJECT_SRC ${MESA_PROJECT_HOME}/src)
31-
32-
target_include_directories(ggml-remotingfrontend PUBLIC ${MESA_PROJECT_SRC}/virtio/virtio-gpu/)
33-
target_include_directories(ggml-remotingfrontend PUBLIC ${MESA_PROJECT_HOME}/include)
3430
target_include_directories(ggml-remotingfrontend PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
3531

3632
target_compile_options(ggml-remotingfrontend PRIVATE -std=c++20)
37-
38-
# dnf install -y libdrm-devel

0 commit comments

Comments
 (0)