From 9afdffe70ebf3166d429b4434783bb0b7f97bdeb Mon Sep 17 00:00:00 2001 From: Radoslav Gerganov Date: Wed, 15 May 2024 16:04:40 +0300 Subject: [PATCH] rpc : get available mem for the CPU backend This can be overridden with the -m command line option ref: #7293 --- examples/rpc/rpc-server.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/examples/rpc/rpc-server.cpp b/examples/rpc/rpc-server.cpp index 021185b83..41f377376 100644 --- a/examples/rpc/rpc-server.cpp +++ b/examples/rpc/rpc-server.cpp @@ -7,6 +7,11 @@ #endif #include "ggml-rpc.h" +#ifdef _WIN32 +# include +#else +# include +#endif #include #include @@ -84,9 +89,18 @@ static void get_backend_memory(size_t * free_mem, size_t * total_mem) { #ifdef GGML_USE_CUDA ggml_backend_cuda_get_device_memory(0, free_mem, total_mem); #else - // TODO: implement for other backends - *free_mem = 1; - *total_mem = 1; + #ifdef _WIN32 + MEMORYSTATUSEX status; + status.dwLength = sizeof(status); + GlobalMemoryStatusEx(&status); + *total_mem = status.ullTotalPhys; + *free_mem = status.ullAvailPhys; + #else + long pages = sysconf(_SC_PHYS_PAGES); + long page_size = sysconf(_SC_PAGE_SIZE); + *total_mem = pages * page_size; + *free_mem = *total_mem; + #endif #endif }