From 4a312d6ab83722f523b922762893cc42f057e828 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 4 Sep 2026 12:02:26 +0000 Subject: [PATCH 1/2] Re-export BlasLevel3 through the canonical ndarray::simd surface hpc::amx_matmul and hpc::bf16_tile_gemm are already re-exported through simd.rs so consumers reach native-SIMD-dispatching kernels through one import path; blas_level3's GEMM/syrk/symm/trmm/trsm trait was missing from that surface, so a tract-side GEMM kernel pilot needed to import hpc::blas_level3 directly, violating the W1a consumer invariant ("all SIMD from ndarray::simd"). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_012wrzeZAdwGYTCKoxamwQht --- src/simd.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/simd.rs b/src/simd.rs index 20fc5f15..a46e0084 100644 --- a/src/simd.rs +++ b/src/simd.rs @@ -648,6 +648,11 @@ pub use crate::simd_half::BF16x16; // K-means + L2 distance pub use crate::hpc::cam_pq::{kmeans, squared_l2}; +// Real BLAS Level 3 GEMM (and its siblings syrk/symm/trmm/trsm) surfaced here so a +// consumer reaches the native-SIMD-dispatching matmul through the canonical +// `ndarray::simd::*` import instead of dipping into `crate::hpc::blas_level3` directly +// (the W1a consumer invariant — "all SIMD from `ndarray::simd`"). +pub use crate::hpc::blas_level3::{BlasLevel3, Side}; // SIMD cosine From 525c26b9b652e34bf95df96cf44e61ebc5b908d4 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 4 Sep 2026 12:06:33 +0000 Subject: [PATCH 2/2] Re-export Uplo alongside BlasLevel3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit syrk/symm/trmm/trsm all take a Uplo parameter, but it was only reachable via hpc::blas_level2 — a consumer importing only ndarray::simd::* couldn't call those methods without also reaching into hpc directly, contrary to the facade contract the previous commit's comment states. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_012wrzeZAdwGYTCKoxamwQht --- src/simd.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/simd.rs b/src/simd.rs index a46e0084..3965990f 100644 --- a/src/simd.rs +++ b/src/simd.rs @@ -652,6 +652,7 @@ pub use crate::hpc::cam_pq::{kmeans, squared_l2}; // consumer reaches the native-SIMD-dispatching matmul through the canonical // `ndarray::simd::*` import instead of dipping into `crate::hpc::blas_level3` directly // (the W1a consumer invariant — "all SIMD from `ndarray::simd`"). +pub use crate::hpc::blas_level2::Uplo; pub use crate::hpc::blas_level3::{BlasLevel3, Side}; // SIMD cosine