mirror of
https://github.com/nomic-ai/gpt4all.git
synced 2024-10-01 01:06:10 -04:00
windows/msvc: use high level processor feature detection API
see https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-isprocessorfeaturepresent
This commit is contained in:
parent
ad0e7fd01f
commit
95b8fb312e
@ -10,6 +10,9 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include <processthreadsapi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
std::string s_implementations_search_path = ".";
|
std::string s_implementations_search_path = ".";
|
||||||
|
|
||||||
@ -18,9 +21,7 @@ static bool has_at_least_minimal_hardware() {
|
|||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
return __builtin_cpu_supports("avx");
|
return __builtin_cpu_supports("avx");
|
||||||
#else
|
#else
|
||||||
int cpuInfo[4];
|
return IsProcessorFeaturePresent(PF_AVX_INSTRUCTIONS_AVAILABLE);
|
||||||
__cpuid(cpuInfo, 1);
|
|
||||||
return cpuInfo[2] & (1 << 28);
|
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
return true; // Don't know how to handle non-x86_64
|
return true; // Don't know how to handle non-x86_64
|
||||||
@ -32,9 +33,7 @@ static bool requires_avxonly() {
|
|||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
return !__builtin_cpu_supports("avx2");
|
return !__builtin_cpu_supports("avx2");
|
||||||
#else
|
#else
|
||||||
int cpuInfo[4];
|
return !IsProcessorFeaturePresent(PF_AVX2_INSTRUCTIONS_AVAILABLE);
|
||||||
__cpuidex(cpuInfo, 7, 0);
|
|
||||||
return !(cpuInfo[1] & (1 << 5));
|
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
return false; // Don't know how to handle non-x86_64
|
return false; // Don't know how to handle non-x86_64
|
||||||
|
Loading…
Reference in New Issue
Block a user