Add support for getting cpu info on Windows for llama_bench

This commit is contained in:
zhenweijin 2024-08-02 17:11:15 +08:00
parent e09a800f9a
commit 32e7e0b2b7

View file

@ -27,6 +27,14 @@
#include "ggml-cann.h"
#endif
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#ifndef NOMINMAX
# define NOMINMAX
#endif
#include <windows.h>
#endif
// utils
static uint64_t get_time_ns() {
using clock = std::chrono::high_resolution_clock;
@ -96,6 +104,38 @@ static std::string get_cpu_info() {
}
fclose(f);
}
#elif defined(_WIN32)
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"),
0,
KEY_READ,
&hKey) != ERROR_SUCCESS) {
// fail to open registry key
return "";
}
char cpu_brand[256];
DWORD cpu_brand_size = sizeof(cpu_brand);
if (RegQueryValueEx(hKey,
TEXT("ProcessorNameString"),
NULL,
NULL,
(LPBYTE)cpu_brand,
&cpu_brand_size) != ERROR_SUCCESS) {
RegCloseKey(hKey);
// fail to read processor information
return "";
}
RegCloseKey(hKey);
// ensure the string is null-terminated
if (cpu_brand_size >= sizeof(cpu_brand)) {
cpu_brand[sizeof(cpu_brand) - 1] = '\0';
} else {
cpu_brand[cpu_brand_size] = '\0';
}
id = std::string(cpu_brand);
#endif
// TODO: other platforms
return id;