summaryrefslogtreecommitdiff
path: root/llama.cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp')
-rw-r--r--llama.cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/llama.cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp b/llama.cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp
new file mode 100644
index 0000000..5cd6c0c
--- /dev/null
+++ b/llama.cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp
@@ -0,0 +1,69 @@
+#include "ggml-remoting.h"
+#include "../../include/ggml-virtgpu.h"
+
+static const char * ggml_backend_remoting_get_name(ggml_backend_t backend) {
+ UNUSED(backend);
+
+ return "API Remoting backend";
+}
+
+static void ggml_backend_remoting_free(ggml_backend_t backend) {
+ delete backend;
+}
+
+static ggml_status ggml_backend_remoting_graph_compute(ggml_backend_t backend, ggml_cgraph * cgraph) {
+ virtgpu * gpu = DEV_TO_GPU(backend->device);
+
+ return apir_backend_graph_compute(gpu, cgraph);
+}
+
+static void ggml_backend_remoting_graph_optimize(ggml_backend_t backend, ggml_cgraph * cgraph) {
+ virtgpu * gpu = DEV_TO_GPU(backend->device);
+#if true
+ UNUSED(gpu);
+ UNUSED(cgraph);
+#else
+ // not working yet
+
+ apir_backend_graph_optimize(gpu, cgraph);
+#endif
+}
+
+static ggml_backend_i ggml_backend_remoting_interface = {
+ /* .get_name = */ ggml_backend_remoting_get_name,
+ /* .free = */ ggml_backend_remoting_free,
+ /* .set_tensor_async = */ NULL, // ggml_backend_remoting_set_tensor_async,
+ /* .get_tensor_async = */ NULL, // ggml_backend_remoting_get_tensor_async,
+ /* .cpy_tensor_async = */ NULL, // ggml_backend_remoting_cpy_tensor_async,
+ /* .synchronize = */ NULL, // ggml_backend_remoting_synchronize,
+ /* .graph_plan_create = */ NULL,
+ /* .graph_plan_free = */ NULL,
+ /* .graph_plan_update = */ NULL,
+ /* .graph_plan_compute = */ NULL,
+ /* .graph_compute = */ ggml_backend_remoting_graph_compute,
+ /* .event_record = */ NULL,
+ /* .event_wait = */ NULL,
+ /* .graph_optimize = */ ggml_backend_remoting_graph_optimize,
+};
+
+static ggml_guid_t ggml_backend_remoting_guid() {
+ static ggml_guid guid = { 0xb8, 0xf7, 0x4f, 0x86, 0x14, 0x03, 0x86, 0x02,
+ 0x91, 0xc8, 0xdd, 0xe9, 0x02, 0x3f, 0xc0, 0x2b };
+
+ return &guid;
+}
+
+ggml_backend_t ggml_backend_remoting_device_init(ggml_backend_dev_t dev, const char * params) {
+ UNUSED(params);
+
+ ggml_backend_remoting_device_context * ctx = (ggml_backend_remoting_device_context *) dev->context;
+
+ ggml_backend_t remoting_backend = new ggml_backend{
+ /* .guid = */ ggml_backend_remoting_guid(),
+ /* .interface = */ ggml_backend_remoting_interface,
+ /* .device = */ ggml_backend_reg_dev_get(ggml_backend_virtgpu_reg(), ctx->device),
+ /* .context = */ ctx,
+ };
+
+ return remoting_backend;
+}