Spaces:
Sleeping
Sleeping
ggml : prevent builds with -ffinite-math-only (llama/7726)
Browse filesThis 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
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
|