summaryrefslogtreecommitdiff
path: root/examples/rpc/rpc-server.cpp
diff options
context:
space:
mode:
authorRadoslav Gerganov <rgerganov@gmail.com>2024-05-15 16:04:40 +0300
committerRadoslav Gerganov <rgerganov@gmail.com>2024-05-16 12:04:08 +0300
commit9afdffe70ebf3166d429b4434783bb0b7f97bdeb (patch)
tree2b63704b0d82c4ad955aae48397928a3f57cbe17 /examples/rpc/rpc-server.cpp
parent3b3963c55c8332e33533c44b2aa882b0e45f8292 (diff)
rpc : get available mem for the CPU backend
This can be overridden with the -m command line option ref: #7293
Diffstat (limited to 'examples/rpc/rpc-server.cpp')
-rw-r--r--examples/rpc/rpc-server.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/examples/rpc/rpc-server.cpp b/examples/rpc/rpc-server.cpp
index 021185b8..41f37737 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 <windows.h>
+#else
+# include <unistd.h>
+#endif
#include <string>
#include <stdio.h>
@@ -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
}