Skip to content

Commit 4d182fd

Browse files
committed
Support both flash_attn_3._C (v3.0.0) and legacy
1 parent 4ec7f45 commit 4d182fd

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

  • src/fairseq2/models/transformer/sdpa

src/fairseq2/models/transformer/sdpa/flash3.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@
1313
from typing_extensions import override
1414

1515
try:
16-
import flash_attn_3_cuda # type: ignore[import-not-found]
16+
import flash_attn_3._C as _flash_attn_3_C # type: ignore[import-not-found,import-untyped] # noqa: F401,N812
17+
18+
_flash_attn_3_ops: Any = torch.ops.flash_attn_3
1719
except ImportError:
18-
_has_flash_attn_3 = False
19-
else:
20-
_has_flash_attn_3 = True
20+
try:
21+
import flash_attn_3_cuda as _flash_attn_3_C # type: ignore[import-not-found,no-redef] # noqa: F401,N812
22+
23+
_flash_attn_3_ops = _flash_attn_3_C
24+
except ImportError:
25+
_flash_attn_3_ops = None
26+
27+
_has_flash_attn_3 = _flash_attn_3_ops is not None
2128

2229
from fairseq2.error import NotSupportedError, OperationalError
2330
from fairseq2.models.transformer.attention_bias import (
@@ -148,7 +155,7 @@ def _flash_attn_3_op(
148155
v = _contiguous(v)
149156

150157
# fmt: off
151-
out, softmax_lse, *_ = flash_attn_3_cuda.fwd(
158+
out, softmax_lse, *_ = _flash_attn_3_ops.fwd(
152159
q,
153160
k,
154161
v,
@@ -324,7 +331,7 @@ def _flash_attn_3_varlen_op(
324331
cu_seqlens_k = _contiguous(cu_seqlens_k)
325332

326333
# fmt: off
327-
out, softmax_lse, *_ = flash_attn_3_cuda.fwd(
334+
out, softmax_lse, *_ = _flash_attn_3_ops.fwd(
328335
q,
329336
k,
330337
v,
@@ -483,7 +490,7 @@ def _flash_attn_3_bwd_op(
483490
rhs_window_size: int,
484491
) -> None:
485492
# fmt: off
486-
flash_attn_3_cuda.bwd(
493+
_flash_attn_3_ops.bwd(
487494
dout,
488495
q,
489496
k,

0 commit comments

Comments
 (0)