From ba33fea3429af4b632e29a367a737fbc7b1daf31 Mon Sep 17 00:00:00 2001 From: hongruichen Date: Fri, 24 May 2024 18:15:36 +0800 Subject: [PATCH] erase backend handle when free --- ggml-rpc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ggml-rpc.cpp b/ggml-rpc.cpp index cc1d3ace1..760d6e345 100644 --- a/ggml-rpc.cpp +++ b/ggml-rpc.cpp @@ -521,6 +521,7 @@ static ggml_backend_buffer_type_i ggml_backend_rpc_buffer_type_interface = { /* .is_host = */ NULL, }; +static std::unordered_map instances; GGML_CALL static const char * ggml_backend_rpc_name(ggml_backend_t backend) { ggml_backend_rpc_context * rpc_ctx = (ggml_backend_rpc_context *)backend->context; @@ -531,6 +532,7 @@ GGML_CALL static const char * ggml_backend_rpc_name(ggml_backend_t backend) { GGML_CALL static void ggml_backend_rpc_free(ggml_backend_t backend) { ggml_backend_rpc_context * rpc_ctx = (ggml_backend_rpc_context *)backend->context; ggml_backend_rpc_buffer_type_context * buft_ctx = (ggml_backend_rpc_buffer_type_context *)rpc_ctx->buft->context; + instances.erase(rpc_ctx->endpoint); delete buft_ctx; delete rpc_ctx->buft; delete rpc_ctx; @@ -624,8 +626,6 @@ static ggml_backend_i ggml_backend_rpc_interface = { /* .event_synchronize = */ NULL, }; -static std::unordered_map instances; - GGML_API GGML_CALL ggml_backend_buffer_type_t ggml_backend_rpc_buffer_type(const char * endpoint) { ggml_backend_t backend = ggml_backend_rpc_init(endpoint); return backend != nullptr ? ggml_backend_rpc_get_default_buffer_type(backend) : nullptr;