summaryrefslogtreecommitdiff
path: root/ggml.c
diff options
context:
space:
mode:
authorGeorgi Gerganov <ggerganov@gmail.com>2024-06-04 10:01:09 +0300
committerGitHub <noreply@github.com>2024-06-04 17:01:09 +1000
commit6d1616944d9efd342ed2a4fd318722adfc9febcd (patch)
treec3489076646472b4eed1ed116a6443e345611ba0 /ggml.c
parentbde7cd3cd949c1a85d3a199498ac98e78039d46f (diff)
ggml : prevent builds with -ffinite-math-only (#7726)
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
Diffstat (limited to 'ggml.c')
-rw-r--r--ggml.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/ggml.c b/ggml.c
index 000d9db7..8869e146 100644
--- a/ggml.c
+++ b/ggml.c
@@ -2272,6 +2272,11 @@ inline static float ggml_silu_f32(float x) {
return x/(1.0f + expf(-x));
}
+#if __FINITE_MATH_ONLY__
+#error "some routines in ggml.c require non-finite math arithmetics -- pass -fno-finite-math-only to the compiler to fix"
+#error "ref: https://github.com/ggerganov/llama.cpp/pull/7154#issuecomment-2143844461"
+#endif
+
#if defined(__ARM_NEON) && defined(__aarch64__)
// adapted from arm limited optimized routine