[JAX] [PyT] [Common] Enable D=256 BWD cuDNN fused attn for Blackwell CC 10.x - #3056
Conversation
51ad582 to
d177ecf
Compare
Greptile SummaryThis PR enables the cuDNN D=256 backward kernel on Blackwell (SM10x) GPUs: BSHD layouts with cuDNN ≥ 9.23 and THD layouts with cuDNN ≥ 9.25. The C++ backend gate in
Confidence Score: 5/5Safe to merge once the developer is satisfied with THD readiness — the C++ gate already requires cuDNN ≥ 9.25 for THD, so production callers with older stacks will not reach the new kernel. The functional changes are narrowly scoped to the backend-selection gate and two forward-pass tensor preparation fixes; all have correct version and architecture guards. The test additions are conditional and fall back gracefully. The two observations flagged are test coverage gaps that do not affect runtime correctness. Files Needing Attention: The test coverage gap in Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["nvte_get_fused_attn_backend\nD=256 bprop path"] --> B{SM arch\n100 to 109?}
B -- No --> Z["NVTE_No_Backend\nfalls back to\nunfused attn"]
B -- Yes --> C{THD layout?}
C -- Yes --> D{cuDNN ge 9.25?}
C -- No --> E{cuDNN ge 9.23?}
D -- No --> Z
E -- No --> Z
D -- Yes --> F
E -- Yes --> F{NO_BIAS and\nno dropout and\nVANILLA_SOFTMAX?}
F -- No --> Z
F -- Yes --> G{full-window or\ncausal SWA only?}
G -- No --> Z
G -- Yes --> H["NVTE_F16_arbitrary_seqlen\ncuDNN D=256 BWD kernel"]
style H fill:#22c55e,color:#fff
style Z fill:#ef4444,color:#fff
Reviews (23): Last reviewed commit: "Use is_training in DPA test helper" | Re-trigger Greptile |
e317f99 to
e08e9e8
Compare
5063b39 to
55f3bb4
Compare
|
Latest testing: Pipeline [56553160] |
a678b84 to
ba0cb94
Compare
|
/te-ci L2 |
88217fd to
06eee35
Compare
|
Latest testing: Pipeline [58978691] |
| ), | ||
| ), | ||
| ], | ||
| ) |
There was a problem hiding this comment.
No problem with the "id", but it seems inconsistent with other PyTorch tests. Also, please check the 9.30 vs 9.25 version guard.
There was a problem hiding this comment.
Could you remove the 'id' fields actually - they just look really odd sitting next to other tests with no 'id's. :D
| "cp_hd256_causal": ModelConfig(2, 1024, 16, 256, attn_mask_type="causal"), | ||
| "cp_hd256_causal_swa": ModelConfig( | ||
| 2, 1024, 16, 256, attn_mask_type="causal", window_size=(128, 0) | ||
| ), |
There was a problem hiding this comment.
Should we test no_mask, padding_causal as well, or not really?
There was a problem hiding this comment.
I think it's okay to not test those two, if you are fine with it ?
The non-CP tests cover no_mask and I believe THD CP anyways translates to padding_causal under the hood, so I decided to keep this lightweight.
da25221 to
e3032d3
Compare
078c80f to
9921b99
Compare
|
Latest testing: Pipeline 59713381 |
| ), | ||
| ], | ||
| ) | ||
| def test_dpa_fused_attn_d256(dtype, model_configs, model, qkv_layout): |
There was a problem hiding this comment.
I think we can remove the "fused_xx" keyword from model_configs_fused_d256, fused_d256_no_mask, and test_dpa_fused_attn_d256. Those tests will run both unfused/flash and fused for comparison. Maybe there's no need to restrict it to "fused". Essentially what we want to test here is d256.
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
…ersions Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
for more information, see https://pre-commit.ci
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
for more information, see https://pre-commit.ci
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
for more information, see https://pre-commit.ci
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
for more information, see https://pre-commit.ci
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
51bd332 to
72958ee
Compare
for more information, see https://pre-commit.ci
|
TL; DR: New pipeline passes all tests fully after latest pushed commits Details: _Added two focused FA4 fixes :
I also added a change that keeps the pre-existing FA4 hdim256 test forward-only, matching its prior effective coverage (in Latest PyT only pipeline launched (as changes were local to PyT only): #60370958 |
Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com>
…CC 10.x (#3056) * Refine the support for D=256 on Blackwell server type GPUs Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Add deterministic tests for D=256 for sm10.x Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Test clean up Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Add PyT side tests for D=256 cuDNN fused attn on SM100-110 Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Refine the PyT D=256 tests Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix the filtering condition for bias type for D=256 on sm10x for cudnn fused attn Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Code clean up Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Switching test check logic around Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Add THD xfail marked tests for testing Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Fix the jax test bias condition fo skipping for D=256 Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * nit: Fix comment Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Move the D=256 changes so as to follow an order of increasing cuDNN versions Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Add support for D=256 THD in TE Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Add TE JAX CP test support to verify D=256 for AG and Ring Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Add PyTorch D256 CP tests Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * nit: clean up comments Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Correct the atgs passed to test dpa Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Simplify THD fused attention layout check Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Rename PyTorch D256 fused attention tests Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Run JAX fused attention before softmax Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Relabel THD D256 cuDNN guard to 9.25 Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fold D256 PyTorch CP tests Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Rename D256 PyTorch attention tests Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Remove D256 PyTorch attention param ids Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Disable FA4 D256 SWA on SM100 Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * Fix FA4 D256 packed QKV handling Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Use is_training in DPA test helper Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> --------- Signed-off-by: Kshitij Lakhani <klakhani@nvidia.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Description
Support for D=256 BWD for Blackwell CC 10x via the C++ API (which TE uses) was added in cuDNN 9.23 + cuDNN FE 1.24 (BSHD) and cuDNN 9.25 + cuDNN FE 1.26 (THD)
Enabling this support in TE attention and adding conditional tests for the same
Type of change
Changes
Add guard when picking the backend (sub backend) in TE common.
Add tests for D=256 case in TE PyT and TE JAX
Checklist: