diff options
author | Kenneth Heafield <kpu@users.noreply.github.com> | 2021-05-01 19:57:17 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-01 19:57:17 +0300 |
commit | 18bcba45d08bcc0d5b64334b4b6ea2188a17b4f8 (patch) | |
tree | fb557ce183f83b86afc0667239ca2115ecdf709e | |
parent | b578ae4521229c53ba0512be3d562b0afbd68fd4 (diff) |
Fix MSVC getenv
Microsoft likes to break all the standard functions.
-rw-r--r-- | intgemm/intgemm.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/intgemm/intgemm.cc b/intgemm/intgemm.cc index e604ead..9b38e08 100644 --- a/intgemm/intgemm.cc +++ b/intgemm/intgemm.cc @@ -78,8 +78,15 @@ CPUType RealCPUID() { } CPUType EnvironmentCPUID() { +#if defined(_MSC_VER) + char env_override[11]; + size_t len = 0; + if (getenv_s(&len, env_override, sizeof(env_override), "INTGEMM_CPUID")) return CPUType::AVX512VNNI; + if (!len) return CPUType::AVX512VNNI; +#else const char *env_override = getenv("INTGEMM_CPUID"); if (!env_override) return CPUType::AVX512VNNI; /* This will be capped to actual ID */ +#endif if (!strcmp(env_override, "AVX512VNNI")) return CPUType::AVX512VNNI; if (!strcmp(env_override, "AVX512BW")) return CPUType::AVX512BW; if (!strcmp(env_override, "AVX2")) return CPUType::AVX2; @@ -92,10 +99,12 @@ CPUType EnvironmentCPUID() { } // namespace CPUType GetCPUID() { - static const CPUType kCPU = std::min(RealCPUID(), EnvironmentCPUID()); - return kCPU; + static const CPUType kLocalCPU = std::min(RealCPUID(), EnvironmentCPUID()); + return kLocalCPU; } +const CPUType kCPU = GetCPUID(); + float Unsupported_MaxAbsolute(const float * /*begin*/, const float * /*end*/) { throw UnsupportedCPU(); } @@ -134,8 +143,6 @@ void (*Int8Shift::QuantizeU)(const float *input, uint8_t *output, float quant_mu const char *const Int8Shift::kName = ChooseCPU(AVX512VNNI::Kernels8::kName, AVX512BW::Kernels8::kName, AVX2::Kernels8::kName, SSSE3::Kernels8::kName, Unsupported_8bit::kName, Unsupported_8bit::kName); -const CPUType kCPU = ChooseCPU(CPUType::AVX512VNNI, CPUType::AVX512BW, CPUType::AVX2, CPUType::SSSE3, CPUType::SSE2, CPUType::UNSUPPORTED); - #if !defined(INTGEMM_COMPILER_SUPPORTS_AVX2) namespace AVX2{ using SSE2::MaxAbsolute; |