Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/intgemm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Heafield <kpu@users.noreply.github.com>2021-05-01 19:57:17 +0300
committerGitHub <noreply@github.com>2021-05-01 19:57:17 +0300
commit18bcba45d08bcc0d5b64334b4b6ea2188a17b4f8 (patch)
treefb557ce183f83b86afc0667239ca2115ecdf709e
parentb578ae4521229c53ba0512be3d562b0afbd68fd4 (diff)
Fix MSVC getenv
Microsoft likes to break all the standard functions.
-rw-r--r--intgemm/intgemm.cc15
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;