// SPDX-License-Identifier: MIT // Copyright (c) 2018-2025, Advanced Micro Devices, Inc. All rights reserved. #include "transpose_example.hpp" #include template float batched_transpose_dispatch(batched_transpose_kargs& a, ck_tile::stream_config& s) { uint32_t dim_block_h = (a.height + block_y - 1) / block_y; uint32_t dim_block_w = (a.width + block_x - 1) / block_x; uint32_t dim_stride = a.height * a.width; a.dim_stride = dim_stride; a.dim_block_h = dim_block_h; a.dim_block_w = dim_block_w; using ts_problem = ck_tile::TransposePipelineProblem; using ts_pipeline = ck_tile::BlockTranspose; using kernel = ck_tile::BatchedTransposeKernel; auto kargs = kernel::MakeKargs(a); const dim3 grids = kernel::GridSize(a); constexpr dim3 blocks = kernel::BlockSize(); float ave_time = ck_tile::launch_kernel( s, ck_tile::make_kernel(kernel{}, grids, blocks, 0, kargs)); return ave_time; } float batched_transpose(batched_transpose_trait t, batched_transpose_kargs a, ck_tile::stream_config s) { if(t.type == "fp16") { return batched_transpose_dispatch(a, s); } else if(t.type == "fp8") { return batched_transpose_dispatch(a, s); } return -1; }