[rocm-libraries] ROCm/rocm-libraries#4834 (commit e75e6cb)

[CK_TILE][GEMM] Fix eightwarp error & Add eightwarp unit test
 (#4834)

## Motivation

The primary goal of this PR is to fix a critical issue in the EightWarps
implementation within ck_tile. Additionally, unit tests were added to
ensure that CI can detect errors.

## Test Plan

ninja test_tile_gemm_quant_abquant_eightwarps
./bin/test_tile_gemm_quant_abquant_eightwarps

## Test Result

All EightWarps related test cases in TestCkTileGemmABQuant completed
successfully without linker errors or validation mismatches.

## Submission Checklist

- [ ] Look over the contributing guidelines at
https://github.com/ROCm/ROCm/blob/develop/CONTRIBUTING.md#pull-requests.
This commit is contained in:
kensclin
2026-03-04 04:11:27 +00:00
committed by assistant-librarian[bot]
parent b09112bbad
commit 30702c9cbc
7 changed files with 124 additions and 18 deletions

View File

@@ -116,7 +116,7 @@ struct CShuffleEpilogue
static constexpr index_t isCTransposed = Problem::isCTransposed;
static constexpr bool FixedVectorSize = Problem::FixedVectorSize;
static constexpr bool TiledMMAPermuteN = Problem::TiledMMAPermuteN;
#ifdef __gfx95__
#if defined(CK_GFX950_SUPPORT)
static constexpr bool EightWave = (MWave * NWave == 8);
#else
static constexpr bool EightWave = false;

View File

@@ -1328,7 +1328,8 @@ struct QuantGemmKernel
// For RowMajor C, M is the row dimension — check M alignment here because
// ALayout=RowMajor does not check M (it only checks K), leaving a gap for
// the RowMajorA + RowMajorC combination.
if(kargs.M % TilePartitioner::MPerBlock != 0 && GemmPipeline::kPadM == false)
if(kargs.M % TilePartitioner::MPerBlock != 0 && GemmPipeline::kPadM == false &&
GemmPipeline::BlockGemmShape::NumWarps != 8)
{
if(ck_tile::EnvIsEnabled(CK_TILE_ENV(CK_TILE_LOGGING)))
{