kernels-bot commited on
Commit
9d05c96
·
verified ·
1 Parent(s): b81254e

Uploaded using `kernel-builder`.

Browse files
README.md CHANGED
@@ -3,7 +3,7 @@ library_name: kernels
3
  license: mit
4
  ---
5
 
6
- This is the repository card of kernels-community/aiter-flash-attn that has been pushed on the Hub. It was built to be used with the [`kernels` library](https://github.com/huggingface/kernels). This card was automatically generated.
7
 
8
  ## How to use
9
 
@@ -11,7 +11,7 @@ This is the repository card of kernels-community/aiter-flash-attn that has been
11
  # make sure `kernels` is installed: `pip install -U kernels`
12
  from kernels import get_kernel
13
 
14
- kernel_module = get_kernel("kernels-community/aiter-flash-attn", version=2)
15
  flash_attn_func = kernel_module.flash_attn_func
16
 
17
  flash_attn_func(...)
 
3
  license: mit
4
  ---
5
 
6
+ This is the repository card of amd/aiter-flash-attn that has been pushed on the Hub. It was built to be used with the [`kernels` library](https://github.com/huggingface/kernels). This card was automatically generated.
7
 
8
  ## How to use
9
 
 
11
  # make sure `kernels` is installed: `pip install -U kernels`
12
  from kernels import get_kernel
13
 
14
+ kernel_module = get_kernel("amd/aiter-flash-attn", version=2)
15
  flash_attn_func = kernel_module.flash_attn_func
16
 
17
  flash_attn_func(...)
build/torch-rocm/_kernels/flash_attn_triton_amd/bwd.py CHANGED
@@ -16,7 +16,7 @@ from .utils import (
16
 
17
  PREPROCESS_AUTOTUNE_KEYS = [
18
  "max_seqlen_q",
19
- "ACTUAL_HEAD_DIM",
20
  "IS_VARLEN",
21
  ]
22
 
@@ -24,7 +24,8 @@ CAUSAL_AUTOTUNE_KEYS = [
24
  "dropout_p",
25
  "max_seqlen_q",
26
  "max_seqlen_k",
27
- "ACTUAL_HEAD_DIM",
 
28
  "IS_VARLEN",
29
  "HQ",
30
  "HK",
@@ -34,7 +35,8 @@ NONCAUSAL_AUTOTUNE_KEYS = [
34
  "dropout_p",
35
  "max_seqlen_q",
36
  "max_seqlen_k",
37
- "ACTUAL_HEAD_DIM",
 
38
  "IS_VARLEN",
39
  "HQ",
40
  "HK",
 
16
 
17
  PREPROCESS_AUTOTUNE_KEYS = [
18
  "max_seqlen_q",
19
+ "ACTUAL_HEAD_DIM_V",
20
  "IS_VARLEN",
21
  ]
22
 
 
24
  "dropout_p",
25
  "max_seqlen_q",
26
  "max_seqlen_k",
27
+ "ACTUAL_HEAD_DIM_QK",
28
+ "ACTUAL_HEAD_DIM_V",
29
  "IS_VARLEN",
30
  "HQ",
31
  "HK",
 
35
  "dropout_p",
36
  "max_seqlen_q",
37
  "max_seqlen_k",
38
+ "ACTUAL_HEAD_DIM_QK",
39
+ "ACTUAL_HEAD_DIM_V",
40
  "IS_VARLEN",
41
  "HQ",
42
  "HK",
build/torch-rocm/_ops.py CHANGED
@@ -25,7 +25,7 @@ def get_backend() -> str:
25
 
26
  def _find_ops_name() -> str:
27
  kernel_name = "aiter_flash_attn"
28
- unique_id = "fe2bb66"
29
  backend = get_backend()
30
  return f"_{kernel_name}_{backend}_{unique_id}"
31
 
 
25
 
26
  def _find_ops_name() -> str:
27
  kernel_name = "aiter_flash_attn"
28
+ unique_id = "28ece72"
29
  backend = get_backend()
30
  return f"_{kernel_name}_{backend}_{unique_id}"
31
 
build/torch-rocm/configs/gfx1201-MHA-DEFAULT.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fwd": {
3
+ "dropout_or_fp32": {
4
+ "BLOCK_M": 32,
5
+ "BLOCK_N": 32,
6
+ "PRELOAD_V": false,
7
+ "waves_per_eu": 1,
8
+ "num_warps": 2,
9
+ "num_ctas": 1,
10
+ "num_stages": 1
11
+ },
12
+ "default": {
13
+ "BLOCK_M": 64,
14
+ "BLOCK_N": 32,
15
+ "PRELOAD_V": false,
16
+ "waves_per_eu": 1,
17
+ "num_warps": 4,
18
+ "num_ctas": 1,
19
+ "num_stages": 2
20
+ },
21
+ "pe": {
22
+ "BLOCK_M": 256,
23
+ "BLOCK_N": 64,
24
+ "PRELOAD_V": true,
25
+ "waves_per_eu": 1,
26
+ "num_warps": 8,
27
+ "num_ctas": 1,
28
+ "num_stages": 1
29
+ },
30
+ "pe_dropout_or_fp32": {
31
+ "BLOCK_M": 256,
32
+ "BLOCK_N": 64,
33
+ "PRELOAD_V": true,
34
+ "waves_per_eu": 1,
35
+ "num_warps": 8,
36
+ "num_ctas": 1,
37
+ "num_stages": 1
38
+ }
39
+ },
40
+ "bkwd_fused" : {
41
+ "preprocess_kernel": {
42
+ "PRE_BLOCK": 128
43
+ },
44
+ "dkdvdq_kernel_N64" : {
45
+ "BLOCK_M": 16,
46
+ "BLOCK_N": 64,
47
+ "num_warps": 8,
48
+ "num_stages": 1,
49
+ "waves_per_eu": 2,
50
+ "BLK_SLICE_FACTOR": 1,
51
+ "matrix_instr_nonkdim": 16
52
+ },
53
+ "dkdvdq_kernel_N128" : {
54
+ "BLOCK_M": 16,
55
+ "BLOCK_N": 128,
56
+ "num_warps": 8,
57
+ "num_stages": 1,
58
+ "waves_per_eu": 2,
59
+ "BLK_SLICE_FACTOR": 1,
60
+ "matrix_instr_nonkdim": 16
61
+ }
62
+ },
63
+ "bkwd_onekernel" : {
64
+ "preprocess_kernel": {
65
+ "PRE_BLOCK": 128
66
+ },
67
+ "onekernel" : {
68
+ "BLOCK_M1": 32,
69
+ "BLOCK_N1": 128,
70
+ "BLOCK_M2": 128,
71
+ "BLOCK_N2": 32,
72
+ "BLK_SLICE_FACTOR": 2,
73
+ "waves_per_eu": 1,
74
+ "matrix_instr_nonkdim": 16,
75
+ "num_warps": 4,
76
+ "num_ctas": 1,
77
+ "num_stages": 1
78
+ },
79
+ "onekernel_pe" : {
80
+ "BLOCK_M1": 32,
81
+ "BLOCK_N1": 64,
82
+ "BLOCK_M2": 128,
83
+ "BLOCK_N2": 32,
84
+ "BLK_SLICE_FACTOR": 2,
85
+ "waves_per_eu": 0,
86
+ "matrix_instr_nonkdim": 16,
87
+ "num_warps": 4,
88
+ "num_ctas": 1,
89
+ "num_stages": 2
90
+ }
91
+ }
92
+ }
build/torch-rocm/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "aiter-flash-attn",
3
- "id": "_aiter_flash_attn_rocm_fe2bb66",
4
  "version": 2,
5
  "kernels-minver": "0.14.0",
6
  "license": "MIT",
@@ -15,7 +15,7 @@
15
  "__init__.py": "V8KdHVvK1+C2G2Ji5P8jHcFXRJcFb6I+OvrP0qHheD4=",
16
  "_kernels/__init__.py": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
17
  "_kernels/flash_attn_triton_amd/__init__.py": "j/n4XyqMKr0Xcl2QVHY+/ZRLW9CT46EsHblfZfZRW8E=",
18
- "_kernels/flash_attn_triton_amd/bwd.py": "DX8+Ad+qnlCxv5P56EznW/TW01uwORim3ZWT0g/n3ok=",
19
  "_kernels/flash_attn_triton_amd/common.py": "Za22tFtoBkGxRqpEBvIexRBlNsVdPxMeL8WnRD3ZRXw=",
20
  "_kernels/flash_attn_triton_amd/fwd_decode.py": "8F/WwZpTCyFdy6ITf0Pe+HzUxnI4UmXt3c53RT5p34w=",
21
  "_kernels/flash_attn_triton_amd/fwd_prefill.py": "G1InUnNUtHevT2YInshAlAiEEyloDTJQqqsWxsLMkX0=",
@@ -25,16 +25,17 @@
25
  "_kernels/mha.py": "aXpxPRtrBPAPc9MXFPIMhZnGYddcd1+MlfrtrOBaKWQ=",
26
  "_kernels/mha_fused_bwd.py": "eXvVWoS0ysazZttrPfoDA14hDcL9zcjlpwyLVbeVxeU=",
27
  "_kernels/mha_onekernel_bwd.py": "DOWu0L/MqMNwGpHoBlObMtcnx+txk7juFlPF3FZ8U4I=",
28
- "_ops.py": "PsT9QAAJ8peP0WeFSwUb//GFxu/jMT7h+anpaJnOjKw=",
29
  "configs/gfx1150-MHA-DEFAULT.json": "fY8XJia4+bo/qBUZhODLcWdN8ic+0n0ZUWmxAbcdxjk=",
30
  "configs/gfx1151-MHA-DEFAULT.json": "fY8XJia4+bo/qBUZhODLcWdN8ic+0n0ZUWmxAbcdxjk=",
 
31
  "configs/gfx1250-MHA-DEFAULT.json": "MC9NGs+jRZ0ppvwjszTaoc6YYMsaHKdXiP1K/cUZTSg=",
32
  "configs/gfx942-MHA-DEFAULT.json": "ERnzTFpq0PeXcT4/5sONe3/mSxWPvN+946vhnlMs6Wo=",
33
  "configs/gfx950-MHA-DEFAULT.json": "MC9NGs+jRZ0ppvwjszTaoc6YYMsaHKdXiP1K/cUZTSg=",
34
  "mha.py": "tdH71c+PZ0vWTC6N5C79i0BzcmdUz3s6f2JuRhrrDSM=",
35
  "mha_fused_bwd.py": "80rk+DlUC52j/c1hHym8xryXll/xGUtaYxn29YgCSRs=",
36
  "mha_onekernel_bwd.py": "OsmmrfXuYtr/dwyZkC0beRZ+UM59lOoDQBQH4knQrGg=",
37
- "symbols.json": "7UweiWWUtK8f0BxFcmh5IOHuk0yMvShLxE6UJGQT6RQ=",
38
  "utils/__init__.py": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
39
  "utils/_triton/__init__.py": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
40
  "utils/_triton/arch_info.py": "D6l6BbeGTMMp48tMcti9Q2mLFsXBnbwoYeoMVyGyy6w=",
@@ -50,11 +51,11 @@
50
  "provenance": {
51
  "kernel-builder": {
52
  "version": "0.18.0-dev0",
53
- "commit": "d054906a13710b811b96697b4635f03020842733",
54
  "dirty": false
55
  },
56
  "kernel": {
57
- "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
58
  "dirty": false
59
  }
60
  }
 
1
  {
2
  "name": "aiter-flash-attn",
3
+ "id": "_aiter_flash_attn_rocm_28ece72",
4
  "version": 2,
5
  "kernels-minver": "0.14.0",
6
  "license": "MIT",
 
15
  "__init__.py": "V8KdHVvK1+C2G2Ji5P8jHcFXRJcFb6I+OvrP0qHheD4=",
16
  "_kernels/__init__.py": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
17
  "_kernels/flash_attn_triton_amd/__init__.py": "j/n4XyqMKr0Xcl2QVHY+/ZRLW9CT46EsHblfZfZRW8E=",
18
+ "_kernels/flash_attn_triton_amd/bwd.py": "lGsltjiLtKO4vRMUmv5IzUWw2CPi+uG7AfTKVuGqI3w=",
19
  "_kernels/flash_attn_triton_amd/common.py": "Za22tFtoBkGxRqpEBvIexRBlNsVdPxMeL8WnRD3ZRXw=",
20
  "_kernels/flash_attn_triton_amd/fwd_decode.py": "8F/WwZpTCyFdy6ITf0Pe+HzUxnI4UmXt3c53RT5p34w=",
21
  "_kernels/flash_attn_triton_amd/fwd_prefill.py": "G1InUnNUtHevT2YInshAlAiEEyloDTJQqqsWxsLMkX0=",
 
25
  "_kernels/mha.py": "aXpxPRtrBPAPc9MXFPIMhZnGYddcd1+MlfrtrOBaKWQ=",
26
  "_kernels/mha_fused_bwd.py": "eXvVWoS0ysazZttrPfoDA14hDcL9zcjlpwyLVbeVxeU=",
27
  "_kernels/mha_onekernel_bwd.py": "DOWu0L/MqMNwGpHoBlObMtcnx+txk7juFlPF3FZ8U4I=",
28
+ "_ops.py": "87pQRA8Sjp0kwF9VUEzPFO5I3OYcXObxLgmMMal0uxs=",
29
  "configs/gfx1150-MHA-DEFAULT.json": "fY8XJia4+bo/qBUZhODLcWdN8ic+0n0ZUWmxAbcdxjk=",
30
  "configs/gfx1151-MHA-DEFAULT.json": "fY8XJia4+bo/qBUZhODLcWdN8ic+0n0ZUWmxAbcdxjk=",
31
+ "configs/gfx1201-MHA-DEFAULT.json": "fY8XJia4+bo/qBUZhODLcWdN8ic+0n0ZUWmxAbcdxjk=",
32
  "configs/gfx1250-MHA-DEFAULT.json": "MC9NGs+jRZ0ppvwjszTaoc6YYMsaHKdXiP1K/cUZTSg=",
33
  "configs/gfx942-MHA-DEFAULT.json": "ERnzTFpq0PeXcT4/5sONe3/mSxWPvN+946vhnlMs6Wo=",
34
  "configs/gfx950-MHA-DEFAULT.json": "MC9NGs+jRZ0ppvwjszTaoc6YYMsaHKdXiP1K/cUZTSg=",
35
  "mha.py": "tdH71c+PZ0vWTC6N5C79i0BzcmdUz3s6f2JuRhrrDSM=",
36
  "mha_fused_bwd.py": "80rk+DlUC52j/c1hHym8xryXll/xGUtaYxn29YgCSRs=",
37
  "mha_onekernel_bwd.py": "OsmmrfXuYtr/dwyZkC0beRZ+UM59lOoDQBQH4knQrGg=",
38
+ "symbols.json": "+7FpkGvOQDqKASMvzUr/3A5E2RDkYtO4PYR7jHuAnZ4=",
39
  "utils/__init__.py": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
40
  "utils/_triton/__init__.py": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
41
  "utils/_triton/arch_info.py": "D6l6BbeGTMMp48tMcti9Q2mLFsXBnbwoYeoMVyGyy6w=",
 
51
  "provenance": {
52
  "kernel-builder": {
53
  "version": "0.18.0-dev0",
54
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
55
  "dirty": false
56
  },
57
  "kernel": {
58
+ "commit": "28ece728d3e7d8487ffa2fd6e3858acf4eea738a",
59
  "dirty": false
60
  }
61
  }
build/torch-rocm/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHLjCCBrOgAwIBAgIUJWsyFXgtGTum1jCoM+qwyeLFZfowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTA0ODM3WhcNMjYxMDE5MTA1ODM3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiF/IG2aUt17JyYcVltdxxj2/MKFOUqp/4VPhae+URdfx0jbACaiPr5y51PNJbXr3KJzu8cdECO/eGLRkbXgFQqOCBdIwggXOMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTUxNTg0Ni9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhU8cRkwAABAMASDBGAiEAhPiJtXTbgwZ3kTPB2XYt/4GObIBvmpfa/DoepXzTMv8CIQCCy+kUKXY7nj73wwZCV/Hcu8pxw4cy+Nbuno3H6Wha3zAKBggqhkjOPQQDAwNpADBmAjEAjqse6SOc76I43umXU189z4/baQrArLtgHO4AvEKBDis85c/28ILrcjtY0mO1f5ryAjEA00Lm/xEIIzm062ov2uftDANARz0lfxUD7oLzBdu2i3fqRFDjcrduz7X496upjPjk"}, "tlogEntries":[{"logIndex":"3320074406", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1792406917", "inclusionPromise":{"signedEntryTimestamp":"MEUCIDfSrH0FRCsIC+joyQutYYyw9s4lUlv58BgbC/29c86PAiEAssx8dbswJJogyvdVslajKx6nqSbRS3wqs6kEkzejde0="}, "inclusionProof":{"logIndex":"3198170144", "rootHash":"Vha5rq1D9Jz6Xv8FOOFyhNT3vcCh/AqExWrCe4FBieQ=", "treeSize":"3198170146", "hashes":["Matvyag7DH2WGQ6WFMMlv/9vuXy4hobd/skKibGSOb0=", "0di0ysUN2b+Bzh4Y77CvYDauBByrlZY8Vw+YYPgTCDw=", "t+bF13oghnNWhvEPGWuJ3GSrAemcb6NyXdUgMQmd0nw=", "mYRxiYQkcP1L/Cwy4/s9+bVzbz3agcsV0/KsBJ6KeSc=", "XlZq0Tam0QY4z03gfNKdAZXwc+5eKuOO3j+1aAzrwW8=", "uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=", "nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=", "G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=", "qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=", "gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=", "NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198170146\nVha5rq1D9Jz6Xv8FOOFyhNT3vcCh/AqExWrCe4FBieQ=\n\n— rekor.sigstore.dev wNI9ajBFAiEAoJot0hekMaCkao8YZTH/fGZ9z4RpLSCu4iFhzCXfmjYCIFrSY1zqqw39mhAHU7350rQkeBnDXG3dBXX9QtFZ23gw\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiMjc4MzQxZDAzMmU0MmFiZTBkNmJhNWM2MjdlYzY3OWZhYTgxZDNjMGFhMzEwN2VhNTliYmU0MjE4MzAxZDk0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR3cxOGxaTmc2VzhadStDeCtiakpsWE5wbW0reTk4NXRlazhZL21nY3VqS0FpQnRWa0hvUExFRllFb1YwdVVNV0liT3RCYzg4bU5aSnp6UlBuWkhoMGxrY1E9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1ha05EUW5KUFowRjNTVUpCWjBsVlNsZHplVVpZWjNSSFZIVnRNV3BEYjAwcmNYZDVaVXhHV21admQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFRXdUMFJOTTFkb1kwNU5hbGw0VFVSRk5VMVVRVEZQUkUwelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZwUmk5SlJ6SmhWWFF4TjBwNVdXTldiSFJrZUhocU1pOU5TMFpQVlhGd0x6UldVR2dLWVdVclZWSmtabmd3YW1KQlEyRnBVSEkxZVRVeFVFNUtZbGh5TTB0S2VuVTRZMlJGUTA4dlpVZE1VbXRpV0dkR1VYRlBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVVlhoT1ZHY3dUbWs1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVlRoalVtdDNRVUZDUVUxQlUwUkNSMEZwUlVGb1VHbEtkRmhVWW1kM1dqTnJWRkJDTWxoWmRDODBSMDlpU1VKMmJYQm1ZUW92Ukc5bGNGaDZWRTEyT0VOSlVVTkRlU3RyVlV0WVdUZHVhamN6ZDNkYVExWXZTR04xT0hCNGR6UmplU3RPWW5WdWJ6TklObGRvWVRONlFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2NFRkVRbTFCYWtWQmFuRnpaVFpUVDJNM05razBNM1Z0V0ZVeE9EbDZOQzlpWVZGeVFYSk1kR2RJVHpSQmRrVkxRa1JwY3pnS05XTXZNamhKVEhKamFuUlpNRzFQTVdZMWNubEJha1ZCTURCTWJTOTRSVWxKZW0wd05qSnZkakoxWm5SRVFVNUJVbm93YkdaNFZVUTNiMHg2UW1SMU1ncHBNMlp4VWtaRWFtTnlaSFY2TjFnME9UWjFjR3BRYW1zS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgKtKAo/mMLupVMIYsI96/u7Lz+3xTEuLJa6p6OqQ+vxsCFQDHTmw6DC3/Xua1KtiUttY21Wc1exgPMjAyNjEwMTkxMDQ4MzdaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTEwNDgzN1owLwYJKoZIhvcNAQkEMSIEIFDWIZN/RpbymUHmwzM1GKiQmOuihYAPeMR404MNuVmsMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMA2sgm9HGEHaYW3uNdV4ix9n3Yc9t0lVd/wml/ucfkvgXI+9Lc0W6Q/eQR6TKhvrmAIwOaRvYsGfyNZn79DsGX+lVvJd4MrFAxasncGhXer6cM1nL+XkE8LRECiGkc4f+W/9"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"sng0HQMuQqvg1rpcYn7GefqoHTwKoxB+pZu+QhgwHZQ="}, "signature":"MEQCIGw18lZNg6W8Zu+Cx+bjJlXNpmm+y985tek8Y/mgcujKAiBtVkHoPLEFYEoV0uUMWIbOtBc88mNZJzzRPnZHh0lkcQ=="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"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"}, "tlogEntries":[{"logIndex":"3638581432", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1793619156", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQDIK0KbAmOlqZQrGt6r5zM25G0shGNFnLE1n9ksYKdNqAIhAPLQ92sBlIPR7X7oJA6RI2i5PMmg/4Da8HSo6GbuSW7T"}, "inclusionProof":{"logIndex":"3516677170", "rootHash":"JtGruGaJvwlxy0lB0synSgJb7LQ7BRNHTq4uijKJFVQ=", "treeSize":"3516677174", "hashes":["WAWuR/+yi3BJlSrpfygwAml7MqCV0oaqOWHXcdMJYxk=", "V6DOTfXbofel3y5m/HNqk1KNa0fsyvT18Z1Sci8dM54=", "bElvhMtgMtwJChE29kyN+yXwycCzcogcl7Tt4111dRI=", "glSIVzOyY8aMeNQMCOE4g9HDoHpv3TpIqfBZFhtKMsk=", "qfUDFEgyzLwzMlaYEzRO8YdDhXZPsJC153k5l8JZF+s=", "KHwJ1ch9atqbrDxGHAObiistbrt4VCvORNAYMNJ09C0=", "BFb7pNRFfhI8YmKAPxws+1yytMtobnE5A8q+qDUt6Y4=", "gRSBsVU0qluQ+oII/dFJwtjvv1oikpH7QmW0XnKGDpc=", "BoylumL0+mc1UAwcEPwrkTDVmK2cReUm+0yyRVhvohY=", "5fomOCw8ZOzVAOeT4Pt/XRoo4ESkxgvnEolWxtHfuzc=", "V7ifadlaqnTlbL36KI5czSPIBpu5VMtH9MyHxr8m8+w=", "cxOigdDyuoqMFc3dViAq5CqqxOls/WYXDKjkWAIf9Oo=", "kHcUORrepRYa69fXW0ah2TY6yxBlBHQa6jPoxpZbXoI=", "qixS5QEJ+sBY3AUsB2OWXXTOKVDsuCOaBzoGk4J7R3A=", "SlixnS34BhAO+yRI2FaGPSOh9V6JSVNPfLl1bHxrcQY=", "1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3516677174\nJtGruGaJvwlxy0lB0synSgJb7LQ7BRNHTq4uijKJFVQ=\n\n— rekor.sigstore.dev wNI9ajBEAiB9AoqiyyXtN96p3S1duc4ANj/de0ypL1Pi4gae0rIDpgIgBsycRvzz6CnRs/lYfzNUQH+gLpxlkYT5TYk7WoeLMeM=\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2N2JkZWUxZjFjZjc0MjUyOTI1MjgzMTBiZDMzMzFlMTM0YmVhOWVhZmRmOGFhMTY5MjNmNTg0Y2YzNTYwNWU3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNxNDAwdm9KVHNSZXBwaTdXcGpZQjlmdE9EZWhOcHBPbTRzay9PYlQzbFZRSWhBTDhOQlJEM1p0MDRocUN3UjVGdGF4bXMwSVVnNkZGVGhhc3VaaFExVndYViIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVlRXeDNha1JRWVUxU2NFOXNNM1ZXWkZOb0x6WmFZek0zVFZJNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFVUVhsTlZFVjZUV3BOTVZkb1kwNU5hbGw0VFZSQmVVMVVSVEJOYWsweFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZWTVZkNVJVUmtUelJwU0dsQ2QxSlNRV1ZFTkM5clRXZ3dWemRZVlZkSGIxSTVOMllLUzBzelZFeFBZbE5TYUVsaGMyNVVaRzFhVm0weFJYZ3JaRzFNVWxWeWIwWm9UR2xtU0ZKSmRGZHJRVkZWYVhaVFdFdFBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmQ1VDBkV2FncGFWR041VDBkUmVscFVaR3RQUkZFMFRqSmFiVmxVU20xYVJGcHNUWHBuTVU5SFJtcGFhbEpzV2xkRk0wMTZhR2hOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWjNsUFIxWnFXbFJqZVU5SFVYcGFWR1JyQ2s5RVVUUk9NbHB0V1ZSS2JWcEVXbXhOZW1jeFQwZEdhbHBxVW14YVYwVXpUWHBvYUUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWjNsUFIxWnFDbHBVWTNsUFIxRjZXbFJrYTA5RVVUUk9NbHB0V1ZSS2JWcEVXbXhOZW1jeFQwZEdhbHBxVW14YVYwVXpUWHBvYUUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOYW1oc1dUSlZNMDFxYUd0Tk1sVXpXa1JuTUU5RVpHMWFiVVY1V20xUk1scFVUVFJPVkdob1dUSlpNRnBYVm1nS1RucE5ORmxVUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRnd1RWUlJlazU2UVhwT1ZGRjZUWGs1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvYmtGb1lqRlJRVUZDUVUxQlVucENSa0ZwUVhWV2JYVnFSbkpNTW5kVVdrWk1UVEpCUkc1UVRsbFlaa1JZZFdweWFXTkJUd295V2tOMEwydFpTVWQzU1doQlNYVnBhMVF5VUZsek1ucFhObFYxZURKMFNETjJhR1pJTjB4ME9XRnpkbk5WV2tWWlFXOHZUMFJ2UjAxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUVdoNmVHWlJSWFp5VGpKTmFtSmpTRWh2Y1c5Q1kwdHpVVzAxT0dsdmIyNXZNM3BLUml0TlZYcHJXVXR4V0hjS1pqaEtaUzk1YmtoUlpHNDRhRkJsV1hOQlNYZEJXVzl0VVRCdmVFcEtXR1pHTkUxblMwOUxLMGs0S3pSVFVWa3plR2R3YTJOcE56Rm9hRGd3TTBwRlJBcE5iMEpqTURONFpqQlJiMDVtWW04MFdWSm9jZ290TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgqd2MUPI8xnlORm/aRe/WDbcUfsuGFroPTeWc6Bs1a8ECFQC1ZPlmljkQCg4CSOG+v0odzSgdbxgPMjAyNjExMDIxMTMyMzZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTEwMjExMzIzNlowLwYJKoZIhvcNAQkEMSIEIH9mUjAfd5zEW6D8MB+sCL3UJb4kznvcUzg+KQ23dZ/rMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMEI8ZxfS+zJdXSEoQR9LRAyrR9y6JsQwj6izMewOAGPPTKuishqxDNuJC+NfSrvKbgIwIhngq2u5nJRYvQkLXaIs1ZgQvhWvka9QshKKY2MNzoGFzuHmFYzoY1VE2bauc+Es"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"Z73uHxz3QlKSUoMQvTMx4TS+qer9+KoWkj9YTPNWBec="}, "signature":"MEYCIQCq400voJTsReppi7WpjYB9ftODehNppOm4sk/ObT3lVQIhAL8NBRD3Zt04hqCwR5Ftaxms0IUg6FFThasuZhQ1VwXV"}}
build/torch-rocm/symbols.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "module": "_aiter_flash_attn_rocm_fe2bb66",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
- "module": "_aiter_flash_attn_rocm_fe2bb66.mha",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim_q).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n bias: (seqlen_q, seqlen_k)\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\n s_aux: (nheads,), attention sink scores (one per Q head), or None\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
@@ -101,7 +101,7 @@
101
  {
102
  "name": "flash_attn_varlen_func",
103
  "qualname": "flash_attn_varlen_func",
104
- "module": "_aiter_flash_attn_rocm_fe2bb66.mha",
105
  "kind": "function",
106
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n bias: (seqlen_q, seqlen_k)\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\n s_aux: (nheads,), attention sink scores (one per Q head), or None\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
107
  "signature": {
@@ -233,7 +233,7 @@
233
  {
234
  "name": "flash_attn_with_kvcache",
235
  "qualname": "flash_attn_with_kvcache",
236
- "module": "_aiter_flash_attn_rocm_fe2bb66.mha",
237
  "kind": "function",
238
  "doc": "This mirrors the public flash_attn v2 interface for KV cache using the AMD Triton backend.\n\nArgs:\n q: (batch, seqlen_q, nheads_q, headdim)\n k_cache / v_cache: Either contiguous (batch, seqlen_cache, nheads_k, headdim) or paged\n (num_blocks, page_block_size, nheads_k, headdim) when block_table provided.\n k, v: Optional incremental tokens to append in-place (appended logically after existing cache).\n cache_seqlens: int or (batch,) current valid lengths per batch entry.\n softmax_scale: Optional override; defaults to 1/sqrt(headdim).\n causal: Apply causal masking.\n window_size: (left, right) local attention window; (-1,-1) = full.\n softcap: (float) currently must be 0.0 (backend limitation).\n num_splits: 0 or 1 only (backend limitation >1).\n rotary_cos/rotary_sin: Optional rotary embeddings (applied if provided) - interleaving flag unused here.\n cache_batch_idx/cache_leftpad: Optional indexing / left padding metadata.\n block_table: Optional paging table mapping logical blocks for paged KV cache.\n alibi_slopes: (nheads,) or (batch,nheads) bias slopes (currently ignored if provided - placeholder).\n rotary_interleaved: Flag kept for parity (currently forwarded as True constant to backend which ignores it).\n return_softmax_lse: If True returns (out, lse) else out.\n\nReturns:\n out (and optionally softmax_lse): (batch, seqlen_q, nheads_q, headdim)",
239
  "signature": {
@@ -359,7 +359,7 @@
359
  {
360
  "name": "mha_set_impl",
361
  "qualname": "mha_set_impl",
362
- "module": "_aiter_flash_attn_rocm_fe2bb66.mha",
363
  "kind": "function",
364
  "doc": "Set MHA forward implementation: 'default' (_attn_fwd) or 'dao_ai' (flash_attn_triton_amd).",
365
  "signature": {
@@ -377,7 +377,7 @@
377
  {
378
  "name": "mha_set_use_fused_bwd_kernel",
379
  "qualname": "mha_set_use_fused_bwd_kernel",
380
- "module": "_aiter_flash_attn_rocm_fe2bb66.mha",
381
  "kind": "function",
382
  "doc": "Set whether to use fused backward kernel (with atomics) or one-kernel backward (without atomics).\nFused backward is faster but doesn't support positional encoding.",
383
  "signature": {
@@ -395,7 +395,7 @@
395
  {
396
  "name": "mha_set_use_int64_strides",
397
  "qualname": "mha_set_use_int64_strides",
398
- "module": "_aiter_flash_attn_rocm_fe2bb66.mha",
399
  "kind": "function",
400
  "doc": "Use 64-bit integer strides to prevent integer overflows with very large tensors.",
401
  "signature": {
 
1
  {
2
  "schema_version": 1,
3
+ "module": "_aiter_flash_attn_rocm_28ece72",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
+ "module": "_aiter_flash_attn_rocm_28ece72.mha",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim_q).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n bias: (seqlen_q, seqlen_k)\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\n s_aux: (nheads,), attention sink scores (one per Q head), or None\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
 
101
  {
102
  "name": "flash_attn_varlen_func",
103
  "qualname": "flash_attn_varlen_func",
104
+ "module": "_aiter_flash_attn_rocm_28ece72.mha",
105
  "kind": "function",
106
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n bias: (seqlen_q, seqlen_k)\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\n s_aux: (nheads,), attention sink scores (one per Q head), or None\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
107
  "signature": {
 
233
  {
234
  "name": "flash_attn_with_kvcache",
235
  "qualname": "flash_attn_with_kvcache",
236
+ "module": "_aiter_flash_attn_rocm_28ece72.mha",
237
  "kind": "function",
238
  "doc": "This mirrors the public flash_attn v2 interface for KV cache using the AMD Triton backend.\n\nArgs:\n q: (batch, seqlen_q, nheads_q, headdim)\n k_cache / v_cache: Either contiguous (batch, seqlen_cache, nheads_k, headdim) or paged\n (num_blocks, page_block_size, nheads_k, headdim) when block_table provided.\n k, v: Optional incremental tokens to append in-place (appended logically after existing cache).\n cache_seqlens: int or (batch,) current valid lengths per batch entry.\n softmax_scale: Optional override; defaults to 1/sqrt(headdim).\n causal: Apply causal masking.\n window_size: (left, right) local attention window; (-1,-1) = full.\n softcap: (float) currently must be 0.0 (backend limitation).\n num_splits: 0 or 1 only (backend limitation >1).\n rotary_cos/rotary_sin: Optional rotary embeddings (applied if provided) - interleaving flag unused here.\n cache_batch_idx/cache_leftpad: Optional indexing / left padding metadata.\n block_table: Optional paging table mapping logical blocks for paged KV cache.\n alibi_slopes: (nheads,) or (batch,nheads) bias slopes (currently ignored if provided - placeholder).\n rotary_interleaved: Flag kept for parity (currently forwarded as True constant to backend which ignores it).\n return_softmax_lse: If True returns (out, lse) else out.\n\nReturns:\n out (and optionally softmax_lse): (batch, seqlen_q, nheads_q, headdim)",
239
  "signature": {
 
359
  {
360
  "name": "mha_set_impl",
361
  "qualname": "mha_set_impl",
362
+ "module": "_aiter_flash_attn_rocm_28ece72.mha",
363
  "kind": "function",
364
  "doc": "Set MHA forward implementation: 'default' (_attn_fwd) or 'dao_ai' (flash_attn_triton_amd).",
365
  "signature": {
 
377
  {
378
  "name": "mha_set_use_fused_bwd_kernel",
379
  "qualname": "mha_set_use_fused_bwd_kernel",
380
+ "module": "_aiter_flash_attn_rocm_28ece72.mha",
381
  "kind": "function",
382
  "doc": "Set whether to use fused backward kernel (with atomics) or one-kernel backward (without atomics).\nFused backward is faster but doesn't support positional encoding.",
383
  "signature": {
 
395
  {
396
  "name": "mha_set_use_int64_strides",
397
  "qualname": "mha_set_use_int64_strides",
398
+ "module": "_aiter_flash_attn_rocm_28ece72.mha",
399
  "kind": "function",
400
  "doc": "Use 64-bit integer strides to prevent integer overflows with very large tensors.",
401
  "signature": {