Skip to content

Commit 249e932

Browse files
dhiltgenrick-github
authored andcommitted
mac: disable bf16 on unsupported OS versions (ollama#11585)
Support for bf16 was added in MacOS v14+ and attempting to enable on older versions causes runtime failures.
1 parent 12c57ee commit 249e932

File tree

3 files changed

+34
-3
lines changed

3 files changed

+34
-3
lines changed

llama/patches/0019-metal-add-mean-kernel-14267.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ diff --git a/ggml/src/ggml-metal/ggml-metal.m b/ggml/src/ggml-metal/ggml-metal.m
1919
index a9eeebc6..110c9ece 100644
2020
--- a/ggml/src/ggml-metal/ggml-metal.m
2121
+++ b/ggml/src/ggml-metal/ggml-metal.m
22-
@@ -489,6 +489,7 @@ enum ggml_metal_kernel_type {
22+
@@ -489,6 +489,7 @@ static void ggml_backend_metal_device_rel(struct ggml_backend_metal_device_conte
2323
GGML_METAL_KERNEL_TYPE_COS,
2424
GGML_METAL_KERNEL_TYPE_NEG,
2525
GGML_METAL_KERNEL_TYPE_SUM_ROWS,
2626
+ GGML_METAL_KERNEL_TYPE_MEAN,
2727
GGML_METAL_KERNEL_TYPE_POOL_2D_AVG_F32,
2828
GGML_METAL_KERNEL_TYPE_POOL_2D_MAX_F32,
2929
GGML_METAL_KERNEL_TYPE_ARGMAX,
30-
@@ -1436,6 +1437,7 @@ static struct ggml_backend_metal_context * ggml_metal_init(ggml_backend_dev_t de
30+
@@ -1436,6 +1437,7 @@ @implementation GGMLMetalClass
3131
GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_COS, cos, true);
3232
GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_NEG, neg, true);
3333
GGML_METAL_ADD_KERNEL(GGML_METAL_KERNEL_TYPE_SUM_ROWS, sum_rows, true);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Daniel Hiltgen <daniel@ollama.com>
3+
Date: Wed, 30 Jul 2025 08:43:46 -0700
4+
Subject: [PATCH] BF16 macos version guard
5+
6+
Only enable BF16 on supported MacOS versions (v14+)
7+
---
8+
ggml/src/ggml-metal/ggml-metal.m | 6 +++++-
9+
1 file changed, 5 insertions(+), 1 deletion(-)
10+
11+
diff --git a/ggml/src/ggml-metal/ggml-metal.m b/ggml/src/ggml-metal/ggml-metal.m
12+
index 110c9ece..ab46f6e3 100644
13+
--- a/ggml/src/ggml-metal/ggml-metal.m
14+
+++ b/ggml/src/ggml-metal/ggml-metal.m
15+
@@ -89,7 +89,11 @@
16+
ctx->has_bfloat |= [ctx->mtl_device supportsFamily:MTLGPUFamilyApple6];
17+
18+
#if defined(GGML_METAL_USE_BF16)
19+
- ctx->use_bfloat = ctx->has_bfloat;
20+
+ if (@available(macOS 14.0, *)) {
21+
+ ctx->use_bfloat = ctx->has_bfloat;
22+
+ } else {
23+
+ ctx->use_bfloat = false;
24+
+ }
25+
#else
26+
ctx->use_bfloat = false;
27+
#endif

ml/backend/ggml/ggml/src/ggml-metal/ggml-metal.m

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,11 @@
8989
ctx->has_bfloat |= [ctx->mtl_device supportsFamily:MTLGPUFamilyApple6];
9090

9191
#if defined(GGML_METAL_USE_BF16)
92-
ctx->use_bfloat = ctx->has_bfloat;
92+
if (@available(macOS 14.0, *)) {
93+
ctx->use_bfloat = ctx->has_bfloat;
94+
} else {
95+
ctx->use_bfloat = false;
96+
}
9397
#else
9498
ctx->use_bfloat = false;
9599
#endif

0 commit comments

Comments
 (0)