From 49bd6bf1ba80abd588a56a3f3af2f1bcd41d215f Mon Sep 17 00:00:00 2001 From: Amin Sedaghat <35748194+Aminsed@users.noreply.github.com> Date: Tue, 9 Dec 2025 19:57:56 -0500 Subject: [PATCH] fix print_layout printf format in device code (#2688) * fix print_layout printf format in device code * Replace %.*s format specifier with explicit loop * Remove unused delim variable The printf format %.*s with dynamic width does not work correctly in CUDA device code, causing literal %.*s to appear in output. Fixes #2496 * Update include/cute/util/print_tensor.hpp Co-authored-by: Cris Cecka * Update include/cute/util/print_tensor.hpp Co-authored-by: Cris Cecka --------- Co-authored-by: Cris Cecka --- include/cute/util/print_tensor.hpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/include/cute/util/print_tensor.hpp b/include/cute/util/print_tensor.hpp index c5eb39a1..526fa63d 100644 --- a/include/cute/util/print_tensor.hpp +++ b/include/cute/util/print_tensor.hpp @@ -50,7 +50,6 @@ print_layout(Layout const& layout) // (m,n) -> idx CUTE_STATIC_ASSERT_V(rank(layout) == Int<2>{}); int idx_width = num_digits(cosize(layout)) + 2; - const char* delim = "+-----------------------"; print(layout); print("\n"); @@ -63,7 +62,12 @@ print_layout(Layout const& layout) // (m,n) -> idx for (int m = 0; m < size<0>(layout); ++m) { // Header print(" "); - for (int n = 0; n < size<1>(layout); ++n) { printf("%.*s", idx_width+1, delim); } + for (int n = 0; n < size<1>(layout); ++n) { + printf("+"); + for (int i = 0; i < idx_width; ++i) { + printf("-"); + } + } printf("+\n"); // Values printf("%2d ", m); // Row indices @@ -72,7 +76,12 @@ print_layout(Layout const& layout) // (m,n) -> idx } // Footer print(" "); - for (int n = 0; n < size<1>(layout); ++n) { printf("%.*s", idx_width+1, delim); } + for (int n = 0; n < size<1>(layout); ++n) { + printf("+"); + for (int i = 0; i < idx_width; ++i) { + printf("-"); + } + } printf("+\n"); }