mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-07-11 01:27:34 +00:00
Instruction scheduling in block gemm instead of scheduler
Compiler generates better assembly decreasing spilling for large tiles AB Quant is unchanged
This commit is contained in:
@@ -248,6 +248,12 @@ struct BlockGemmARegBRegCRegEightWavesV1
|
||||
merge_sequences(c_iter_idx{}, c_warp_y_index_zeros),
|
||||
merge_sequences(sequence<1, 1>{}, c_warp_y_lengths),
|
||||
c_warp_tensor.get_thread_buffer());
|
||||
__builtin_amdgcn_sched_group_barrier(0x008, 1, 0);
|
||||
if constexpr(nIter == 0 && mIter == MIterPerWarp - 1 && kIter == 0)
|
||||
{
|
||||
s_waitcnt_lgkm<4>();
|
||||
__builtin_amdgcn_sched_barrier(0);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -183,14 +183,6 @@ struct GemmPipelineAgBgCrCompAsyncEightWaves : public BaseGemmPipelineAgBgCrComp
|
||||
// Hot loop scheduler
|
||||
// ------------------
|
||||
auto hot_loop_scheduler = [&]() {
|
||||
__builtin_amdgcn_sched_group_barrier(0x008, 1, 0); // MFMA
|
||||
__builtin_amdgcn_sched_group_barrier(0x008, 1, 0); // MFMA
|
||||
__builtin_amdgcn_sched_group_barrier(0x008, 1, 0); // MFMA
|
||||
s_waitcnt_lgkm<4>();
|
||||
__builtin_amdgcn_sched_group_barrier(0x004, 1, 0); // lgkmcnt / SALU
|
||||
static_for<0, MFMA_INST - 3, 1>{}([&](auto) {
|
||||
__builtin_amdgcn_sched_group_barrier(0x008, 1, 0); // MFMA
|
||||
});
|
||||
__builtin_amdgcn_sched_barrier(0);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user