Uploaded using `kernel-builder`.
#7
by kernels-bot - opened
- README.md +3 -0
- build/torch-cuda/_ops.py +8 -2
- build/torch-cuda/esmfold2_trimul/__init__.py +0 -26
- build/torch-cuda/fused_ln_residual.py +6 -2
- build/torch-cuda/layers.py +2 -0
- build/torch-cuda/metadata.json +9 -8
- build/torch-cuda/metadata.json.sigstore +1 -1
- build/torch-cuda/trimul_with_residual.py +6 -5
README.md
CHANGED
|
@@ -21,6 +21,9 @@ ESMFold2TriangleMultiplication(...)
|
|
| 21 |
- `ESMFold2TriangleMultiplication`
|
| 22 |
- `triangle_multiplicative_update_with_residual`
|
| 23 |
|
|
|
|
|
|
|
|
|
|
| 24 |
## Benchmarks
|
| 25 |
|
| 26 |
No benchmark available yet.
|
|
|
|
| 21 |
- `ESMFold2TriangleMultiplication`
|
| 22 |
- `triangle_multiplicative_update_with_residual`
|
| 23 |
|
| 24 |
+
## Available layers
|
| 25 |
+
- `ESMFold2TriangleMultiplication`
|
| 26 |
+
|
| 27 |
## Benchmarks
|
| 28 |
|
| 29 |
No benchmark available yet.
|
build/torch-cuda/_ops.py
CHANGED
|
@@ -4,7 +4,13 @@ def get_backend() -> str:
|
|
| 4 |
"""Detect the backend by inspecting torch."""
|
| 5 |
import torch
|
| 6 |
|
| 7 |
-
if hasattr(torch, "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
# Needs to be sorted before specific Torch builds, since Neuron
|
| 9 |
# extension can be loaded into e.g. CUDA Torch builds.
|
| 10 |
return "neuron"
|
|
@@ -22,7 +28,7 @@ def get_backend() -> str:
|
|
| 22 |
|
| 23 |
def _find_ops_name() -> str:
|
| 24 |
kernel_name = "esmfold2_trimul"
|
| 25 |
-
unique_id = "
|
| 26 |
backend = get_backend()
|
| 27 |
return f"_{kernel_name}_{backend}_{unique_id}"
|
| 28 |
|
|
|
|
| 4 |
"""Detect the backend by inspecting torch."""
|
| 5 |
import torch
|
| 6 |
|
| 7 |
+
if hasattr(torch.backends, "tpu"):
|
| 8 |
+
# torch_tpu sets torch.backends.tpu when it is imported (via
|
| 9 |
+
# torch's device-backend autoload), regardless of whether TPU
|
| 10 |
+
# hardware is present — analogous to torch.version.cuda being
|
| 11 |
+
# set on CUDA builds without a GPU.
|
| 12 |
+
return "tpu"
|
| 13 |
+
elif hasattr(torch, "neuron"):
|
| 14 |
# Needs to be sorted before specific Torch builds, since Neuron
|
| 15 |
# extension can be loaded into e.g. CUDA Torch builds.
|
| 16 |
return "neuron"
|
|
|
|
| 28 |
|
| 29 |
def _find_ops_name() -> str:
|
| 30 |
kernel_name = "esmfold2_trimul"
|
| 31 |
+
unique_id = "cafe8d5"
|
| 32 |
backend = get_backend()
|
| 33 |
return f"_{kernel_name}_{backend}_{unique_id}"
|
| 34 |
|
build/torch-cuda/esmfold2_trimul/__init__.py
DELETED
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
import ctypes
|
| 2 |
-
import importlib.util
|
| 3 |
-
import sys
|
| 4 |
-
from pathlib import Path
|
| 5 |
-
from types import ModuleType
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
-
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
-
# it would also be used for other imports. So, we make a module name that
|
| 11 |
-
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
-
# the path.
|
| 13 |
-
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
-
module_name = path_hash
|
| 15 |
-
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
-
if spec is None:
|
| 17 |
-
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
-
module = importlib.util.module_from_spec(spec)
|
| 19 |
-
if module is None:
|
| 20 |
-
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
-
sys.modules[module_name] = module
|
| 22 |
-
spec.loader.exec_module(module) # type: ignore
|
| 23 |
-
return module
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
build/torch-cuda/fused_ln_residual.py
CHANGED
|
@@ -60,7 +60,9 @@ def _ln_fwd_kernel(
|
|
| 60 |
TILE_M: tl.constexpr,
|
| 61 |
):
|
| 62 |
pid = tl.program_id(axis=0).to(tl.int64)
|
| 63 |
-
|
|
|
|
|
|
|
| 64 |
|
| 65 |
offs_m = pid * TILE_M + tl.arange(0, TILE_M).to(tl.int64)
|
| 66 |
offs_d = tl.arange(0, D).to(tl.int64)
|
|
@@ -108,7 +110,9 @@ def _ln_bwd_kernel(
|
|
| 108 |
TILE_M: tl.constexpr,
|
| 109 |
):
|
| 110 |
pid = tl.program_id(axis=0).to(tl.int64)
|
| 111 |
-
|
|
|
|
|
|
|
| 112 |
|
| 113 |
offs_m = pid * TILE_M + tl.arange(0, TILE_M).to(tl.int64)
|
| 114 |
offs_d = tl.arange(0, D).to(tl.int64)
|
|
|
|
| 60 |
TILE_M: tl.constexpr,
|
| 61 |
):
|
| 62 |
pid = tl.program_id(axis=0).to(tl.int64)
|
| 63 |
+
# tl.cast, not M.to: M is a plain int when Triton specializes it (M == 1),
|
| 64 |
+
# and when torch.compile analyzes the kernel.
|
| 65 |
+
M64 = tl.cast(M, tl.int64)
|
| 66 |
|
| 67 |
offs_m = pid * TILE_M + tl.arange(0, TILE_M).to(tl.int64)
|
| 68 |
offs_d = tl.arange(0, D).to(tl.int64)
|
|
|
|
| 110 |
TILE_M: tl.constexpr,
|
| 111 |
):
|
| 112 |
pid = tl.program_id(axis=0).to(tl.int64)
|
| 113 |
+
# tl.cast, not M.to: M is a plain int when Triton specializes it (M == 1),
|
| 114 |
+
# and when torch.compile analyzes the kernel.
|
| 115 |
+
M64 = tl.cast(M, tl.int64)
|
| 116 |
|
| 117 |
offs_m = pid * TILE_M + tl.arange(0, TILE_M).to(tl.int64)
|
| 118 |
offs_d = tl.arange(0, D).to(tl.int64)
|
build/torch-cuda/layers.py
CHANGED
|
@@ -33,6 +33,8 @@ def _bf16(t):
|
|
| 33 |
|
| 34 |
|
| 35 |
class ESMFold2TriangleMultiplication(nn.Module):
|
|
|
|
|
|
|
| 36 |
def forward(self, pair_grid: torch.Tensor, visibility: torch.Tensor | None = None) -> torch.Tensor:
|
| 37 |
lat = self.dim
|
| 38 |
pb = self.proj_bundle.weight
|
|
|
|
| 33 |
|
| 34 |
|
| 35 |
class ESMFold2TriangleMultiplication(nn.Module):
|
| 36 |
+
can_torch_compile = True
|
| 37 |
+
|
| 38 |
def forward(self, pair_grid: torch.Tensor, visibility: torch.Tensor | None = None) -> torch.Tensor:
|
| 39 |
lat = self.dim
|
| 40 |
pb = self.proj_bundle.weight
|
build/torch-cuda/metadata.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
| 1 |
{
|
| 2 |
"name": "esmfold2-trimul",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
|
|
|
| 5 |
"license": "Apache-2.0",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "cuda"
|
| 9 |
},
|
|
@@ -11,23 +13,22 @@
|
|
| 11 |
"algorithm": "sha256",
|
| 12 |
"files": {
|
| 13 |
"__init__.py": "QEOcPj5Hqkgyj1VMevVV+y5HuW6RfuNgx1ssRFeMqb8=",
|
| 14 |
-
"_ops.py": "/
|
| 15 |
-
"esmfold2_trimul/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 16 |
"fused_dual_gemm.py": "5wIgwoeeDYcMG4yeKfkxDS1nhxVpDc8Nxx1wo32u+Kk=",
|
| 17 |
-
"fused_ln_residual.py": "
|
| 18 |
-
"layers.py": "
|
| 19 |
"trimul_einsum_triton.py": "77kcCDRV/eHG/LoycgXMvoc0UsAOcgG/+j8E4DiwcTw=",
|
| 20 |
-
"trimul_with_residual.py": "
|
| 21 |
}
|
| 22 |
},
|
| 23 |
"provenance": {
|
| 24 |
"kernel-builder": {
|
| 25 |
"version": "0.17.0-dev0",
|
| 26 |
-
"
|
| 27 |
"dirty": false
|
| 28 |
},
|
| 29 |
"kernel": {
|
| 30 |
-
"
|
| 31 |
"dirty": false
|
| 32 |
}
|
| 33 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "esmfold2-trimul",
|
| 3 |
+
"id": "_esmfold2_trimul_cuda_cafe8d5",
|
| 4 |
"version": 1,
|
| 5 |
+
"kernels-minver": "0.14.0",
|
| 6 |
"license": "Apache-2.0",
|
| 7 |
"python-depends": [],
|
| 8 |
+
"kernel-depends": [],
|
| 9 |
"backend": {
|
| 10 |
"type": "cuda"
|
| 11 |
},
|
|
|
|
| 13 |
"algorithm": "sha256",
|
| 14 |
"files": {
|
| 15 |
"__init__.py": "QEOcPj5Hqkgyj1VMevVV+y5HuW6RfuNgx1ssRFeMqb8=",
|
| 16 |
+
"_ops.py": "2/hlli9ZZts2pwZsCA8kTb1G8ArN/vNtDrOaqaDlnbQ=",
|
|
|
|
| 17 |
"fused_dual_gemm.py": "5wIgwoeeDYcMG4yeKfkxDS1nhxVpDc8Nxx1wo32u+Kk=",
|
| 18 |
+
"fused_ln_residual.py": "inG8a2sHTGrIJSXH8bB10zzNOyaMtLmjAMlc/e6vSlc=",
|
| 19 |
+
"layers.py": "UuuCrpDruJguKKaruy3Btgn5Q7jH/JwkjwB81zWNT6A=",
|
| 20 |
"trimul_einsum_triton.py": "77kcCDRV/eHG/LoycgXMvoc0UsAOcgG/+j8E4DiwcTw=",
|
| 21 |
+
"trimul_with_residual.py": "KutJ8jQf2f4ngrXNVfl52bRedkqYWyIvySpIoD5RKWk="
|
| 22 |
}
|
| 23 |
},
|
| 24 |
"provenance": {
|
| 25 |
"kernel-builder": {
|
| 26 |
"version": "0.17.0-dev0",
|
| 27 |
+
"commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
|
| 28 |
"dirty": false
|
| 29 |
},
|
| 30 |
"kernel": {
|
| 31 |
+
"commit": "cafe8d54340b6a2e0466a13ef60986d05193f9cb",
|
| 32 |
"dirty": false
|
| 33 |
}
|
| 34 |
}
|
build/torch-cuda/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIUYfI48cXEVi76NfJGXnr+fuHbc0IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODAxMDE1OTAwWhcNMjYwODAxMDIwOTAwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESGojDXChYtvcB4s/Qq/+/gZY5xZMOTr86NFEzCXn47kCzrOAr0OfoNS+3t9xwp8kpnhZR1l2qQF1CDlTri4CSqOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUulGdqCXp1O8mcLrCnA9hbb50NvMwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZjNjZjQyNzdhM2ZiNzVlMDRmOWE5NTk0YjRhYmY4ZWRmOTRkZGQzZDATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZjNjZjQyNzdhM2ZiNzVlMDRmOWE5NTk0YjRhYmY4ZWRmOTRkZGQzZDAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoZjNjZjQyNzdhM2ZiNzVlMDRmOWE5NTk0YjRhYmY4ZWRmOTRkZGQzZDAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGYzY2Y0Mjc3YTNmYjc1ZTA0ZjlhOTU5NGI0YWJmOGVkZjk0ZGRkM2QwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzA2Nzg5ODIwMDcvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn7sLzb8AAAQDAEYwRAIgPHpReH5gaoXDxqHS1+zELpw6ITj3kb/R+pprLCql56UCIHLdjt2Sk8fW1edNMf7RuS83UHrI0QKU0yuMqXRpEywBMAoGCCqGSM49BAMDA2gAMGUCMBvpIyo2WrO6mh1e99Sb9S1t7XyAMpgac6U5k69whppq05DNew6TXOGKxXmwfGgG1QIxALWkhkFgjewCT1RD2T7fc3WULI9h2ncdA3xYcuTnNAXnaFAqjvZ0PW3n1cmdh7lHtQ=="}, "tlogEntries":[{"logIndex":"2309786999", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1785549541", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQDdg3ECLk+GJrtiOr7kBAmHtPLCVOdIKPXiTHg+ZLFtrwIhAKcPi4YcMIVjph/dA+d4262N9QANlDOWJulhVfKRncio"}, "inclusionProof":{"logIndex":"2187882737", "rootHash":"NbO62cQsz+FY8D3iX1qqHJeFNV65bgzki3v/hLi9RaY=", "treeSize":"2187882742", "hashes":["YhvO6mvV93Kt7R9MdjnH3iv5AV4AEo0BKjZpxan+cpQ=", "syoHbPGJCi/D7929SzxJZiDxhuy09kX2wdI5auoEKIQ=", "SATpnKnVUzNgbs4FALsEifAcFozgJWWgSeFNYbhB0N8=", "7ecGOrhJsCOI0+KLMDn3UV+jQoxJ4y45K+uAqbk6mXE=", "WQsYJpBWbhbvVfMT/JT2NeOInVzBbYR2pzzX0/1Itn0=", "dFHFNYQ5SpV9IsLEnh7ZtCcUtPKYilpHXlq+9ZR3LQo=", "qtHwOXamJdNALEkDGZmNxpmcn3mSv8P4k1Cs5/oRTuM=", "Kqh65kZIZwWtR0ipnIGC/QthRdkrJea5GOiA5sFqWEg=", "+Ki3LxPDAZmxPTG+0qz+CjWaJj5dApqYfJiTQ7rqM0w=", "c+dRUQwBu38/zsU0oSvn6vFebFhtosJtQ0IUtDcU3zQ=", "LyF9sTOxKmJohoGiACpHJ2ZVtYTjqHbSKTKMIMpbCz8=", "59j/+9iGeAh3rji6yNS04n6aeLaAXOGkyBUw1xSctkc=", "izc1AepmrGt0ZNyXvDMfDKzrzdWHPO3Kzl1jsp4xSQc=", "N2cxe8veqi3iG/EGf1zAagt4SqsWKwgyxNCegSDc60s=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2187882742\nNbO62cQsz+FY8D3iX1qqHJeFNV65bgzki3v/hLi9RaY=\n\n— rekor.sigstore.dev wNI9ajBFAiEAw/4EL3UX3QzmXSm7pUksHhEfDtxLQ+gvv24Vsws3ej0CIE7NAuM9mAgX91LtFAdC7OscqHxYkGpsAFbFQEsoIlgS\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwNjVlNTExMGYzM2Q2YTRmNjNmZDJkZmJmZjM2NGI2ODAzZDc0MWUyOWNmODU0OThkODE5MmU0NDBmZDZhYWMzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUURFYm1jM3RsWlJMMXlhamwyRzFsSDI4MVRPNVpCNHlYQXBxb05zaGlZZGdBSWhBTFlaYU4vbVd3RkhDWHk5T05WU2xUNW1ZN3R1NHI1eG5ja2cvWXZKTFAxcyIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVldXWkpORGhqV0VWV2FUYzJUbVpLUjFodWNpdG1kVWhpWXpCSmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFUVhoTlJFVXhUMVJCZDFkb1kwNU5hbGwzVDBSQmVFMUVTWGRQVkVGM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZUUjI5cVJGaERhRmwwZG1OQ05ITXZVWEV2S3k5bldsazFlRnBOVDFSeU9EWk9Sa1VLZWtOWWJqUTNhME42Y2s5QmNqQlBabTlPVXlzemREbDRkM0E0YTNCdWFGcFNNV3d5Y1ZGR01VTkViRlJ5YVRSRFUzRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlYxYkVka0NuRkRXSEF4VHpodFkweHlRMjVCT1doaVlqVXdUblpOZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOWFhazVxV21wUmVVNTZaR2hOTWxwcFRucFdiRTFFVW0xUFYwVTFDazVVYXpCWmFsSm9XVzFaTkZwWFVtMVBWRkpyV2tkUmVscEVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMXBxVG1wYWFsRjVUbnBrYUUweVdtbE9lbFpzVFVSU2JVOVhSVFZPVkdzd1dXcFNhRmx0V1RRS1dsZFNiVTlVVW10YVIxRjZXa1JCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMXBxVG1wYWFsRjVUbnBrYUUweVdtbE9lbFpzVFVSU2JVOVhSVFVLVGxSck1GbHFVbWhaYlZrMFdsZFNiVTlVVW10YVIxRjZXa1JCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwZFplbGt5V1RBS1RXcGpNMWxVVG0xWmFtTXhXbFJCTUZwcWJHaFBWRlUxVGtkSk1GbFhTbTFQUjFacldtcHJNRnBIVW10Tk1sRjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWtFeVRucG5OVTlFU1hkTlJHTjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNDNjMHg2WWpoQlFVRlJSQXBCUlZsM1VrRkpaMUJJY0ZKbFNEVm5ZVzlZUkhoeFNGTXhLM3BGVEhCM05rbFVhak5yWWk5U0szQndja3hEY1d3MU5sVkRTVWhNWkdwME1sTnJPR1pYQ2pGbFpFNU5aamRTZFZNNE0xVklja2t3VVV0Vk1IbDFUWEZZVW5CRmVYZENUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRVSjJjRWw1YnpJS1YzSlBObTFvTVdVNU9WTmlPVk14ZERkWWVVRk5jR2RoWXpaVk5XczJPWGRvY0hCeE1EVkVUbVYzTmxSWVQwZExlRmh0ZDJaSFowY3hVVWw0UVV4WGF3cG9hMFpuYW1WM1ExUXhVa1F5VkRkbVl6TlhWVXhKT1dneWJtTmtRVE40V1dOMVZHNU9RVmh1WVVaQmNXcDJXakJRVnpOdU1XTnRaR2czYkVoMFVUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgeVPMBeFta9HOst8VJ7Q/EOzmAcIgYlWGNPEKRpSJkB8CFQC+FhTQ8y6Euo8ZPNd2XQ6EYpQJiRgPMjAyNjA4MDEwMTU5MDBaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDgwMTAxNTkwMFowLwYJKoZIhvcNAQkEMSIEIHuyxp/cP86DljDvclmI0zhPCOqH5XLPXI8nWnaulAYNMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCvxR1pDK5K+PHWS1j7QKeILZmaAY6SorzCV1VSyeC9d1UDUtbinFqMPdL4QQuSKRQCMQDqYniAHmsG+QbgEg1kdskK2UpuB0fPM5gu5Z4OCq2XDzajz6boQKJ+PbyF18BCygo="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"Bl5REPM9ak9j/S37/zZLaAPXQeKc+FSY2BkuRA/WqsM="}, "signature":"MEYCIQDEbmc3tlZRL1yajl2G1lH281TO5ZB4yXApqoNshiYdgAIhALYZaN/mWwFHCXy9ONVSlT5mY7tu4r5xnckg/YvJLP1s"}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrKgAwIBAgIUIFkh9QbRAF/TVaV7J465qynASu0wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDEzMTgzNzExWhcNMjYxMDEzMTg0NzExWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXHwy3PSpmHi3QPuLDuiGgC1gCHG1XN7uIHb05UZNjr3s7EJ6cLy4VSCiyN6539W4ORgfXuRg5FXhiEWpxc++IaOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChjYWZlOGQ1NDM0MGI2YTJlMDQ2NmExM2VmNjA5ODZkMDUxOTNmOWNiMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChjYWZlOGQ1NDM0MGI2YTJlMDQ2NmExM2VmNjA5ODZkMDUxOTNmOWNiMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChjYWZlOGQ1NDM0MGI2YTJlMDQ2NmExM2VmNjA5ODZkMDUxOTNmOWNiMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoY2FmZThkNTQzNDBiNmEyZTA0NjZhMTNlZjYwOTg2ZDA1MTkzZjljYjAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zODQ0NzYwODE1MC9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhNo3kkgAABAMARzBFAiAhSPdVqUxxoGVcQRn6sB4V1pSPOln+vI2j51sOPGtWSQIhAPRcgpC+d4uUPvK+Of07hTy1leJ6twxTNWDR70gJZSIoMAoGCCqGSM49BAMDA2kAMGYCMQDpGrNV0B990Z5S5vhKSkUzfRwUDaEs+1veTfwlUXSXqnEPIS8kW0mzkgwIpYX0xGUCMQDqUTiV7ojwkOepi5aVURKm86/E5Frx5bnwSaSkZ3Nlp5QzJ8Pw4/vi6fBTYxrr1Nk="},"tlogEntries":[{"logIndex":"3245683659","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1791916631","inclusionPromise":{"signedEntryTimestamp":"MEUCIFfYECeOihBdsDNuAT0NxsiTS2Gc1mc2wddFlQ36DitoAiEA0SesIAyZeHjOqAv+xmdsKmDcAPzhVYjMYAaQh19+Mng="},"inclusionProof":{"logIndex":"3123779397","rootHash":"xZBjtmNRSDMJztWo1mFACvuHRQ2FmgtYCQtixE4rqD0=","treeSize":"3123779400","hashes":["8xNmtHuGOZ2fUJxdEnKxI04pMyBHGqKMJ4J6AEzyUZo=","MCVzt1Z5Zkc5oi/kE047VNmfObIQNMc8dm5FqPZ6EYY=","KWtsO+7CIToBADmQVOPlAV7Nd/aYLdzv6wPPuz964PQ=","qJ/5m/1+W9csWxv0b+3Zt8Qu7I/FAEW+S0U6Q4aPoqQ=","4HGmzuueK2gUiIlvG41HBwRbf2PzZKmVhQACsxJkjac=","Yyz4oSOafpKytFIImuUnYy4fYuC7gFE3NZTmGSYCLYM=","NJdYww9CytjKhJEhPYmjJka1JynsX0epQ36E8iE3bBU=","w8GHB0rGyCddAbcGoMYGKGD47C4B5+THBe6hqWHWnIM=","OfnMyFbX0aIQFac+OGdwkhE+8tHdlXzjyMQpTMUsBIQ=","BxH70kWpa653eIhftJ+Xn3oIeDX99Uhe+yLq/I+F4KM=","WBnCpmPsm2ENKXQ7ULpLhRp7NUtq0/FBhfeohtWPKZ8=","wk2tYV/zs2FUIlhL9YQeUw8UqKbqhapvz1h7jtdeQWw=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3123779400\nxZBjtmNRSDMJztWo1mFACvuHRQ2FmgtYCQtixE4rqD0=\n\n— rekor.sigstore.dev wNI9ajBFAiEA2Z1O3bclRWR3tiiivYmF0vBQi7XxJIBrL0r+8YK2luwCIExGpztUeUtphMKXToINO06jj5wVGT2hOd2SsIDiRJyG\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4YzZmMDI1OGUwN2Y0MDRkYjM4MDdlYTU3ZDQ1OTZjYmU0ZDQyZjNjMmRlMzRkZDQyZjNlMmFkZDllZGE3OWY1In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRnhzZlcza21iejBzUXRUaWxvLzdoRzYyNnN0Z0FTREVzUXV2TTdZQU90WUFpQTJqSCtGcUljQ01PSWRDbnhsZ0VhTU5ZMmFFeEJJTnhLV1hLMXNraUxEbEE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KTFowRjNTVUpCWjBsVlNVWnJhRGxSWWxKQlJpOVVWbUZXTjBvME5qVnhlVzVCVTNVd2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlhwTlZHZDZUbnBGZUZkb1kwNU5hbGw0VFVSRmVrMVVaekJPZWtWNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZZU0hkNU0xQlRjRzFJYVROUlVIVk1SSFZwUjJkRE1XZERTRWN4V0U0M2RVbElZakFLTlZWYVRtcHlNM00zUlVvMlkweDVORlpUUTJsNVRqWTFNemxYTkU5U1oyWllkVkpuTlVaWWFHbEZWM0I0WXlzclNXRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmhxV1ZkYWJBcFBSMUV4VGtSTk1FMUhTVEpaVkVwc1RVUlJNazV0UlhoTk1sWnRUbXBCTlU5RVdtdE5SRlY0VDFST2JVOVhUbWxOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUdwWlYxcHNUMGRSTVU1RVRUQk5SMGt5Q2xsVVNteE5SRkV5VG0xRmVFMHlWbTFPYWtFMVQwUmFhMDFFVlhoUFZFNXRUMWRPYVUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUdwWlYxcHNDazlIVVRGT1JFMHdUVWRKTWxsVVNteE5SRkV5VG0xRmVFMHlWbTFPYWtFMVQwUmFhMDFFVlhoUFZFNXRUMWRPYVUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlaTWtadFdsUm9hMDVVVVhwT1JFSnBUbTFGZVZwVVFUQk9hbHBvVFZST2JGcHFXWGRQVkdjeVdrUkJNVTFVYTNvS1dtcHNhbGxxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQwUlJNRTU2V1hkUFJFVXhUVU01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVG04emEydG5RVUZDUVUxQlVucENSa0ZwUVdoVFVHUldjVlY0ZUc5SFZtTlJVbTQyYzBJMFZqRndVMUJQYkc0cmRra3lhZ28xTVhOUFVFZDBWMU5SU1doQlVGSmpaM0JESzJRMGRWVlFka3NyVDJZd04yaFVlVEZzWlVvMmRIZDRWRTVYUkZJM01HZEtXbE5KYjAxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKclFVMUhXVU5OVVVSd1IzSk9WakJDT1Rrd1dqVlROWFpvUzFOclZYcG1VbmRWUkdGRmN5c3hkbVZVWm5kc1ZWaFRXSEZ1UlZBS1NWTTRhMWN3YlhwclozZEpjRmxZTUhoSFZVTk5VVVJ4VlZScFZqZHZhbmRyVDJWd2FUVmhWbFZTUzIwNE5pOUZOVVp5ZURWaWJuZFRZVk5yV2pOT2JBcHdOVkY2U2poUWR6UXZkbWsyWmtKVVdYaHljakZPYXowS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgfVl8qCV32ugvVUM9N9uo03SnZJDOqIaqH/WOpSOn1vYCFGyJZHLdT3/gLeyv4dRDHYtbPYjAGA8yMDI2MTAxMzE4MzcxMVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDEzMTgzNzExWjAvBgkqhkiG9w0BCQQxIgQgE5tOov5DszI3bIJpXZ0o2auzSVInVnva1CdguVwI+B4wgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwBsabhgNO3C8jEYoeuQSAd/qIKg2UTewa08MX1sG3WlODqI7UIyFmnb0m6GOoSJhDAjEAk41Kmw+/15WU+UN52KJK254ZyJSjn74pHLpc39g7mP+bEurNqs5Bn+uKpOa934ph"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"jG8CWOB/QE2zgH6lfUWWy+TULzwt403ULz4q3Z7aefU="},"signature":"MEQCIFxsfW3kmbz0sQtTilo/7hG626stgASDEsQuvM7YAOtYAiA2jH+FqIcCMOIdCnxlgEaMNY2aExBINxKWXK1skiLDlA=="}}
|
build/torch-cuda/trimul_with_residual.py
CHANGED
|
@@ -76,8 +76,10 @@ def _gated_gemm_with_residual_kernel(
|
|
| 76 |
M,
|
| 77 |
N,
|
| 78 |
K,
|
| 79 |
-
|
| 80 |
-
|
|
|
|
|
|
|
| 81 |
TILE_M: tl.constexpr,
|
| 82 |
TILE_N: tl.constexpr,
|
| 83 |
TILE_K: tl.constexpr,
|
|
@@ -215,8 +217,8 @@ def _gated_gemm_with_residual_backward_kernel(
|
|
| 215 |
M,
|
| 216 |
N,
|
| 217 |
K,
|
| 218 |
-
STRIDE_B
|
| 219 |
-
N_COL
|
| 220 |
TILE_M: tl.constexpr,
|
| 221 |
TILE_N: tl.constexpr,
|
| 222 |
TILE_K: tl.constexpr,
|
|
@@ -531,7 +533,6 @@ def _gated_gemm_with_residual(
|
|
| 531 |
)
|
| 532 |
|
| 533 |
|
| 534 |
-
@torch._dynamo.disable
|
| 535 |
def triangle_multiplicative_update_with_residual(
|
| 536 |
pair: torch.Tensor,
|
| 537 |
direction: str,
|
|
|
|
| 76 |
M,
|
| 77 |
N,
|
| 78 |
K,
|
| 79 |
+
# Runtime args, not constexpr: both scale with sequence length, so constexpr
|
| 80 |
+
# would recompile the kernel (and torch.compile the graph) per distinct L.
|
| 81 |
+
STRIDE_B, # = N_ROW * N_COL (for decoding b from m)
|
| 82 |
+
N_COL, # = L_col (for decoding j from m)
|
| 83 |
TILE_M: tl.constexpr,
|
| 84 |
TILE_N: tl.constexpr,
|
| 85 |
TILE_K: tl.constexpr,
|
|
|
|
| 217 |
M,
|
| 218 |
N,
|
| 219 |
K,
|
| 220 |
+
STRIDE_B, # runtime, not constexpr: see the forward kernel
|
| 221 |
+
N_COL,
|
| 222 |
TILE_M: tl.constexpr,
|
| 223 |
TILE_N: tl.constexpr,
|
| 224 |
TILE_K: tl.constexpr,
|
|
|
|
| 533 |
)
|
| 534 |
|
| 535 |
|
|
|
|
| 536 |
def triangle_multiplicative_update_with_residual(
|
| 537 |
pair: torch.Tensor,
|
| 538 |
direction: str,
|