Spaces:
Running on Zero
Running on Zero
| 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); | |
| UNUSED(gpu); | |
| UNUSED(cgraph); | |
| // not working yet | |
| apir_backend_graph_optimize(gpu, cgraph); | |
| } | |
| 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, | |
| /* .set_tensor_2d_async = */ NULL, | |
| /* .get_tensor_2d_async = */ NULL, | |
| /* .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; | |
| } | |