diff --git a/3rdparty/QoLA b/3rdparty/QoLA index a2bfad643..3ff1d89fd 160000 --- a/3rdparty/QoLA +++ b/3rdparty/QoLA @@ -1 +1 @@ -Subproject commit a2bfad643b5a4b8f7e6447063a713a5f193bfb65 +Subproject commit 3ff1d89fd4d2204241b423de6cd3e4095202fcda diff --git a/3rdparty/ck_jit b/3rdparty/ck_jit index 2f1859c43..bc28d192c 160000 --- a/3rdparty/ck_jit +++ b/3rdparty/ck_jit @@ -1 +1 @@ -Subproject commit 2f1859c434bfa2a1d83004ed424ec12cef595126 +Subproject commit bc28d192c4f4e3a9e07fad977c22255227ad33ac diff --git a/transformer_engine/common/fused_attn_rocm/fused_attn_ck.cpp b/transformer_engine/common/fused_attn_rocm/fused_attn_ck.cpp index c90e60fa4..86ca68203 100644 --- a/transformer_engine/common/fused_attn_rocm/fused_attn_ck.cpp +++ b/transformer_engine/common/fused_attn_rocm/fused_attn_ck.cpp @@ -499,7 +499,8 @@ void fused_attn_ck_fwd_impl( const bool nvte_log_ck_config = getenv("NVTE_LOG_CK_CONFIG"); // ASM v3 does not support sink; force CK tile path - bool nvte_ck_uses_fwd_v3 = !has_sink && getenv("NVTE_CK_USES_FWD_V3", 1); + bool nvte_ck_uses_fwd_v3 = !has_sink && getenv("NVTE_CK_USES_FWD_V3", 1) && + (cuda::sm_arch() != 125 || !cuda::sm_arch_name().starts_with("gfx1250-strict")); int nvte_ck_how_v3_bf16_cvt = getenv("NVTE_CK_HOW_V3_BF16_CVT", 1); bool nvte_ck_zero_out_pad = getenv("NVTE_CK_ZERO_OUT_PAD", 1); NVTE_QKV_Format qkv_format = nvte_get_qkv_format(layout); @@ -856,7 +857,8 @@ void fused_attn_ck_bwd_impl( // ASM v3 bwd does not compute the sink gradient; force the CK tile path so // has_sink users still get a correct (if slower) d_sink, mirroring the fwd // ASM v3 sink guard above. - bool nvte_ck_uses_bwd_v3 = getenv("NVTE_CK_USES_BWD_V3", 1) && !has_sink; + bool nvte_ck_uses_bwd_v3 = !has_sink && getenv("NVTE_CK_USES_BWD_V3", 1) && + (cuda::sm_arch() != 125 || !cuda::sm_arch_name().starts_with("gfx1250-strict")); bool nvte_ck_is_v3_atomic_fp32 = getenv("NVTE_CK_IS_V3_ATOMIC_FP32", 1); int nvte_ck_how_v3_bf16_cvt = getenv("NVTE_CK_HOW_V3_BF16_CVT", 1);