kernels-bot commited on
Commit
7b644ba
·
verified ·
1 Parent(s): 6514174

Uploaded using `kernel-builder`.

Browse files
build/torch-cuda/_ops.py CHANGED
@@ -28,7 +28,7 @@ def get_backend() -> str:
28
 
29
  def _find_ops_name() -> str:
30
  kernel_name = "fla"
31
- unique_id = "89d4054"
32
  backend = get_backend()
33
  return f"_{kernel_name}_{backend}_{unique_id}"
34
 
 
28
 
29
  def _find_ops_name() -> str:
30
  kernel_name = "fla"
31
+ unique_id = "5162251"
32
  backend = get_backend()
33
  return f"_{kernel_name}_{backend}_{unique_id}"
34
 
build/torch-cuda/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "fla",
3
- "id": "_fla_cuda_89d4054",
4
  "version": 1,
5
  "kernels-minver": "0.14.0",
6
  "license": "MIT",
@@ -15,7 +15,7 @@
15
  "algorithm": "sha256",
16
  "files": {
17
  "__init__.py": "bVRNYUhThvULeUaovvQFZCJ9IZZsC+0kU/HbnXdYT1A=",
18
- "_ops.py": "Zwgl5FVMDTYfX+4oETCxmU0YRSm1YhXLriPkjFHHb2A=",
19
  "layers.py": "/39XVQW4d4GHeNROqT67ujKbItdteLBtm0PT6zq41YQ=",
20
  "modules/__init__.py": "6ZjjRMt6Rf+2OegXDC8w58RD1IW3SBK+dxBoZa4Uohc=",
21
  "modules/activations.py": "Lp7xLUf7r785nt93NFhqoSQM+G7AK2e6kviE2/0TRJs=",
@@ -87,11 +87,11 @@
87
  "ops/common/backends/tilelang/chunk_bwd.py": "5zXyBzqIXRgoZdZ8zjLNEIz3jBksHpaVxnqUk66ckjQ=",
88
  "ops/common/backends/tilelang/parallel_attn_bwd.py": "4OlC0Vj9N1auoz9ZCUeOcBt8QSg4eTByDUnc9BPpZ7k=",
89
  "ops/common/backends/tilelang/parallel_attn_fwd.py": "7INMyGs1d3H8BKcjRnMvu/NHMm9VeNFTETR5z7ZO15c=",
90
- "ops/common/chunk_delta_h.py": "RvwbMKgbr6O8HVWzPRSJ0B90gjpJKkxTqoRuxOKa/fU=",
91
  "ops/common/chunk_h.py": "imyz71p9AD6nOtStpN+zzgE0yVbGnq4DO3FitrO3hvc=",
92
  "ops/common/chunk_h_parallel.py": "YGNR5a+eC7UShlVAvQF3fSLK+HXoP2Nc06H3p/PyzVg=",
93
  "ops/common/chunk_h_split.py": "zYoWf1Li3Q7MFPusp5BRf1F+OuGzxxTeiZ3hdunYnCY=",
94
- "ops/common/chunk_o.py": "14g/dwOOarecHQQbiQ0msu7e+hL4NdqSd2HPPrgGHoM=",
95
  "ops/common/chunk_scaled_dot_kkt.py": "MyoKTPKUUZlOzdC4FdP4etL6pPBGzaNL5DJQyH3603E=",
96
  "ops/common/fused_chunk.py": "nKIxBC8UD00KuY7WGFysC8P4ELNLEJhHmT60VcqyHbc=",
97
  "ops/common/fused_recurrent.py": "RnQdVD59iOcRa8sSK4XcQT59RhZJr42YplDaQrDt97o=",
@@ -125,11 +125,11 @@
125
  "ops/gated_delta_product/naive.py": "Q907vtcavFpalFlttThkWSb/SaTa4vqAG+I/nWvKDno=",
126
  "ops/gated_delta_rule/__init__.py": "Xt0hhHr3CECyZDmBIZakdufk3bvvIa/V/iBmpkYwpnw=",
127
  "ops/gated_delta_rule/chunk.py": "DFEZWmp016p+65pnDynAMVOY+NsUTGOfVcXsAhQr1i4=",
128
- "ops/gated_delta_rule/chunk_fwd.py": "DisrNyeiIB6SxcYZn5jsUnrbmkLzVbcqQubFI14qLsY=",
129
  "ops/gated_delta_rule/fused_recurrent.py": "M7x3/U1Xnf5mndUc+lvGpzxu4KDNc2Sfevv+RVZZFNk=",
130
  "ops/gated_delta_rule/gate.py": "H9JLPKjgZmorhyV+1IJFSMIa6x9admDn+EXXlwg167g=",
131
  "ops/gated_delta_rule/naive.py": "0c8XmSNJ/T6Ur5mbIuPTqBvkotGIHOW3CjRXJXFm4Ms=",
132
- "ops/gated_delta_rule/wy_fast.py": "ufSeCLwEQxwRS4pYiiNsIeXN3A6sLKgLdu1Fy/gkXoM=",
133
  "ops/gated_oja_rule/__init__.py": "oShC/cL0jMy+xWR7YBV9QxkAdxt1xasXDCypGAU6Hgo=",
134
  "ops/gated_oja_rule/chunk.py": "lq+5BXEaJLfL4dqqcJb4TmtyF9OrP9Wh+JpRfpdzd2s=",
135
  "ops/gated_oja_rule/chunk_h.py": "kr6KBcPbFRrIQFBoQjmt1wsyvO1pyLeGW5v/k+NI87Q=",
@@ -312,7 +312,7 @@
312
  "dirty": false
313
  },
314
  "kernel": {
315
- "commit": "89d4054f3755039d5474cfed03f06de026ee2ce7",
316
  "dirty": false
317
  }
318
  }
 
1
  {
2
  "name": "fla",
3
+ "id": "_fla_cuda_5162251",
4
  "version": 1,
5
  "kernels-minver": "0.14.0",
6
  "license": "MIT",
 
15
  "algorithm": "sha256",
16
  "files": {
17
  "__init__.py": "bVRNYUhThvULeUaovvQFZCJ9IZZsC+0kU/HbnXdYT1A=",
18
+ "_ops.py": "We4E5voCRwsORI7w045Qn7sM/YCixIMpgi4VN6yKmxA=",
19
  "layers.py": "/39XVQW4d4GHeNROqT67ujKbItdteLBtm0PT6zq41YQ=",
20
  "modules/__init__.py": "6ZjjRMt6Rf+2OegXDC8w58RD1IW3SBK+dxBoZa4Uohc=",
21
  "modules/activations.py": "Lp7xLUf7r785nt93NFhqoSQM+G7AK2e6kviE2/0TRJs=",
 
87
  "ops/common/backends/tilelang/chunk_bwd.py": "5zXyBzqIXRgoZdZ8zjLNEIz3jBksHpaVxnqUk66ckjQ=",
88
  "ops/common/backends/tilelang/parallel_attn_bwd.py": "4OlC0Vj9N1auoz9ZCUeOcBt8QSg4eTByDUnc9BPpZ7k=",
89
  "ops/common/backends/tilelang/parallel_attn_fwd.py": "7INMyGs1d3H8BKcjRnMvu/NHMm9VeNFTETR5z7ZO15c=",
90
+ "ops/common/chunk_delta_h.py": "QmkSsbbyOHai9cVaMB8O/8ep4NxiM6ieUVKmja6USw8=",
91
  "ops/common/chunk_h.py": "imyz71p9AD6nOtStpN+zzgE0yVbGnq4DO3FitrO3hvc=",
92
  "ops/common/chunk_h_parallel.py": "YGNR5a+eC7UShlVAvQF3fSLK+HXoP2Nc06H3p/PyzVg=",
93
  "ops/common/chunk_h_split.py": "zYoWf1Li3Q7MFPusp5BRf1F+OuGzxxTeiZ3hdunYnCY=",
94
+ "ops/common/chunk_o.py": "1yUHQ+B2J1PQpxTFEa8R6JxpyV1k/TNXiXkOvFRfQAo=",
95
  "ops/common/chunk_scaled_dot_kkt.py": "MyoKTPKUUZlOzdC4FdP4etL6pPBGzaNL5DJQyH3603E=",
96
  "ops/common/fused_chunk.py": "nKIxBC8UD00KuY7WGFysC8P4ELNLEJhHmT60VcqyHbc=",
97
  "ops/common/fused_recurrent.py": "RnQdVD59iOcRa8sSK4XcQT59RhZJr42YplDaQrDt97o=",
 
125
  "ops/gated_delta_product/naive.py": "Q907vtcavFpalFlttThkWSb/SaTa4vqAG+I/nWvKDno=",
126
  "ops/gated_delta_rule/__init__.py": "Xt0hhHr3CECyZDmBIZakdufk3bvvIa/V/iBmpkYwpnw=",
127
  "ops/gated_delta_rule/chunk.py": "DFEZWmp016p+65pnDynAMVOY+NsUTGOfVcXsAhQr1i4=",
128
+ "ops/gated_delta_rule/chunk_fwd.py": "NCMKqzu9uM2yAGhvVqENRtoVLwoxVo/KaVChkvIJIDE=",
129
  "ops/gated_delta_rule/fused_recurrent.py": "M7x3/U1Xnf5mndUc+lvGpzxu4KDNc2Sfevv+RVZZFNk=",
130
  "ops/gated_delta_rule/gate.py": "H9JLPKjgZmorhyV+1IJFSMIa6x9admDn+EXXlwg167g=",
131
  "ops/gated_delta_rule/naive.py": "0c8XmSNJ/T6Ur5mbIuPTqBvkotGIHOW3CjRXJXFm4Ms=",
132
+ "ops/gated_delta_rule/wy_fast.py": "kFbW7BX1I4DBBBhfV1yXGQR4Jb9tGM6yILNmTXNOhxo=",
133
  "ops/gated_oja_rule/__init__.py": "oShC/cL0jMy+xWR7YBV9QxkAdxt1xasXDCypGAU6Hgo=",
134
  "ops/gated_oja_rule/chunk.py": "lq+5BXEaJLfL4dqqcJb4TmtyF9OrP9Wh+JpRfpdzd2s=",
135
  "ops/gated_oja_rule/chunk_h.py": "kr6KBcPbFRrIQFBoQjmt1wsyvO1pyLeGW5v/k+NI87Q=",
 
312
  "dirty": false
313
  },
314
  "kernel": {
315
+ "commit": "5162251f728a6da1e248654bb8287ae73a866e9b",
316
  "dirty": false
317
  }
318
  }
build/torch-cuda/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIUIIZkQEZxvGBTZzbjqSvKUpimKR8wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTA3MTEwNTEzWhcNMjYwOTA3MTExNTEzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnJfhR++50SCKuo1kHC4wyXu3mU91khmbZAb0Ud9GwH2s/K7Gf1tePg/AaiFQFirqpO9LQvB73uYI0PNnDWoq6aOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUBWD2xtzaevwhepHStizemPyF5WkwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoODlkNDA1NGYzNzU1MDM5ZDU0NzRjZmVkMDNmMDZkZTAyNmVlMmNlNzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoODlkNDA1NGYzNzU1MDM5ZDU0NzRjZmVkMDNmMDZkZTAyNmVlMmNlNzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoODlkNDA1NGYzNzU1MDM5ZDU0NzRjZmVkMDNmMDZkZTAyNmVlMmNlNzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDg5ZDQwNTRmMzc1NTAzOWQ1NDc0Y2ZlZDAzZjA2ZGUwMjZlZTJjZTcwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzQxMDMxOTMwMTIvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoHuLKnMAAAQDAEYwRAIgL6kyqGB4IgIq+r/WIZGF8ptGBi3VwBeY+gcHB/NhFBsCIEGBj3vJ961hlZ/WsxnsC+KaPOsxVvLhfn1y0dvLBzshMAoGCCqGSM49BAMDA2gAMGUCMQDkgxklkL6nh7O6cz9qyjn6kqJaN7FimRfR6BXKil4aN5lcDHi9iz3vzLKpWIHJ1+wCMG8/25Jc/+GnwlpjNLIBZGkPOfacvH9yCsplt9WMOqwM7GCXTHEJfyCQcZ3d7zQluQ=="},"tlogEntries":[{"logIndex":"2749898045","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1788779113","inclusionPromise":{"signedEntryTimestamp":"MEQCIFksabht0TJpA91Q+nGDFyqK/kKDkiygq8oG/eQFEoSQAiAN7DIYctjf9/DUcPeCd7zGcCx4MNyxATZGeJYoIXwO+Q=="},"inclusionProof":{"logIndex":"2627993783","rootHash":"9j7JkEUwwIy7tl0mfuRdZEEa/Z6WAvcWpVDViI/HmlY=","treeSize":"2627993796","hashes":["vOGEX0d7sFTjYKP7l4ASi7bXYTb6BDKs4tyJcHG2Tsc=","xrtxVMudtX7Cn1V247io1aGnqlQoP1XmQOwqQMuTKE0=","qwWPoKlr6qhxT/zcx2KPysIRKlUR7Cn1reG0IQiN4LQ=","tB0XreskubRY5UJG7fDz1ySSuTiVLVYT5BYuoc+UXhE=","CVaaFoR62Z07x7AbUt55ceWm63iPtVtDaQXKX+VV5SM=","LUo/jp1ObKqOTaoajOkq1UnSRrD1ZiX8NcZGwuarfBw=","eM8YW2fuU19D/vnrSjocMLmPlcr3Gw2zl4TfZ5b9lmM=","H3IVluA78zMIamXvypjtPZiVpUbExLAe2EDybIJu9XY=","FM/ybxCXgjHWxRPPxHiRbSt6LQFQiEwSeO124nUsyIU=","K+858yGCw25D5RMAiKde/utQcwxbEGlCoGfzZ4CaSUU=","lKSWYj364IeG0b10DY/iYLgSeWiNkybEZLzd49gUFSo=","7tD2K8mAqGTMENrP2YXWz71BeTWQPCiYd3CESAgQLz8=","eXSLrLqKSxRTixSP/k4YimriB2lufao6trqTrsxxlyg=","SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2627993796\n9j7JkEUwwIy7tl0mfuRdZEEa/Z6WAvcWpVDViI/HmlY=\n\n— rekor.sigstore.dev wNI9ajBEAiBB6IZ6QXLq7DNqnfhHLxnbW+I2X6DyqqkeUF02jht3QwIgfmCxK2lYtatRVzkRqUqT/vcFF9+uh30787nF9YGed0E=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3MThiOWNiNTk2ZWMzNGQ2ZmI2NjQ0ZTJhZTFhZDYzYzUxODM5MmM2ZWE1ZTUzYmI5ZjlmYWNmMmNlNzMyODM4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUQyaTZ4R29QRzVjWmxHbnVGblFDZVEya3p2QVhlYnlZUWtvZ2RTajVUSjZBSWhBUDJpRzFVUG9NK2h3SENsTkprRVd3K2d6ZEw5aTVwWWswR3hDZzZ4VlJJciIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVlNVbGFhMUZGV25oMlIwSlVXbnBpYW5GVGRrdFZjR2x0UzFJNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUVROTlZFVjNUbFJGZWxkb1kwNU5hbGwzVDFSQk0wMVVSWGhPVkVWNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ1U21ab1Vpc3JOVEJUUTB0MWJ6RnJTRU0wZDNsWWRUTnRWVGt4YTJodFlscEJZakFLVldRNVIzZElNbk12U3pkSFpqRjBaVkJuTDBGaGFVWlJSbWx5Y1hCUE9VeFJka0kzTTNWWlNUQlFUbTVFVjI5eE5tRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZDVjBReUNuaDBlbUZsZG5kb1pYQklVM1JwZW1WdFVIbEdOVmRyZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOVBSR3hyVGtSQk1VNUhXWHBPZWxVeFRVUk5OVnBFVlRCT2VsSnFDbHB0Vm10TlJFNXRUVVJhYTFwVVFYbE9iVlpzVFcxT2JFNTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDlFYkd0T1JFRXhUa2RaZWs1NlZURk5SRTAxV2tSVk1FNTZVbXBhYlZaclRVUk9iVTFFV21zS1dsUkJlVTV0Vm14TmJVNXNUbnBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDlFYkd0T1JFRXhUa2RaZWs1NlZURk5SRTAxV2tSVk1FNTZVbW9LV20xV2EwMUVUbTFOUkZwcldsUkJlVTV0Vm14TmJVNXNUbnBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUm5OVnBFVVhjS1RsUlNiVTE2WXpGT1ZFRjZUMWRSTVU1RVl6QlpNbHBzV2tSQmVscHFRVEphUjFWM1RXcGFiRnBVU21wYVZHTjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxGNFRVUk5lRTlVVFhkTlZFbDJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUlkVXhMYmsxQlFVRlJSQXBCUlZsM1VrRkpaMHcyYTNseFIwSTBTV2RKY1N0eUwxZEpXa2RHT0hCMFIwSnBNMVozUW1WWksyZGpTRUl2VG1oR1FuTkRTVVZIUW1vemRrbzVOakZvQ214YUwxZHplRzV6UXl0TFlWQlBjM2hXZGt4b1ptNHhlVEJrZGt4Q2VuTm9UVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRWRkVhMmQ0YTJ3S2EwdzJibWczVHpaamVqbHhlV3B1Tm10eFNtRk9OMFpwYlZKbVVqWkNXRXRwYkRSaFRqVnNZMFJJYVRscGVqTjJla3hMY0ZkSlNFb3hLM2REVFVjNEx3b3lOVXBqTHl0SGJuZHNjR3BPVEVsQ1drZHJVRTltWVdOMlNEbDVRM053YkhRNVYwMVBjWGROTjBkRFdGUklSVXBtZVVOUlkxb3paRGQ2VVd4MVVUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgszw20fG+4N+PrWRbO6jYTP1anLmumJ0XeN+LbrxAQLoCFQDYSzHaXK9JNmPxhl9rH9fWrKwvVBgPMjAyNjA5MDcxMTA1MTNaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkwNzExMDUxM1owLwYJKoZIhvcNAQkEMSIEIEwG1XeumJF8kH4xqYcpyZiaCczql7UojjGtNL9r0YoHMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMGxgrMUuRElQ//f2dhC+Z8kqbDMJt97E1g3zYUPKyVYla6+4jx5sYAobzwTZ6mBiMgIxAIIvXotJGseVdnFhc15zUTuMapAF6utoVkKDoo4oByvs5OXCCcD5Yy5jdLmcfVIDQg=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"cYuctZbsNNb7ZkTirhrWPFGDksbqXlO7n5+s8s5zKDg="},"signature":"MEYCIQD2i6xGoPG5cZlGnuFnQCeQ2kzvAXebyYQkogdSj5TJ6AIhAP2iG1UPoM+hwHClNJkEWw+gzdL9i5pYk0GxCg6xVRIr"}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"2782541221","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1789040890","inclusionPromise":{"signedEntryTimestamp":"MEYCIQCxOUJfVdvkhuN3zx/axTouaalKUTudI1DbuwroH+agEwIhAKliedpyLvW2yf9AT7hdhXhYF/cUXqDfQ9kwnJCBCfWd"},"inclusionProof":{"logIndex":"2660636959","rootHash":"m1d/wcbnB5wuy33OeHMYswzj/71hSPULyCBTFChgbGc=","treeSize":"2660637325","hashes":["yKMBjv/wg8XpYQkta+AxPhTN6rPrJZH9ZOTx2Yleaik=","HUEw1fI8HhB5cOhcgnSOP8cjcVtJ6A77RJaspEwQCEo=","fLHLNS05TenIJndUoamMoVujSFRriWLuNd6I/S4NQbM=","AXlcEbEM9TUGEVwAY+AKNoyDF/FJhNk62DYKZe6I6Q8=","JfCeSzhRj0xAjqUwWwXnnSVbXHnkxfYh5bPid9JjfYA=","IP5rKuiXJ1ItxHESEhA89nsxeNODRDR3PLQlKO4I8kk=","h9GSbzpqO+PfQ8WXaoGcop8PvNIwhG+HIDbiJrVaYY8=","p5FzFByA9NIt9JFQPzivpaAAYaLmjlHhiV0qTGKjelY=","vXQ6+f90E4H/c3wZnsbuDvigoqeoBZaq4wm3QzVpGFE=","9YuFT+fuNWExOPaQgY0kreT4QrKKmSYKqdHNTcd+m8w=","ZepJcLhw88V/Keur3Y+tuiNCBSmzLu64Z+SXvizYSwE=","QE8XF0B44U7wQFb5+90RTKWqGpYOl171XVfTk0Yn/qQ=","TKG+Q1VKaHO0wYQXG0ay0oIleqTjGQY9pObaWFWMKoo=","tUKyb7C480RhDVXaNDboFd+KJmVTMK/FWW47rRdB15c=","wa3SxR/hCfRbs8pzwM4D8wuxTOnbBYK/CGQe1GqX7HA=","RWKTC8lK6QH9wY0VD43p3P3N0jCodw0jaVv1bOki3J4=","4SexKjDhe33uQFmbzX5SUsB0SyhTm14ObSvNGPpKDFk=","7tD2K8mAqGTMENrP2YXWz71BeTWQPCiYd3CESAgQLz8=","eXSLrLqKSxRTixSP/k4YimriB2lufao6trqTrsxxlyg=","SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2660637325\nm1d/wcbnB5wuy33OeHMYswzj/71hSPULyCBTFChgbGc=\n\n— rekor.sigstore.dev wNI9ajBFAiAw6Mu93comIsp6chUiVya6Er06HnUYeVSQyWqRl4m6VQIhAKJtyG4SO9+grJXjI9toMudk7RLXWAPceRmu6by3LBTq\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1OWVlYmMxMGVkYjhjYmE5NmNmMWM0NjVjNTM4YmEwOWM5ZWU1NGU1MWYzNmUwNzljYzMxMzhkNmE1OTdjZThkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUQ0dnFvVGxiNjRaWEZHdnZZU1YyenFkajBSYlR1SjZLdXJRVUErc1RwNHJRSWdCbURPZG4yMDg4RWR6WUl2R1pOU0NJVUJyQWs4QlV0Vy9GMExiSEhrYTdvPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SSFowRjNTVUpCWjBsVlZXMWFiakUwTldZNGJVZEZNRzlKYVZNeFowSmlXRk5SYjJ0QmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUlhkTlZFVXdUMFJCTlZkb1kwNU5hbGwzVDFSRmQwMVVSVEZQUkVFMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ3VVZkYVQyYzJRMEpyUWxoNWFsWjVjbXB0UmxkaldEbE9ZMlZqWldOdGRGQnhPWElLYkV4Rk1GUnlUbTFrVDJRd2FXUnRiWEpuVVhKaE5IZGhlR2RyVnpCc1YwcHplVEk1YkU4MGNrbFpjREJPVXpacGRVdFBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZSU1U5a0NrbFdjVU5HZVc5R2FtaHpkM05vUzFSR1ZFNXhia0puZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9WRVV5VFdwSk1VMVhXVE5OYW1ob1RtMVNhRTFYVlhsT1JHY3lDazVVVW1sWmFtZDVUMFJrYUZwVVkzcFpWR2N5VG0xVk5WbHFRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVVUlRKTmFra3hUVmRaTTAxcWFHaE9iVkpvVFZkVmVVNUVaekpPVkZKcFdXcG5lVTlFWkdnS1dsUmplbGxVWnpKT2JWVTFXV3BCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVVUlRKTmFra3hUVmRaTTAxcWFHaE9iVkpvVFZkVmVVNUVaeklLVGxSU2FWbHFaM2xQUkdSb1dsUmplbGxVWnpKT2JWVTFXV3BCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlZlRTVxU1hrS1RsUkdiVTU2U1RSWlZGcHJXVlJHYkUxcVVUUk9hbFV3V1cxSk5FMXFaek5aVjFVelRUSkZORTVxV214UFYwbDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxFd1RucEpOVTVxWXpGT2FrRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUpjMnhxTDAxQlFVRlJSQXBCUldOM1VsRkpaMUZJTTIxV1owbHBZbTkzZG14U1MyWnhObGwzYUVKelkzVlJXWGRwYW5sNk1EQnJNV3BHY1RGcVJUQkRTVkZFZGl0eU1FZDRRakF2Q2tsWFpreEZXa1pFUlZNM01VSjRiMnhXWmpNellYbEJTVGRoUWxsTEsyazFkV3BCUzBKblozRm9hMnBQVUZGUlJFRjNUbTVCUkVKclFXcENVeXRtVWtjS1JraGliSGxNUmxKa1IzRlVURFJpSzBsWFpHUnJkRE5pUVRFelkxbERhWE12VVZOcFIzbENlV3RQVW1jMFN6WjJlRXRaY1hOdE1WaEZSMEZEVFVKS1R3cFBXVEZQTjBNMlZpOXhVWFpvWm5aTVIweFdhaXQxWWtaVUszazNaVWxrZFUxSlpuQm9VV3RqVWs5YVVqWlBjR0pvUmxCVllWWlVSVzUyUkhodlVUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgsYw9RG6K83fj7XJBN8jgBSHf9zZZmFJehEXH68yOuGcCFQD227Jw5ugqBWbfe8MEY5EcoWen1xgPMjAyNjA5MTAxMTQ4MDlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkxMDExNDgwOVowLwYJKoZIhvcNAQkEMSIEIKO8j8vtkzJel8GUPpgQX6HQG9ltvCuQbT25w3MRnv7BMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMGqkTrCW3hMsw7CX5+vwE9Q5dpx5EaT0bNRwPa6x4KqwV+Dozpj7hzNlrt/tzMV3RAIwTGv4C3G/PP5xc5lMshvo/C7I7ABWkuRxBpilbW3DN79OBd/gbmcXZpPqOOQCR7os"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"We68EO24y6ls8cRlxTi6CcnuVOUfNuB5zDE41qWXzo0="},"signature":"MEUCIQD4vqoTlb64ZXFGvvYSV2zqdj0RbTuJ6KurQUA+sTp4rQIgBmDOdn2088EdzYIvGZNSCIUBrAk8BUtW/F0LbHHka7o="}}
build/torch-cuda/ops/common/chunk_delta_h.py CHANGED
@@ -14,6 +14,7 @@ from ...ops.utils import prepare_chunk_indices, prepare_chunk_offsets
14
  from ...ops.utils.cache import fla_cache_autotune
15
  from ...ops.utils.op import exp2
16
  from ...utils import (
 
17
  IS_NVIDIA_BLACKWELL,
18
  IS_NVIDIA_HOPPER,
19
  autotune_cache_kwargs,
@@ -25,7 +26,14 @@ NUM_WARPS = [2, 4] if IS_NVIDIA_HOPPER else [2, 4, 8, 16]
25
  # TODO: Triton mainline fixes a Blackwell tl.dot recurrence race.
26
  # Keep this kernel on num_warps=2 for Blackwell until Triton 3.8 is released
27
  # and we re-validate the wider config space.
28
- GATED_DELTA_RULE_FWD_H_NUM_WARPS = [2] if IS_NVIDIA_BLACKWELL else [2, 4]
 
 
 
 
 
 
 
29
 
30
 
31
  @triton.heuristics({
 
14
  from ...ops.utils.cache import fla_cache_autotune
15
  from ...ops.utils.op import exp2
16
  from ...utils import (
17
+ IS_INTEL,
18
  IS_NVIDIA_BLACKWELL,
19
  IS_NVIDIA_HOPPER,
20
  autotune_cache_kwargs,
 
26
  # TODO: Triton mainline fixes a Blackwell tl.dot recurrence race.
27
  # Keep this kernel on num_warps=2 for Blackwell until Triton 3.8 is released
28
  # and we re-validate the wider config space.
29
+ # Intel needs more warps than NVIDIA here: 8 warps is ~1.5x faster than the best
30
+ # config reachable under the [2, 4] cap.
31
+ if IS_NVIDIA_BLACKWELL:
32
+ GATED_DELTA_RULE_FWD_H_NUM_WARPS = [2]
33
+ elif IS_INTEL:
34
+ GATED_DELTA_RULE_FWD_H_NUM_WARPS = [2, 4, 8, 16]
35
+ else:
36
+ GATED_DELTA_RULE_FWD_H_NUM_WARPS = [2, 4]
37
 
38
 
39
  @triton.heuristics({
build/torch-cuda/ops/common/chunk_o.py CHANGED
@@ -14,6 +14,7 @@ from ...ops.utils import prepare_chunk_indices
14
  from ...ops.utils.cache import fla_cache_autotune
15
  from ...ops.utils.op import exp2
16
  from ...utils import (
 
17
  IS_NVIDIA_HOPPER,
18
  TRITON_ABOVE_3_4_0,
19
  TRITON_ABOVE_3_7_1,
@@ -24,6 +25,22 @@ from ...utils import (
24
  BKV_LIST = [64, 128] if check_shared_mem() else ([32, 64] if check_shared_mem('ada') else [32])
25
  NUM_WARPS = [2, 4] if IS_NVIDIA_HOPPER else [2, 4, 8]
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  @triton.heuristics({
29
  'USE_G': lambda args: args['g'] is not None,
@@ -31,11 +48,7 @@ NUM_WARPS = [2, 4] if IS_NVIDIA_HOPPER else [2, 4, 8]
31
  'IS_VARLEN': lambda args: args['cu_seqlens'] is not None,
32
  })
33
  @fla_cache_autotune(
34
- configs=[
35
- triton.Config({'BK': 128, 'BV': 128}, num_warps=8, num_stages=3),
36
- triton.Config({'BK': 64, 'BV': 64}, num_warps=4, num_stages=3),
37
- triton.Config({'BK': 32, 'BV': 32}, num_warps=2, num_stages=3),
38
- ],
39
  key=['H', 'HV', 'K', 'V', 'BT', 'STATE_V_FIRST'],
40
  **autotune_cache_kwargs,
41
  )
 
14
  from ...ops.utils.cache import fla_cache_autotune
15
  from ...ops.utils.op import exp2
16
  from ...utils import (
17
+ IS_INTEL,
18
  IS_NVIDIA_HOPPER,
19
  TRITON_ABOVE_3_4_0,
20
  TRITON_ABOVE_3_7_1,
 
25
  BKV_LIST = [64, 128] if check_shared_mem() else ([32, 64] if check_shared_mem('ada') else [32])
26
  NUM_WARPS = [2, 4] if IS_NVIDIA_HOPPER else [2, 4, 8]
27
 
28
+ # Upstream pairs each tile size with a single warp count, which is tuned for NVIDIA.
29
+ # On Intel that pairing is off by a factor of two: BK=BV=64 is fastest at 8 warps but is
30
+ # only offered at 4, so the autotuner falls back to the 32x32 config and leaves ~2.2x on
31
+ # the table. Widen the space there instead of changing the defaults for other vendors.
32
+ _O_CONFIGS = [
33
+ triton.Config({'BK': 128, 'BV': 128}, num_warps=8, num_stages=3),
34
+ triton.Config({'BK': 64, 'BV': 64}, num_warps=4, num_stages=3),
35
+ triton.Config({'BK': 32, 'BV': 32}, num_warps=2, num_stages=3),
36
+ ]
37
+ if IS_INTEL:
38
+ _O_CONFIGS += [
39
+ triton.Config({'BK': BK, 'BV': BV}, num_warps=w, num_stages=2)
40
+ for BK, BV in [(128, 64), (64, 64), (64, 32), (32, 64), (32, 32)]
41
+ for w in (4, 8)
42
+ ]
43
+
44
 
45
  @triton.heuristics({
46
  'USE_G': lambda args: args['g'] is not None,
 
48
  'IS_VARLEN': lambda args: args['cu_seqlens'] is not None,
49
  })
50
  @fla_cache_autotune(
51
+ configs=_O_CONFIGS,
 
 
 
 
52
  key=['H', 'HV', 'K', 'V', 'BT', 'STATE_V_FIRST'],
53
  **autotune_cache_kwargs,
54
  )
build/torch-cuda/ops/gated_delta_rule/chunk_fwd.py CHANGED
@@ -14,7 +14,7 @@ from ...ops.gated_delta_rule.wy_fast import recompute_w_u_fwd
14
  from ...ops.utils import prepare_chunk_indices, solve_tril
15
  from ...ops.utils.cache import fla_cache_autotune
16
  from ...ops.utils.op import exp2
17
- from ...utils import IS_TF32_SUPPORTED, autotune_cache_kwargs
18
 
19
  if IS_TF32_SUPPORTED:
20
  SOLVE_TRIL_DOT_PRECISION = tl.constexpr('tf32')
@@ -361,7 +361,10 @@ def chunk_gated_delta_rule_fwd_intra(
361
  if chunk_indices is None and cu_seqlens is not None:
362
  chunk_indices = prepare_chunk_indices(cu_seqlens, BT)
363
 
364
- if BT == 64:
 
 
 
365
  # Step 1: fused kkt + solve_tril
366
  BC = 16
367
  NT = triton.cdiv(T, BT) if cu_seqlens is None else len(chunk_indices)
@@ -381,7 +384,7 @@ def chunk_gated_delta_rule_fwd_intra(
381
  BC=BC,
382
  )
383
  else:
384
- # Step 1: mathematically equivalent unfused kkt + solve_tril for non-64 chunks
385
  A = chunk_scaled_dot_kkt_fwd(
386
  k=k,
387
  g=g,
 
14
  from ...ops.utils import prepare_chunk_indices, solve_tril
15
  from ...ops.utils.cache import fla_cache_autotune
16
  from ...ops.utils.op import exp2
17
+ from ...utils import IS_INTEL, IS_TF32_SUPPORTED, autotune_cache_kwargs
18
 
19
  if IS_TF32_SUPPORTED:
20
  SOLVE_TRIL_DOT_PRECISION = tl.constexpr('tf32')
 
361
  if chunk_indices is None and cu_seqlens is not None:
362
  chunk_indices = prepare_chunk_indices(cu_seqlens, BT)
363
 
364
+ # The fused kernel keeps ten [BC, BC] fp32 accumulators live across the K loop.
365
+ # That fits NVIDIA's register file but spills on Intel GPUs, where the unfused
366
+ # two-kernel path measures 2.3-3.0x faster despite the extra HBM round-trip.
367
+ if BT == 64 and not IS_INTEL:
368
  # Step 1: fused kkt + solve_tril
369
  BC = 16
370
  NT = triton.cdiv(T, BT) if cu_seqlens is None else len(chunk_indices)
 
384
  BC=BC,
385
  )
386
  else:
387
+ # Step 1: mathematically equivalent unfused kkt + solve_tril
388
  A = chunk_scaled_dot_kkt_fwd(
389
  k=k,
390
  g=g,
build/torch-cuda/ops/gated_delta_rule/wy_fast.py CHANGED
@@ -12,7 +12,7 @@ import triton.language as tl
12
  from ...ops.utils import prepare_chunk_indices
13
  from ...ops.utils.cache import fla_cache_autotune
14
  from ...ops.utils.op import exp2
15
- from ...utils import IS_NVIDIA_BLACKWELL, autotune_cache_kwargs, check_shared_mem
16
 
17
  # Blackwell can select unstable Triton configs for prepare_wy_repr_bwd_kernel
18
  # during autotuning (see #913). Restrict it to the config that has been
@@ -20,6 +20,10 @@ from ...utils import IS_NVIDIA_BLACKWELL, autotune_cache_kwargs, check_shared_me
20
  PREPARE_WY_REPR_BWD_NUM_WARPS = [2] if IS_NVIDIA_BLACKWELL else [2, 4]
21
  PREPARE_WY_REPR_BWD_NUM_STAGES = [4] if IS_NVIDIA_BLACKWELL else [2, 3, 4]
22
 
 
 
 
 
23
 
24
  @triton.heuristics({
25
  'USE_G': lambda args: args['g'] is not None,
@@ -28,7 +32,7 @@ PREPARE_WY_REPR_BWD_NUM_STAGES = [4] if IS_NVIDIA_BLACKWELL else [2, 3, 4]
28
  @fla_cache_autotune(
29
  configs=[
30
  triton.Config({}, num_warps=num_warps, num_stages=num_stages)
31
- for num_warps in [2, 4, 8]
32
  for num_stages in [2, 3, 4]
33
  ],
34
  key=['H', 'HV', 'K', 'V', 'BT', 'BK', 'BV', 'IS_VARLEN'],
 
12
  from ...ops.utils import prepare_chunk_indices
13
  from ...ops.utils.cache import fla_cache_autotune
14
  from ...ops.utils.op import exp2
15
+ from ...utils import IS_INTEL, IS_NVIDIA_BLACKWELL, autotune_cache_kwargs, check_shared_mem
16
 
17
  # Blackwell can select unstable Triton configs for prepare_wy_repr_bwd_kernel
18
  # during autotuning (see #913). Restrict it to the config that has been
 
20
  PREPARE_WY_REPR_BWD_NUM_WARPS = [2] if IS_NVIDIA_BLACKWELL else [2, 4]
21
  PREPARE_WY_REPR_BWD_NUM_STAGES = [4] if IS_NVIDIA_BLACKWELL else [2, 3, 4]
22
 
23
+ # Intel keeps scaling past the warp counts NVIDIA prefers: 16 warps is ~1.3x faster
24
+ # than 8 for recompute_w_u.
25
+ RECOMPUTE_W_U_NUM_WARPS = [2, 4, 8, 16] if IS_INTEL else [2, 4, 8]
26
+
27
 
28
  @triton.heuristics({
29
  'USE_G': lambda args: args['g'] is not None,
 
32
  @fla_cache_autotune(
33
  configs=[
34
  triton.Config({}, num_warps=num_warps, num_stages=num_stages)
35
+ for num_warps in RECOMPUTE_W_U_NUM_WARPS
36
  for num_stages in [2, 3, 4]
37
  ],
38
  key=['H', 'HV', 'K', 'V', 'BT', 'BK', 'BV', 'IS_VARLEN'],