ggerganov commited on
Commit
154f0f8
·
1 Parent(s): eab8082

ggml : prevent builds with -ffinite-math-only (llama/7726)

Browse files

This enforces a check that -fno-finite-math-only was set and that the operating
compiling mode is not in finite maths mode. This is because during rewriting of
silu and softmax for cpu #7154 there emerged an issue where the result that was
observed when >1 slot was nondeterministic as found by

@JohannesGaessler
.

@LostRuins narrowed the problem down to -ffinite-math-only which was theorised
to be due to SiLU, instead of flushing small values to 0, returns NaN or some
other garbage.

@jart
proposed a fix that

@ggerganov
then implemented in this fix

ref https://github.com/ggerganov/llama.cpp/pull/7154#issuecomment-2145661825

Files changed (1) hide show
  1. ggml.c +5 -0
ggml.c CHANGED
@@ -2272,6 +2272,11 @@ inline static float ggml_silu_f32(float x) {
2272
  return x/(1.0f + expf(-x));
2273
  }
2274
 
 
 
 
 
 
2275
  #if defined(__ARM_NEON) && defined(__aarch64__)
2276
 
2277
  // adapted from arm limited optimized routine
 
2272
  return x/(1.0f + expf(-x));
2273
  }
2274
 
2275
+ #if __FINITE_MATH_ONLY__
2276
+ #error "some routines in ggml.c require non-finite math arithmetics -- pass -fno-finite-math-only to the compiler to fix"
2277
+ #error "ref: https://github.com/ggerganov/llama.cpp/pull/7154#issuecomment-2143844461"
2278
+ #endif
2279
+
2280
  #if defined(__ARM_NEON) && defined(__aarch64__)
2281
 
2282
  // adapted from arm limited optimized routine