mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-07-16 16:51:26 +00:00
enable hd64 bf16 atomic32
This commit is contained in:
@@ -67,7 +67,7 @@ set(EXAMPLE_FMHA_BWD "tile_example_fmha_bwd")
|
||||
# to be included in "make all/install/check"
|
||||
message("adding example ${EXAMPLE_FMHA_BWD}")
|
||||
|
||||
add_executable(${EXAMPLE_FMHA_BWD} EXCLUDE_FROM_ALL hsaco/bwd_hd64_bf16_a16_rtna.cpp hsaco/bwd_hd64_bf16_a16_rtne.cpp hsaco/bwd_hd64_bf16_a16_rtz.cpp hsaco/bwd_hd64_bf16_causal_a16_rtna.cpp hsaco/bwd_hd64_bf16_causal_a16_rtne.cpp hsaco/bwd_hd64_bf16_causal_a16_rtz.cpp hsaco/bwd_bf16_a16_rtna.cpp hsaco/bwd_bf16_a16_rtne.cpp hsaco/bwd_bf16_a16_rtz.cpp hsaco/bwd_bf16_a32_rtna.cpp hsaco/bwd_bf16_a32_rtne.cpp hsaco/bwd_bf16_a32_rtz.cpp hsaco/bwd_bf16_causal_a16_rtna.cpp hsaco/bwd_bf16_causal_a16_rtne.cpp hsaco/bwd_bf16_causal_a16_rtz.cpp hsaco/bwd_bf16_causal_a32_rtna.cpp hsaco/bwd_bf16_causal_a32_rtne.cpp hsaco/bwd_bf16_causal_a32_rtz.cpp hsaco/bwd_bf16_spec_a32.cpp hsaco/bwd_bf16_spec_causal_a32.cpp hsaco/bwd_fp16_a16.cpp hsaco/bwd_fp16_a32.cpp hsaco/bwd_fp16_causal_a16.cpp hsaco/bwd_fp16_causal_a32.cpp hsaco/bwd_fp16_spec_a32.cpp hsaco/bwd_fp16_spec_causal_a32.cpp fmha_bwd.cpp)
|
||||
add_executable(${EXAMPLE_FMHA_BWD} EXCLUDE_FROM_ALL hsaco/bwd_hd64_bf16_a16_rtna.cpp hsaco/bwd_hd64_bf16_a16_rtne.cpp hsaco/bwd_hd64_bf16_a16_rtz.cpp hsaco/bwd_hd64_bf16_a32_rtna.cpp hsaco/bwd_hd64_bf16_a32_rtne.cpp hsaco/bwd_hd64_bf16_a32_rtz.cpp hsaco/bwd_hd64_bf16_causal_a16_rtna.cpp hsaco/bwd_hd64_bf16_causal_a16_rtne.cpp hsaco/bwd_hd64_bf16_causal_a16_rtz.cpp hsaco/bwd_hd64_bf16_causal_a32_rtna.cpp hsaco/bwd_hd64_bf16_causal_a32_rtne.cpp hsaco/bwd_hd64_bf16_causal_a32_rtz.cpp hsaco/bwd_bf16_a16_rtna.cpp hsaco/bwd_bf16_a16_rtne.cpp hsaco/bwd_bf16_a16_rtz.cpp hsaco/bwd_bf16_a32_rtna.cpp hsaco/bwd_bf16_a32_rtne.cpp hsaco/bwd_bf16_a32_rtz.cpp hsaco/bwd_bf16_causal_a16_rtna.cpp hsaco/bwd_bf16_causal_a16_rtne.cpp hsaco/bwd_bf16_causal_a16_rtz.cpp hsaco/bwd_bf16_causal_a32_rtna.cpp hsaco/bwd_bf16_causal_a32_rtne.cpp hsaco/bwd_bf16_causal_a32_rtz.cpp hsaco/bwd_bf16_spec_a32.cpp hsaco/bwd_bf16_spec_causal_a32.cpp hsaco/bwd_fp16_a16.cpp hsaco/bwd_fp16_a32.cpp hsaco/bwd_fp16_causal_a16.cpp hsaco/bwd_fp16_causal_a32.cpp hsaco/bwd_fp16_spec_a32.cpp hsaco/bwd_fp16_spec_causal_a32.cpp fmha_bwd.cpp)
|
||||
target_include_directories(${EXAMPLE_FMHA_BWD} PRIVATE ${CMAKE_CURRENT_LIST_DIR})
|
||||
target_sources(${EXAMPLE_FMHA_BWD} PRIVATE ${FMHA_BWD_GEN_BLOBS})
|
||||
|
||||
|
||||
@@ -740,7 +740,33 @@ float fmha_bwd(fmha_bwd_traits t, fmha_bwd_args a, const ck_tile::stream_config&
|
||||
else if((a.hdim_q == 64) && (a.hdim_v == 64) && (a.seqlen_k % 64 == 0)){{
|
||||
if(t.data_type.compare("bf16") == 0){{
|
||||
if(t.mask_type == mask_enum::no_mask){{
|
||||
if((t.is_v3_atomic_fp32 == false) && (a.nhead_q % a.nhead_k == 0)){{
|
||||
if((t.is_v3_atomic_fp32 == true) && (a.nhead_stride_dq_acc > a.stride_dq_acc /*dq_acc only support BHSD*/)){{
|
||||
if(t.how_v3_bf16_cvt == 0){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
using convert_dq_trait_ = fmha_bwd_convert_dq_traits_<64, ck_tile::bf16_t, false, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_a32_rtne";
|
||||
bool io_perm = a.nhead_stride_q > a.stride_q;
|
||||
r = fmha_bwd_v3_xqa_<dot_do_o_trait_, convert_dq_trait_>(s, a, bwd_hd64_bf16_a32_rtne, bwd_v3_name, io_perm, 32, 192);
|
||||
return r;
|
||||
}}
|
||||
else if(t.how_v3_bf16_cvt == 1){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
using convert_dq_trait_ = fmha_bwd_convert_dq_traits_<64, ck_tile::bf16_t, false, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_a32_rtna";
|
||||
bool io_perm = a.nhead_stride_q > a.stride_q;
|
||||
r = fmha_bwd_v3_xqa_<dot_do_o_trait_, convert_dq_trait_>(s, a, bwd_hd64_bf16_a32_rtna, bwd_v3_name, io_perm, 32, 192);
|
||||
return r;
|
||||
}}
|
||||
else if(t.how_v3_bf16_cvt == 2){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
using convert_dq_trait_ = fmha_bwd_convert_dq_traits_<64, ck_tile::bf16_t, false, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_a32_rtz";
|
||||
bool io_perm = a.nhead_stride_q > a.stride_q;
|
||||
r = fmha_bwd_v3_xqa_<dot_do_o_trait_, convert_dq_trait_>(s, a, bwd_hd64_bf16_a32_rtz, bwd_v3_name, io_perm, 32, 192);
|
||||
return r;
|
||||
}}
|
||||
}}
|
||||
else if((t.is_v3_atomic_fp32 == false) && (a.nhead_q % a.nhead_k == 0)){{
|
||||
if(t.how_v3_bf16_cvt == 0){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_a16_rtne";
|
||||
@@ -765,7 +791,33 @@ float fmha_bwd(fmha_bwd_traits t, fmha_bwd_args a, const ck_tile::stream_config&
|
||||
}}
|
||||
}}
|
||||
else if((t.mask_type != mask_enum::no_mask) && ((a.window_size_left == -1) && (a.window_size_right == 0))){{
|
||||
if((t.is_v3_atomic_fp32 == false) && (a.nhead_q % a.nhead_k == 0)){{
|
||||
if((t.is_v3_atomic_fp32 == true) && (a.nhead_stride_dq_acc > a.stride_dq_acc /*dq_acc only support BHSD*/)){{
|
||||
if(t.how_v3_bf16_cvt == 0){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
using convert_dq_trait_ = fmha_bwd_convert_dq_traits_<64, ck_tile::bf16_t, false, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_causal_a32_rtne";
|
||||
bool io_perm = a.nhead_stride_q > a.stride_q;
|
||||
r = fmha_bwd_v3_xqa_<dot_do_o_trait_, convert_dq_trait_>(s, a, bwd_hd64_bf16_causal_a32_rtne, bwd_v3_name, io_perm, 32, 192);
|
||||
return r;
|
||||
}}
|
||||
else if(t.how_v3_bf16_cvt == 1){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
using convert_dq_trait_ = fmha_bwd_convert_dq_traits_<64, ck_tile::bf16_t, false, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_causal_a32_rtna";
|
||||
bool io_perm = a.nhead_stride_q > a.stride_q;
|
||||
r = fmha_bwd_v3_xqa_<dot_do_o_trait_, convert_dq_trait_>(s, a, bwd_hd64_bf16_causal_a32_rtna, bwd_v3_name, io_perm, 32, 192);
|
||||
return r;
|
||||
}}
|
||||
else if(t.how_v3_bf16_cvt == 2){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
using convert_dq_trait_ = fmha_bwd_convert_dq_traits_<64, ck_tile::bf16_t, false, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_causal_a32_rtz";
|
||||
bool io_perm = a.nhead_stride_q > a.stride_q;
|
||||
r = fmha_bwd_v3_xqa_<dot_do_o_trait_, convert_dq_trait_>(s, a, bwd_hd64_bf16_causal_a32_rtz, bwd_v3_name, io_perm, 32, 192);
|
||||
return r;
|
||||
}}
|
||||
}}
|
||||
else if((t.is_v3_atomic_fp32 == false) && (a.nhead_q % a.nhead_k == 0)){{
|
||||
if(t.how_v3_bf16_cvt == 0){{
|
||||
using dot_do_o_trait_ = fmha_bwd_dot_do_o_traits_<64, ck_tile::bf16_t, false, false, false>;
|
||||
const std::string bwd_v3_name = "bwd_v3_hd64_bf16_causal_a16_rtne";
|
||||
|
||||
2173
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_a32_rtna.cpp
Normal file
2173
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_a32_rtna.cpp
Normal file
File diff suppressed because it is too large
Load Diff
2293
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_a32_rtne.cpp
Normal file
2293
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_a32_rtne.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1885
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_a32_rtz.cpp
Normal file
1885
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_a32_rtz.cpp
Normal file
File diff suppressed because it is too large
Load Diff
2547
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_causal_a32_rtna.cpp
Normal file
2547
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_causal_a32_rtna.cpp
Normal file
File diff suppressed because it is too large
Load Diff
2667
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_causal_a32_rtne.cpp
Normal file
2667
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_causal_a32_rtne.cpp
Normal file
File diff suppressed because it is too large
Load Diff
2259
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_causal_a32_rtz.cpp
Normal file
2259
example/ck_tile/01_fmha/hsaco/bwd_hd64_bf16_causal_a32_rtz.cpp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,12 @@ extern unsigned char bwd_fp16_spec_causal_a32[];
|
||||
extern unsigned char bwd_hd64_bf16_a16_rtna[];
|
||||
extern unsigned char bwd_hd64_bf16_a16_rtne[];
|
||||
extern unsigned char bwd_hd64_bf16_a16_rtz[];
|
||||
extern unsigned char bwd_hd64_bf16_a32_rtna[];
|
||||
extern unsigned char bwd_hd64_bf16_a32_rtne[];
|
||||
extern unsigned char bwd_hd64_bf16_a32_rtz[];
|
||||
extern unsigned char bwd_hd64_bf16_causal_a16_rtna[];
|
||||
extern unsigned char bwd_hd64_bf16_causal_a16_rtne[];
|
||||
extern unsigned char bwd_hd64_bf16_causal_a16_rtz[];
|
||||
extern unsigned char bwd_hd64_bf16_causal_a32_rtna[];
|
||||
extern unsigned char bwd_hd64_bf16_causal_a32_rtne[];
|
||||
extern unsigned char bwd_hd64_bf16_causal_a32_rtz[];
|
||||
|
||||
Reference in New Issue
Block a user