From 09c47ee1985b06653c0575407a9dba6e90457107 Mon Sep 17 00:00:00 2001 From: Imanol Gomez Date: Wed, 21 Oct 2026 14:59:26 +0200 Subject: [PATCH] docs(cutile-rs): make the PointerTile examples in the DSL reference type-check PointerTile::broadcast keeps the rank, so broadcasting a scalar pointer tile (rank 0) straight to { [128] } does not compile. Reshape to rank 1 first with reshape_ptr, then broadcast_ptr, then offset_tile, as separate annotated lets. Fixes #1597 Signed-off-by: Imanol Gomez --- cutile-rs/cutile-book/reference/dsl-api.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cutile-rs/cutile-book/reference/dsl-api.md b/cutile-rs/cutile-book/reference/dsl-api.md index 23d5abdf5b..9a8544bd44 100644 --- a/cutile-rs/cutile-book/reference/dsl-api.md +++ b/cutile-rs/cutile-book/reference/dsl-api.md @@ -319,7 +319,10 @@ Dynamic dimensions (`-1`) are resolved at runtime from the tensor's actual shape ```rust let ptr: PointerTile<*mut f32, { [] }> = pointer_to_tile(raw_ptr); -let offset_ptrs: PointerTile<*mut f32, { [128] }> = ptr.broadcast(shape![128]).offset_tile(offsets); +// `broadcast` keeps the rank, so reshape the scalar pointer tile to rank 1 first. +let ptr1: PointerTile<*mut f32, { [1] }> = reshape_ptr(ptr, shape![1]); +let wide: PointerTile<*mut f32, { [128] }> = broadcast_ptr(ptr1, shape![128]); +let offset_ptrs: PointerTile<*mut f32, { [128] }> = wide.offset_tile(offsets); ``` ### Token @@ -768,7 +771,9 @@ block for brevity. ```rust let base: PointerTile<*mut f32, { [] }> = pointer_to_tile(ptr); -let ptrs: PointerTile<*mut f32, { [128] }> = base.broadcast(shape![128]).offset_tile(offsets); +let base1: PointerTile<*mut f32, { [1] }> = reshape_ptr(base, shape![1]); +let wide: PointerTile<*mut f32, { [128] }> = broadcast_ptr(base1, shape![128]); +let ptrs: PointerTile<*mut f32, { [128] }> = wide.offset_tile(offsets); let (values, token): (Tile, Token) = load_ptr_tko(ptrs, ordering::Weak, None::, None, None, None, Latency::<0>); ```