diff --git a/CMakeLists.txt b/CMakeLists.txt index 2633dcfc..7dde3090 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -831,12 +831,6 @@ if(VLLM_CPP_METAL) endif() target_compile_definitions(vllm PUBLIC VLLM_CPP_MLX) target_sources(vllm PRIVATE src/vt/metal/metal_mlx_provider.mm) - # MLX 0.29.x headers use GNU-folding expressions that AppleClang diagnoses. - # Suppress that one external-header diagnostic for this TU. A source-level - # -Wno-error is ordered before vllm_cpp_set_warnings' target-level -Werror, - # so AppleClang promotes it again. - set_source_files_properties(src/vt/metal/metal_mlx_provider.mm PROPERTIES - COMPILE_OPTIONS "$<$:-Wno-gnu-folding-constant>") # SYSTEM so MLX's own headers cannot break our -Werror build. target_include_directories(vllm SYSTEM PRIVATE "${MLX_ROOT}/include") target_link_libraries(vllm PUBLIC ${MLX_LIBRARY}) diff --git a/docs/BENCHMARKS.md b/docs/BENCHMARKS.md index d2cb8e05..9703e799 100644 --- a/docs/BENCHMARKS.md +++ b/docs/BENCHMARKS.md @@ -6530,6 +6530,11 @@ us by about 1.5 points. The default (non-MLX) build is **95.9%** against this corrected baseline, not 96.4%. +The 2026-08-02 AppleClang warning-suppression correction is **NOT APPLICABLE** +to benchmark results: it changes only whether the optional MLX provider compiles +under target-wide `-Werror`. Darwin CI remains the build-verification gate; no +runtime path, measurement, or binding number changed. + **Everything qualitative in the entry below still holds** — MLX wins prefill, the shape gate is the right disposition, the fallback hoist was worth 27.2 vs 17.8 — only the headline ratio moves. The gate is still worth about +1.7 points over the diff --git a/docs/STATUS.md b/docs/STATUS.md index 19a5a82e..f771c491 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -1407,6 +1407,9 @@ loop, not parallelism or layout. An optional MLX GEMM provider is available via `-DVLLM_CPP_MLX=ON` and currently measures net slower than our own kernels. Full per-lever chronology: [docs/BENCHMARKS.md](BENCHMARKS.md) and [.agents/specs/metal-dispatch-attribution.md](../.agents/specs/metal-dispatch-attribution.md). +The MLX-enabled Darwin build remains **build-verification pending**: its narrow +AppleClang header-warning suppression now lives in the provider translation unit +so the target-wide `-Werror` cannot re-promote it; Darwin CI is the binding gate. **CUDA architectures.** The production target is GB10/`sm_121a` (runtime-gated, both gate models token-exact + at/above vLLM speed). The arch-additivity diff --git a/src/vt/metal/metal_mlx_provider.mm b/src/vt/metal/metal_mlx_provider.mm index 524fbb7c..e85a5aa6 100644 --- a/src/vt/metal/metal_mlx_provider.mm +++ b/src/vt/metal/metal_mlx_provider.mm @@ -50,6 +50,13 @@ #include #include +// MLX 0.29.x uses constant-folded variable length arrays in public headers. +// Keep the target-wide -Werror policy, but ignore that external-header-only +// AppleClang diagnostic after command-line warning options have been applied. +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wgnu-folding-constant" +#endif + // MLX public headers. Deliberately NOT mlx/backend/metal/*: those pull in // metal-cpp and, as noted above, their entry points are not exported anyway. #include "mlx/allocator.h"