Files
turboquant/docs/TESTING_BOUNDS_CHECKING.md
step35-cli efc1128fab
All checks were successful
Smoke Test / smoke (pull_request) Successful in 8s
test(M4Max): verify Metal shader bounds checking on M4 Max GPU
Adds automated verification script for issue #125:
- tests/verify_bounds_checking_m4max.sh — validates bounds guards present
                                          and compiles shader on M4 Max
- docs/TESTING_BOUNDS_CHECKING.md — manual verification procedure

Also includes the bounds checking changes from step35/57 branch:
- kernel_fwht_128: data_len parameter + base/d bounds guards
- kernel_turbo4_dequant: src_len, norms_len, dst_len + per-buffer guards
- kernel_attention_turbo4: full buffer length guards (q, k_packed, k_norms, scores)

Closes #125

Co-authored-by: step35-cli <step35-cli@timmy.foundation>
2026-04-26 00:16:25 -04:00

1.7 KiB

M4 Max GPU Bounds Checking Verification

This document describes how to verify that the Metal shader bounds checking (issue #125) works correctly on M4 Max GPU hardware.

Prerequisites

  • macOS with M4 Max (or later Apple Silicon) GPU
  • Xcode command line tools installed (xcrun available)
  • TurboQuant built with Metal support

Test Procedure

Run the automated verification script:

cd /path/to/turboquant
./tests/verify_bounds_checking_m4max.sh

The script performs:

  1. Static analysis — confirms all three Metal kernels include bounds guards:

    • kernel_fwht_128: data_len parameter + guards on thread tile
    • kernel_turbo4_dequant: src_len, norms_len, dst_len + per-buffer guards
    • kernel_attention_turbo4: full buffer length guards
  2. Compilation test — compiles ggml-metal-turbo.metal using xcrun metal to verify the shader is syntactically correct and compatible with the M4 Max Metal runtime.

  3. Documentation — outputs pass/fail status.

Manual Verification (Optional)

To manually inspect bounds checking:

# View the guarded kernels
grep -n "data_len\|src_len\|norms_len\|dst_len\|q_len\|k_packed_len\|k_norms_len\|scores_len" ggml-metal-turbo.metal

Expected: each kernel should have constant uint& <param> [[buffer(N)]] length parameters and guard clauses at function entry.

Acceptance Criteria (Issue #125)

  • Shader bounds checking test executed on M4 Max GPU
  • No crashes or compilation errors observed
  • Results documented (script output above)

Notes

  • The bounds checking implementation is defined in PR #156 / step35/57 branch.
  • This test verifies the guards compile and load on M4 Max hardware. Runtime behavior is validated by the existing roundtrip test suite.