kernels-bot commited on
Commit
fecb9cb
·
verified ·
1 Parent(s): eb245f1

Uploaded using `kernel-builder`.

Browse files
Files changed (24) hide show
  1. build/torch-stable-abi210-cu126-x86_64-linux/__init__.py +23 -0
  2. build/torch-stable-abi210-cu126-x86_64-linux/_custom_ops.py +173 -0
  3. build/torch-stable-abi210-cu126-x86_64-linux/_ops.py +9 -0
  4. build/torch-stable-abi210-cu126-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so +3 -0
  5. build/torch-stable-abi210-cu126-x86_64-linux/_private_for_testing.py +7 -0
  6. build/torch-stable-abi210-cu126-x86_64-linux/metadata.json +44 -0
  7. build/torch-stable-abi210-cu126-x86_64-linux/metadata.json.sigstore +1 -0
  8. build/torch-stable-abi210-cu126-x86_64-linux/platforms.py +92 -0
  9. build/torch-stable-abi210-cu130-x86_64-linux/__init__.py +23 -0
  10. build/torch-stable-abi210-cu130-x86_64-linux/_custom_ops.py +173 -0
  11. build/torch-stable-abi210-cu130-x86_64-linux/_ops.py +9 -0
  12. build/torch-stable-abi210-cu130-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so +3 -0
  13. build/torch-stable-abi210-cu130-x86_64-linux/_private_for_testing.py +7 -0
  14. build/torch-stable-abi210-cu130-x86_64-linux/metadata.json +47 -0
  15. build/torch-stable-abi210-cu130-x86_64-linux/metadata.json.sigstore +1 -0
  16. build/torch-stable-abi210-cu130-x86_64-linux/platforms.py +92 -0
  17. build/torch-stable-abi210-cu132-x86_64-linux/__init__.py +23 -0
  18. build/torch-stable-abi210-cu132-x86_64-linux/_custom_ops.py +173 -0
  19. build/torch-stable-abi210-cu132-x86_64-linux/_ops.py +9 -0
  20. build/torch-stable-abi210-cu132-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so +3 -0
  21. build/torch-stable-abi210-cu132-x86_64-linux/_private_for_testing.py +7 -0
  22. build/torch-stable-abi210-cu132-x86_64-linux/metadata.json +47 -0
  23. build/torch-stable-abi210-cu132-x86_64-linux/metadata.json.sigstore +1 -0
  24. build/torch-stable-abi210-cu132-x86_64-linux/platforms.py +92 -0
build/torch-stable-abi210-cu126-x86_64-linux/__init__.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from . import platforms
2
+ from ._custom_ops import (
3
+ convert_fp8,
4
+ copy_blocks,
5
+ paged_attention_v1,
6
+ paged_attention_v2,
7
+ reshape_and_cache,
8
+ reshape_and_cache_flash,
9
+ swap_blocks,
10
+ )
11
+
12
+ from . import _private_for_testing # noqa: F401
13
+
14
+ __all__ = [
15
+ "_private_for_testing",
16
+ "convert_fp8",
17
+ "copy_blocks",
18
+ "paged_attention_v1",
19
+ "paged_attention_v2",
20
+ "reshape_and_cache",
21
+ "reshape_and_cache_flash",
22
+ "swap_blocks",
23
+ ]
build/torch-stable-abi210-cu126-x86_64-linux/_custom_ops.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import List, Optional
2
+
3
+ import torch
4
+
5
+ from ._ops import ops
6
+
7
+
8
+ # page attention ops
9
+ def paged_attention_v1(
10
+ out: torch.Tensor,
11
+ query: torch.Tensor,
12
+ key_cache: torch.Tensor,
13
+ value_cache: torch.Tensor,
14
+ num_kv_heads: int,
15
+ scale: float,
16
+ block_tables: torch.Tensor,
17
+ seq_lens: torch.Tensor,
18
+ block_size: int,
19
+ max_seq_len: int,
20
+ alibi_slopes: Optional[torch.Tensor],
21
+ kv_cache_dtype: str,
22
+ k_scale: float,
23
+ v_scale: float,
24
+ tp_rank: int = 0,
25
+ blocksparse_local_blocks: int = 0,
26
+ blocksparse_vert_stride: int = 0,
27
+ blocksparse_block_size: int = 64,
28
+ blocksparse_head_sliding_step: int = 0,
29
+ ) -> None:
30
+ ops.paged_attention_v1(
31
+ out,
32
+ query,
33
+ key_cache,
34
+ value_cache,
35
+ num_kv_heads,
36
+ scale,
37
+ block_tables,
38
+ seq_lens,
39
+ block_size,
40
+ max_seq_len,
41
+ alibi_slopes,
42
+ kv_cache_dtype,
43
+ k_scale,
44
+ v_scale,
45
+ tp_rank,
46
+ blocksparse_local_blocks,
47
+ blocksparse_vert_stride,
48
+ blocksparse_block_size,
49
+ blocksparse_head_sliding_step,
50
+ )
51
+
52
+
53
+ def paged_attention_v2(
54
+ out: torch.Tensor,
55
+ exp_sum: torch.Tensor,
56
+ max_logits: torch.Tensor,
57
+ tmp_out: torch.Tensor,
58
+ query: torch.Tensor,
59
+ key_cache: torch.Tensor,
60
+ value_cache: torch.Tensor,
61
+ num_kv_heads: int,
62
+ scale: float,
63
+ block_tables: torch.Tensor,
64
+ seq_lens: torch.Tensor,
65
+ block_size: int,
66
+ max_seq_len: int,
67
+ alibi_slopes: Optional[torch.Tensor],
68
+ kv_cache_dtype: str,
69
+ k_scale: float,
70
+ v_scale: float,
71
+ tp_rank: int = 0,
72
+ blocksparse_local_blocks: int = 0,
73
+ blocksparse_vert_stride: int = 0,
74
+ blocksparse_block_size: int = 64,
75
+ blocksparse_head_sliding_step: int = 0,
76
+ ) -> None:
77
+ ops.paged_attention_v2(
78
+ out,
79
+ exp_sum,
80
+ max_logits,
81
+ tmp_out,
82
+ query,
83
+ key_cache,
84
+ value_cache,
85
+ num_kv_heads,
86
+ scale,
87
+ block_tables,
88
+ seq_lens,
89
+ block_size,
90
+ max_seq_len,
91
+ alibi_slopes,
92
+ kv_cache_dtype,
93
+ k_scale,
94
+ v_scale,
95
+ tp_rank,
96
+ blocksparse_local_blocks,
97
+ blocksparse_vert_stride,
98
+ blocksparse_block_size,
99
+ blocksparse_head_sliding_step,
100
+ )
101
+
102
+
103
+ def reshape_and_cache(
104
+ key: torch.Tensor,
105
+ value: torch.Tensor,
106
+ key_cache: torch.Tensor,
107
+ value_cache: torch.Tensor,
108
+ slot_mapping: torch.Tensor,
109
+ kv_cache_dtype: str,
110
+ k_scale: float,
111
+ v_scale: float,
112
+ ) -> None:
113
+ ops.reshape_and_cache(
114
+ key,
115
+ value,
116
+ key_cache,
117
+ value_cache,
118
+ slot_mapping,
119
+ kv_cache_dtype,
120
+ k_scale,
121
+ v_scale,
122
+ )
123
+
124
+
125
+ def reshape_and_cache_flash(
126
+ key: torch.Tensor,
127
+ value: torch.Tensor,
128
+ key_cache: torch.Tensor,
129
+ value_cache: torch.Tensor,
130
+ slot_mapping: torch.Tensor,
131
+ kv_cache_dtype: str,
132
+ k_scale: torch.Tensor,
133
+ v_scale: torch.Tensor,
134
+ ) -> None:
135
+ ops.reshape_and_cache_flash(
136
+ key,
137
+ value,
138
+ key_cache,
139
+ value_cache,
140
+ slot_mapping,
141
+ kv_cache_dtype,
142
+ k_scale,
143
+ v_scale,
144
+ )
145
+
146
+
147
+ def copy_blocks(
148
+ key_caches: List[torch.Tensor],
149
+ value_caches: List[torch.Tensor],
150
+ block_mapping: torch.Tensor,
151
+ ) -> None:
152
+ ops.copy_blocks(key_caches, value_caches, block_mapping)
153
+
154
+
155
+ def swap_blocks(
156
+ src: torch.Tensor, dst: torch.Tensor, block_mapping: torch.Tensor
157
+ ) -> None:
158
+ ops.swap_blocks(src, dst, block_mapping)
159
+
160
+
161
+ def convert_fp8(
162
+ output: torch.Tensor, input: torch.Tensor, scale: float = 1.0, kv_dtype: str = "fp8"
163
+ ) -> None:
164
+ ops.convert_fp8(output, input, scale, kv_dtype)
165
+
166
+
167
+ __all__ = [
168
+ "convert_fp8",
169
+ "paged_attention_v1",
170
+ "paged_attention_v2",
171
+ "reshape_and_cache",
172
+ "copy_blocks",
173
+ ]
build/torch-stable-abi210-cu126-x86_64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _paged_attention_cuda_4b8a7b6
3
+ ops = torch.ops._paged_attention_cuda_4b8a7b6
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_paged_attention_cuda_4b8a7b6::{op_name}"
build/torch-stable-abi210-cu126-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:465ad3baeb4ca55824956916df7fb110d8b4f1251c4cfd1974de808c4f3adcbd
3
+ size 138139456
build/torch-stable-abi210-cu126-x86_64-linux/_private_for_testing.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ """Internal symbols that need to be exposed for the test suite."""
2
+
3
+ from ._ops import ops
4
+
5
+ __all__ = [
6
+ "ops",
7
+ ]
build/torch-stable-abi210-cu126-x86_64-linux/metadata.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "paged-attention",
3
+ "id": "_paged_attention_cuda_4b8a7b6",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "Apache-2.0",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "7.0",
13
+ "7.2",
14
+ "7.5",
15
+ "8.0",
16
+ "8.6",
17
+ "8.7",
18
+ "8.9",
19
+ "9.0+PTX"
20
+ ]
21
+ },
22
+ "digest": {
23
+ "algorithm": "sha256",
24
+ "files": {
25
+ "__init__.py": "iImkWaa9phF1Yo9eaibD+dvh0W3HXLUpMwl9kfaeZ1w=",
26
+ "_custom_ops.py": "tnC6OR7TPhMV+tt8MyUyIH2gDIdxBzHT+1z1NUhA9EE=",
27
+ "_ops.py": "auz+JB60XwCdqM2eFtbS9mdhpZwUcp8BK7SnzHS3bvo=",
28
+ "_paged_attention_cuda_4b8a7b6.abi3.so": "RlrTuutMpVgklWkW33+xENi08SUcTP0ZdN6AjE863L0=",
29
+ "_private_for_testing.py": "7iW8UbcC7nyQDzB1nslnXbLFVq9ceOaiP+VLo6hE/no=",
30
+ "platforms.py": "NeAhENqA8yXHgy3EfkYP1Bkx1n6aStkExV9py7Jvdiw="
31
+ }
32
+ },
33
+ "provenance": {
34
+ "kernel-builder": {
35
+ "version": "0.17.0-dev0",
36
+ "commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
37
+ "dirty": false
38
+ },
39
+ "kernel": {
40
+ "commit": "4b8a7b601eeacbe87d9836605f1c65496dc718b2",
41
+ "dirty": false
42
+ }
43
+ }
44
+ }
build/torch-stable-abi210-cu126-x86_64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"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"}, "tlogEntries":[{"logIndex":"3023417683", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1790791793", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQCC0aSEcqWR2wgYHqW6XJe4Vd6CCFvHueollp6O54DjmgIhAJkzCWRuF/8A2Jb8wgGl/eg3gZImVeHnEvu97KjgPgMW"}, "inclusionProof":{"logIndex":"2901513421", "rootHash":"Cje1CNSsLTFVqQND8soubA+/mNdfQ6vdxWXGgZFzDjA=", "treeSize":"2901513445", "hashes":["GTpOy3S7yRsiSx7WwdxuDzLdWNKSfLA3E++VNZz7hXY=", "PhbhRud0FCcWjgL8ulB1I+esQdl9/x23Gp5u9cQWsHw=", "jbzqg9tt6MgzJ2voxJl1si7zsY3ArVwZxBABMJOIDJ4=", "LZ6Soyje1ENOzylrHhih7vHFmwD61PfsTaC48kRH4r0=", "gzgt/6vGoL6LF4Pxh6QgFP+kYCz/wKOSqBZCY+8ovuM=", "qATM80TyFsxYnov7OUP26kqNsLh06LbSAybZ2oq9084=", "vkbH/F/eR5N8gL64LJYJyMffWLUjvEuVEenaEqhHupw=", "MWwpn86+9kQYOYTwi4UMcQ7UcOmXZh+t43ztShwMynI=", "KkM4t12E/0oDsQUKu2L03FdljDSCr6SMNKcjNHFVwkg=", "DBf+6S2FPBJx6iWymdRRUYRU/lyeflo7HU1q99h8qfo=", "dqgK4q43/y6aLFT0j3OJDK0/wP3bB1DcjtXt+M9ZDgA=", "YI8EgjQmA38CJT2O2AulXkUFuygfBUvKto28k1J1g2U=", "gjP07uTk7mDQZEVMqe6TZetGLEhOhmmEiWzeOyme2rk=", "qOJyrwx/VzDfrHHCPrmyyJlJlVTT2lwb0jUshbhlF6Q=", "R65BPV8zugTBA3eQG4LqBT4kXwiJbUY1GYPdd4glLTg=", "AqDykV6o5ERshtWsKq2KL+g91mURajZ2DQDbOsXvZ3I=", "4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=", "ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2901513445\nCje1CNSsLTFVqQND8soubA+/mNdfQ6vdxWXGgZFzDjA=\n\n— rekor.sigstore.dev wNI9ajBFAiBAGZ98zWjd0U/CKIxwWmMnlA9WmaveUzTYiHAymBIs6wIhAONncJaEMHceBhuZnWeUHbO5EnrpM7p3rGeZkpb3uA/d\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxNDVmNWRmYzhlZTU4ZjM0NDE0OGMzMDI1MTk1Y2JlOTYwNzJhYWRmYzlkNjBhZDQ5YzA0OGYwYjIxMjI4MWJlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUMvTnNmZm1MZTR2M1VMRmhQMHFWMmNpU05FQjR6WTlTWDFnTFVIdCtVeGxnSWdUblZOUnpCRFRJbXZqbzgwbHVyZjdkZzNGNWkrN0V2Y2tBeDl5b3N2d1FnPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5STFowRjNTVUpCWjBsVlZUVXhTVzVXT0V0VVZFSjRkRmxpU1hoT1pUWkxZVUY1VmxkM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVVFhkTlZHZDNUMVJWZVZkb1kwNU5hbGwzVDFSTmQwMVVaM2hQVkZWNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYzWkhWYVpWRkdPSHB4WlhkNU9IVk5VV3d4U0U1NGNqaHdaVlU0WVVGWE4yNHpaSEVLYVhWeE5ubFNjbkpNZVNzemRuUTBOeXR0TjBwaFZ6SkNWR2hYVnpoRWVrazNSR3hMZGk5R1RYVkljbGRPUkRKNlNqWlBRMEptUlhkbloxaDBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZIVjNOUENqVmxaRVpQWTBKUE9XNVRkVTQxUzJsdVJIbDNjM3BOZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SMGswV1ZSa2FVNXFRWGhhVjFab1dUSktiRTlFWkd0UFZHZDZDazVxV1hkT1YxbDRXWHBaTVU1RWF6SmFSMDB6VFZSb2FVMXFRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM3BPYWxsM1RsZFplRmw2V1RFS1RrUnJNbHBIVFROTlZHaHBUV3BCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM29LVG1wWmQwNVhXWGhaZWxreFRrUnJNbHBIVFROTlZHaHBUV3BCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlNhVTlIUlRNS1dXcFpkMDFYVm14WlYwNXBXbFJuTTFwRWF6Uk5lbGt5VFVSV2JVMVhUVEpPVkZFMVRtMVNhazU2UlRSWmFrbDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxrelRsUk5lRTE2VlROUFZGVjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwZDFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT1VKSWMwRUtaVkZDTTBGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOVFUME5QVkdOQlFVRlJSQXBCUldkM1VtZEphRUZMT0RSRmFtOHZUSE4yVWt4eFJXWlZWVE52T0haaU5FTkRkRzR6SzNsUVZqY3dWbHBxVFZveFJIb3dRV2xGUVhRM1RsZEhVVkF3Q2xwYVMwazBjblZrYlVNMGMyUXdkR0l5TUdkdFVGQnFSRFEzZEhKdmIwOXFZVnBaZDBObldVbExiMXBKZW1vd1JVRjNUVVJoUVVGM1dsRkplRUZLZWxjS1ltZGtSV04xZURaa1V5OVJNRFpVV0ZONFdVMUlkVXhpWVZCWFpIcENSRzlTVldOU1ZFaGFSVlJIVW0xVFoxSkZVMUJQVTJ0RGVFOU9jelY2YW5kSmR3cFZUVXRJYm0xbGNGVlNia1owWkc1emVrSlpNVE5CVWpWTlREZHJWV1JtY1U1c01rTldkalk0VGk5TVZYRkRRMmhUWlVSbmJXZHlNamt3YmxoT1F6SjFDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg5TmWhH+NPH413y7pNJx/Igq00GXzTqBAQpXjiSEhGvgCFQDCt+UZYr6/BpAZ8KMZakfDxMGN6hgPMjAyNjA5MzAxODA5NTNaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkzMDE4MDk1M1owLwYJKoZIhvcNAQkEMSIEIEG6QS7Ygm2oZ4jxj1XgCzBM98JbRB121pPeu4tThqAIMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCzZW4IiUbJdFeM5q8zh3YLyGLTPclfYT+hoIYG1uOH7ITNK6jmcY6nPMGPZW9wS9ICMQCTXGUIo/BcLCpzq1mz9l2xpfTfEtGtvOg9rUYH98JK4vqcadEQN4/Eo2lgYVSYoOY="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"FF9d/I7ljzRBSMMCUZXL6WByqt/J1grUnASPCyEigb4="}, "signature":"MEUCIQC/NsffmLe4v3ULFhP0qV2ciSNEB4zY9SX1gLUHt+UxlgIgTnVNRzBDTImvjo80lurf7dg3F5i+7EvckAx9yosvwQg="}}
build/torch-stable-abi210-cu126-x86_64-linux/platforms.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+ from abc import ABC, abstractmethod
4
+ from functools import lru_cache, wraps
5
+ from typing import Callable, ParamSpec, TypeVar
6
+
7
+ import numpy as np
8
+ import torch
9
+
10
+ IS_ROCM = torch.version.hip is not None
11
+ IS_MPS = torch.backends.mps.is_available()
12
+
13
+
14
+ class Platform(ABC):
15
+ @classmethod
16
+ def seed_everything(cls, seed: int) -> None:
17
+ """
18
+ Set the seed of each random module.
19
+ `torch.manual_seed` will set seed on all devices.
20
+
21
+ Loosely based on: https://github.com/Lightning-AI/pytorch-lightning/blob/2.4.0/src/lightning/fabric/utilities/seed.py#L20
22
+ """
23
+ random.seed(seed)
24
+ np.random.seed(seed)
25
+ torch.manual_seed(seed)
26
+
27
+ @abstractmethod
28
+ def get_device_name(self, device_id: int = 0) -> str: ...
29
+
30
+ @abstractmethod
31
+ def is_cuda(self) -> bool: ...
32
+
33
+ @abstractmethod
34
+ def is_rocm(self) -> bool: ...
35
+
36
+ @abstractmethod
37
+ def is_mps(self) -> bool: ...
38
+
39
+
40
+ class CudaPlatform(Platform):
41
+ @classmethod
42
+ @lru_cache(maxsize=8)
43
+ def get_device_name(cls, device_id: int = 0) -> str:
44
+ return torch.cuda.get_device_name(0)
45
+
46
+ def is_cuda(self) -> bool:
47
+ return True
48
+
49
+ def is_rocm(self) -> bool:
50
+ return False
51
+
52
+ def is_mps(self) -> bool:
53
+ return False
54
+
55
+
56
+ class RocmPlatform(Platform):
57
+ @classmethod
58
+ @lru_cache(maxsize=8)
59
+ def get_device_name(cls, device_id: int = 0) -> str:
60
+ return torch.cuda.get_device_name(device_id)
61
+
62
+ def is_cuda(self) -> bool:
63
+ return False
64
+
65
+ def is_rocm(self) -> bool:
66
+ return True
67
+
68
+ def is_mps(self) -> bool:
69
+ return False
70
+
71
+
72
+ class MpsPlatform(Platform):
73
+ @classmethod
74
+ @lru_cache(maxsize=8)
75
+ def get_device_name(cls, device_id: int = 0) -> str:
76
+ return torch.cuda.get_device_name(device_id)
77
+
78
+ def is_cuda(self) -> bool:
79
+ return False
80
+
81
+ def is_rocm(self) -> bool:
82
+ return False
83
+
84
+ def is_mps(self) -> bool:
85
+ return True
86
+
87
+ current_platform = (
88
+ RocmPlatform() if IS_ROCM else
89
+ MpsPlatform() if IS_MPS else
90
+ CudaPlatform() if torch.cuda.is_available() else
91
+ None
92
+ )
build/torch-stable-abi210-cu130-x86_64-linux/__init__.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from . import platforms
2
+ from ._custom_ops import (
3
+ convert_fp8,
4
+ copy_blocks,
5
+ paged_attention_v1,
6
+ paged_attention_v2,
7
+ reshape_and_cache,
8
+ reshape_and_cache_flash,
9
+ swap_blocks,
10
+ )
11
+
12
+ from . import _private_for_testing # noqa: F401
13
+
14
+ __all__ = [
15
+ "_private_for_testing",
16
+ "convert_fp8",
17
+ "copy_blocks",
18
+ "paged_attention_v1",
19
+ "paged_attention_v2",
20
+ "reshape_and_cache",
21
+ "reshape_and_cache_flash",
22
+ "swap_blocks",
23
+ ]
build/torch-stable-abi210-cu130-x86_64-linux/_custom_ops.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import List, Optional
2
+
3
+ import torch
4
+
5
+ from ._ops import ops
6
+
7
+
8
+ # page attention ops
9
+ def paged_attention_v1(
10
+ out: torch.Tensor,
11
+ query: torch.Tensor,
12
+ key_cache: torch.Tensor,
13
+ value_cache: torch.Tensor,
14
+ num_kv_heads: int,
15
+ scale: float,
16
+ block_tables: torch.Tensor,
17
+ seq_lens: torch.Tensor,
18
+ block_size: int,
19
+ max_seq_len: int,
20
+ alibi_slopes: Optional[torch.Tensor],
21
+ kv_cache_dtype: str,
22
+ k_scale: float,
23
+ v_scale: float,
24
+ tp_rank: int = 0,
25
+ blocksparse_local_blocks: int = 0,
26
+ blocksparse_vert_stride: int = 0,
27
+ blocksparse_block_size: int = 64,
28
+ blocksparse_head_sliding_step: int = 0,
29
+ ) -> None:
30
+ ops.paged_attention_v1(
31
+ out,
32
+ query,
33
+ key_cache,
34
+ value_cache,
35
+ num_kv_heads,
36
+ scale,
37
+ block_tables,
38
+ seq_lens,
39
+ block_size,
40
+ max_seq_len,
41
+ alibi_slopes,
42
+ kv_cache_dtype,
43
+ k_scale,
44
+ v_scale,
45
+ tp_rank,
46
+ blocksparse_local_blocks,
47
+ blocksparse_vert_stride,
48
+ blocksparse_block_size,
49
+ blocksparse_head_sliding_step,
50
+ )
51
+
52
+
53
+ def paged_attention_v2(
54
+ out: torch.Tensor,
55
+ exp_sum: torch.Tensor,
56
+ max_logits: torch.Tensor,
57
+ tmp_out: torch.Tensor,
58
+ query: torch.Tensor,
59
+ key_cache: torch.Tensor,
60
+ value_cache: torch.Tensor,
61
+ num_kv_heads: int,
62
+ scale: float,
63
+ block_tables: torch.Tensor,
64
+ seq_lens: torch.Tensor,
65
+ block_size: int,
66
+ max_seq_len: int,
67
+ alibi_slopes: Optional[torch.Tensor],
68
+ kv_cache_dtype: str,
69
+ k_scale: float,
70
+ v_scale: float,
71
+ tp_rank: int = 0,
72
+ blocksparse_local_blocks: int = 0,
73
+ blocksparse_vert_stride: int = 0,
74
+ blocksparse_block_size: int = 64,
75
+ blocksparse_head_sliding_step: int = 0,
76
+ ) -> None:
77
+ ops.paged_attention_v2(
78
+ out,
79
+ exp_sum,
80
+ max_logits,
81
+ tmp_out,
82
+ query,
83
+ key_cache,
84
+ value_cache,
85
+ num_kv_heads,
86
+ scale,
87
+ block_tables,
88
+ seq_lens,
89
+ block_size,
90
+ max_seq_len,
91
+ alibi_slopes,
92
+ kv_cache_dtype,
93
+ k_scale,
94
+ v_scale,
95
+ tp_rank,
96
+ blocksparse_local_blocks,
97
+ blocksparse_vert_stride,
98
+ blocksparse_block_size,
99
+ blocksparse_head_sliding_step,
100
+ )
101
+
102
+
103
+ def reshape_and_cache(
104
+ key: torch.Tensor,
105
+ value: torch.Tensor,
106
+ key_cache: torch.Tensor,
107
+ value_cache: torch.Tensor,
108
+ slot_mapping: torch.Tensor,
109
+ kv_cache_dtype: str,
110
+ k_scale: float,
111
+ v_scale: float,
112
+ ) -> None:
113
+ ops.reshape_and_cache(
114
+ key,
115
+ value,
116
+ key_cache,
117
+ value_cache,
118
+ slot_mapping,
119
+ kv_cache_dtype,
120
+ k_scale,
121
+ v_scale,
122
+ )
123
+
124
+
125
+ def reshape_and_cache_flash(
126
+ key: torch.Tensor,
127
+ value: torch.Tensor,
128
+ key_cache: torch.Tensor,
129
+ value_cache: torch.Tensor,
130
+ slot_mapping: torch.Tensor,
131
+ kv_cache_dtype: str,
132
+ k_scale: torch.Tensor,
133
+ v_scale: torch.Tensor,
134
+ ) -> None:
135
+ ops.reshape_and_cache_flash(
136
+ key,
137
+ value,
138
+ key_cache,
139
+ value_cache,
140
+ slot_mapping,
141
+ kv_cache_dtype,
142
+ k_scale,
143
+ v_scale,
144
+ )
145
+
146
+
147
+ def copy_blocks(
148
+ key_caches: List[torch.Tensor],
149
+ value_caches: List[torch.Tensor],
150
+ block_mapping: torch.Tensor,
151
+ ) -> None:
152
+ ops.copy_blocks(key_caches, value_caches, block_mapping)
153
+
154
+
155
+ def swap_blocks(
156
+ src: torch.Tensor, dst: torch.Tensor, block_mapping: torch.Tensor
157
+ ) -> None:
158
+ ops.swap_blocks(src, dst, block_mapping)
159
+
160
+
161
+ def convert_fp8(
162
+ output: torch.Tensor, input: torch.Tensor, scale: float = 1.0, kv_dtype: str = "fp8"
163
+ ) -> None:
164
+ ops.convert_fp8(output, input, scale, kv_dtype)
165
+
166
+
167
+ __all__ = [
168
+ "convert_fp8",
169
+ "paged_attention_v1",
170
+ "paged_attention_v2",
171
+ "reshape_and_cache",
172
+ "copy_blocks",
173
+ ]
build/torch-stable-abi210-cu130-x86_64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _paged_attention_cuda_4b8a7b6
3
+ ops = torch.ops._paged_attention_cuda_4b8a7b6
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_paged_attention_cuda_4b8a7b6::{op_name}"
build/torch-stable-abi210-cu130-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8cb6fec1a2521eb4cee629e724ef2ba38ed03286f6d82c25a8b06a9098a27ccc
3
+ size 97624248
build/torch-stable-abi210-cu130-x86_64-linux/_private_for_testing.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ """Internal symbols that need to be exposed for the test suite."""
2
+
3
+ from ._ops import ops
4
+
5
+ __all__ = [
6
+ "ops",
7
+ ]
build/torch-stable-abi210-cu130-x86_64-linux/metadata.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "paged-attention",
3
+ "id": "_paged_attention_cuda_4b8a7b6",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "Apache-2.0",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "10.0",
13
+ "10.3",
14
+ "11.0",
15
+ "12.0",
16
+ "12.1+PTX",
17
+ "7.5",
18
+ "8.0",
19
+ "8.6",
20
+ "8.7",
21
+ "8.9",
22
+ "9.0"
23
+ ]
24
+ },
25
+ "digest": {
26
+ "algorithm": "sha256",
27
+ "files": {
28
+ "__init__.py": "iImkWaa9phF1Yo9eaibD+dvh0W3HXLUpMwl9kfaeZ1w=",
29
+ "_custom_ops.py": "tnC6OR7TPhMV+tt8MyUyIH2gDIdxBzHT+1z1NUhA9EE=",
30
+ "_ops.py": "auz+JB60XwCdqM2eFtbS9mdhpZwUcp8BK7SnzHS3bvo=",
31
+ "_paged_attention_cuda_4b8a7b6.abi3.so": "jLb+waJSHrTO5innJO8ro47QMob22CwlqLBqkJiifMw=",
32
+ "_private_for_testing.py": "7iW8UbcC7nyQDzB1nslnXbLFVq9ceOaiP+VLo6hE/no=",
33
+ "platforms.py": "NeAhENqA8yXHgy3EfkYP1Bkx1n6aStkExV9py7Jvdiw="
34
+ }
35
+ },
36
+ "provenance": {
37
+ "kernel-builder": {
38
+ "version": "0.17.0-dev0",
39
+ "commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
40
+ "dirty": false
41
+ },
42
+ "kernel": {
43
+ "commit": "4b8a7b601eeacbe87d9836605f1c65496dc718b2",
44
+ "dirty": false
45
+ }
46
+ }
47
+ }
build/torch-stable-abi210-cu130-x86_64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"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"}, "tlogEntries":[{"logIndex":"3023417810", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1790791794", "inclusionPromise":{"signedEntryTimestamp":"MEUCIQDpUqWLcq0ShsJTrIvrW+GkUwqR+IkDG6DY8P86jP+fGwIgTdGWmp0tgSHUPSf2H4/OZZsA1iddH64JGZPznsqUEUM="}, "inclusionProof":{"logIndex":"2901513548", "rootHash":"2RtGLQph71rmxmf7n4kWK1EfThplm4uvxx/C51urdWg=", "treeSize":"2901513564", "hashes":["WqoPfGjnU2ITHmi8ehwhFifOiLviRPVkwFT1jkAYInA=", "YzOv4i1LXxCG0L86296oIOfmhrJGMUYXt7ls/dK8h9Q=", "qctkt/sGFTyKgLX6OoRguSt6Z73AVBs5Fhv4/OL8kfs=", "6kYFNgbbyBVEqSYWhHZ3ZVWgBwHzhcJeTcpsazuKnCI=", "qlT3ZaltTYW8sjF9x1Z0TgP7slRzmu1wfYVkZe+T9FU=", "rCcezIKlxyzpk9kIgOvmt9OCO9CbX7V3OLGABpMWY+c=", "Y/b1UVQEeF4rBAS3K1Xr5I4NuBlqkZyyiobLBU4NxTM=", "KkM4t12E/0oDsQUKu2L03FdljDSCr6SMNKcjNHFVwkg=", "DBf+6S2FPBJx6iWymdRRUYRU/lyeflo7HU1q99h8qfo=", "dqgK4q43/y6aLFT0j3OJDK0/wP3bB1DcjtXt+M9ZDgA=", "YI8EgjQmA38CJT2O2AulXkUFuygfBUvKto28k1J1g2U=", "gjP07uTk7mDQZEVMqe6TZetGLEhOhmmEiWzeOyme2rk=", "qOJyrwx/VzDfrHHCPrmyyJlJlVTT2lwb0jUshbhlF6Q=", "R65BPV8zugTBA3eQG4LqBT4kXwiJbUY1GYPdd4glLTg=", "AqDykV6o5ERshtWsKq2KL+g91mURajZ2DQDbOsXvZ3I=", "4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=", "ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2901513564\n2RtGLQph71rmxmf7n4kWK1EfThplm4uvxx/C51urdWg=\n\n— rekor.sigstore.dev wNI9ajBGAiEApOqBRioqDHFh5n8e9Q3nPwKFGAdU0d66v2ixwPMNorcCIQC0ilq3y3ml1FYFOtan2rw3omcBZlX02FYPtvakxlxE9w==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJmODkzODljMTExMGEwNWE1NGU5ODI4ODZjYTc5YmMzMzE0ZGVkNWU4NmFjM2E5YTdlOWIzMzQ0MmY5MDg5NzZjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUN3ZXdLY1AyYlo4UzV5SURSeStmcmhYcjdsTWpzWDI2V0dpSXFjSjFxZUtnSWdDRzNRSHlVNTNqM3ZKdFZDamlYYU5NMTV5VGw5dlRYQ0hKMlRRTUMyQXlFPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVldGTmlibVJIU1RKTVVuY3hjSEpvU2tVek1YRmlUMUpuUVhnMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVVFhkTlZHZDNUMVJWZWxkb1kwNU5hbGwzVDFSTmQwMVVaM2hQVkZWNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYzUW1seVRUQkRaM2QxVXpKb1JYVjNkVkpZZFU1bmFHcHJOa29yZUhCMlNGcEhORThLUlU5M05GUk5jWEpYUmpCck5tUlZSbVIyY3pKb1lVeGtXak40Wld4RWVXaFRWWE51U1ZSWVZXbHhaRzVoV0UxRk9YRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZNYjAxbUNrdGhSMWxwWW1aU2NqUnRWWE5KUldJMGQwOXhVbTVKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SMGswV1ZSa2FVNXFRWGhhVjFab1dUSktiRTlFWkd0UFZHZDZDazVxV1hkT1YxbDRXWHBaTVU1RWF6SmFSMDB6VFZSb2FVMXFRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM3BPYWxsM1RsZFplRmw2V1RFS1RrUnJNbHBIVFROTlZHaHBUV3BCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM29LVG1wWmQwNVhXWGhaZWxreFRrUnJNbHBIVFROTlZHaHBUV3BCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlNhVTlIUlRNS1dXcFpkMDFYVm14WlYwNXBXbFJuTTFwRWF6Uk5lbGt5VFVSV2JVMVhUVEpPVkZFMVRtMVNhazU2UlRSWmFrbDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxrelRsUk5lRTE2VlROUFZGVjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOVFUME5RVVd0QlFVRlJSQXBCUlZsM1VrRkpaMlZRYlVKbFpHdGtOMU4yWmxrd1RHZEJXVGN6Y2tkVldVTlBRV2RhVUhCVFp6UnVjR1UxYldkMlIwRkRTVU5IYlhaV1FTdFRTVTloQ2tsUmNVOTFhbVpDZEhWdVpYVmFUa1F4T1dGTmFtTkNTV2hKVGs5amJtWkVUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRWRkVhbGcwVjBJS2NFaG9TRWhrVG5wdlYzWTRRMGR1WnpKdVNUUkxLM1p5TTNkTU5HZENUSFJ4UlZoYWQyaHlPR3BRUldSQk0zRjFaVkJoVFd3NVJHZGhNV3REVFVKRVF3cHZVekZWUzBSVFIxZHJUbFZHWlhwR2VrSlhPRUZTUjJkR1NURmtNWE5wY0hkSFRYZDJVbHBoTUhneFpsSlRZME5IU1hOYVFsTkZZbEV2S3pSd1p6MDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg7hwUQiVNMdqDJ4LVmvuIVrRLtGkXoy/4GLU1714lyWgCFDs9KbBVjFcUi66MSy7sbjVmWUy0GA8yMDI2MDkzMDE4MDk1NFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwOTMwMTgwOTU0WjAvBgkqhkiG9w0BCQQxIgQgcdKLoIDwnquqYBia+VJeyLrEOSoTmY7DEJ345eNxDaYwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxANLAnGhn9luhiOB5wYxsJkI1Xzl6BGdmo2lkW+r5eDaV+HOkgchZodVY3hMcboAr3wIxAOZgBmhh7XUqvex1e1zs1IdfeSURjS0hgEK4XVAw4blMiM1RIzo9NSWdd291eOzoSA=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"+JOJwREKBaVOmCiGynm8MxTe1ehqw6mn6bM0QvkIl2w="}, "signature":"MEUCIQCwewKcP2bZ8S5yIDRy+frhXr7lMjsX26WGiIqcJ1qeKgIgCG3QHyU53j3vJtVCjiXaNM15yTl9vTXCHJ2TQMC2AyE="}}
build/torch-stable-abi210-cu130-x86_64-linux/platforms.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+ from abc import ABC, abstractmethod
4
+ from functools import lru_cache, wraps
5
+ from typing import Callable, ParamSpec, TypeVar
6
+
7
+ import numpy as np
8
+ import torch
9
+
10
+ IS_ROCM = torch.version.hip is not None
11
+ IS_MPS = torch.backends.mps.is_available()
12
+
13
+
14
+ class Platform(ABC):
15
+ @classmethod
16
+ def seed_everything(cls, seed: int) -> None:
17
+ """
18
+ Set the seed of each random module.
19
+ `torch.manual_seed` will set seed on all devices.
20
+
21
+ Loosely based on: https://github.com/Lightning-AI/pytorch-lightning/blob/2.4.0/src/lightning/fabric/utilities/seed.py#L20
22
+ """
23
+ random.seed(seed)
24
+ np.random.seed(seed)
25
+ torch.manual_seed(seed)
26
+
27
+ @abstractmethod
28
+ def get_device_name(self, device_id: int = 0) -> str: ...
29
+
30
+ @abstractmethod
31
+ def is_cuda(self) -> bool: ...
32
+
33
+ @abstractmethod
34
+ def is_rocm(self) -> bool: ...
35
+
36
+ @abstractmethod
37
+ def is_mps(self) -> bool: ...
38
+
39
+
40
+ class CudaPlatform(Platform):
41
+ @classmethod
42
+ @lru_cache(maxsize=8)
43
+ def get_device_name(cls, device_id: int = 0) -> str:
44
+ return torch.cuda.get_device_name(0)
45
+
46
+ def is_cuda(self) -> bool:
47
+ return True
48
+
49
+ def is_rocm(self) -> bool:
50
+ return False
51
+
52
+ def is_mps(self) -> bool:
53
+ return False
54
+
55
+
56
+ class RocmPlatform(Platform):
57
+ @classmethod
58
+ @lru_cache(maxsize=8)
59
+ def get_device_name(cls, device_id: int = 0) -> str:
60
+ return torch.cuda.get_device_name(device_id)
61
+
62
+ def is_cuda(self) -> bool:
63
+ return False
64
+
65
+ def is_rocm(self) -> bool:
66
+ return True
67
+
68
+ def is_mps(self) -> bool:
69
+ return False
70
+
71
+
72
+ class MpsPlatform(Platform):
73
+ @classmethod
74
+ @lru_cache(maxsize=8)
75
+ def get_device_name(cls, device_id: int = 0) -> str:
76
+ return torch.cuda.get_device_name(device_id)
77
+
78
+ def is_cuda(self) -> bool:
79
+ return False
80
+
81
+ def is_rocm(self) -> bool:
82
+ return False
83
+
84
+ def is_mps(self) -> bool:
85
+ return True
86
+
87
+ current_platform = (
88
+ RocmPlatform() if IS_ROCM else
89
+ MpsPlatform() if IS_MPS else
90
+ CudaPlatform() if torch.cuda.is_available() else
91
+ None
92
+ )
build/torch-stable-abi210-cu132-x86_64-linux/__init__.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from . import platforms
2
+ from ._custom_ops import (
3
+ convert_fp8,
4
+ copy_blocks,
5
+ paged_attention_v1,
6
+ paged_attention_v2,
7
+ reshape_and_cache,
8
+ reshape_and_cache_flash,
9
+ swap_blocks,
10
+ )
11
+
12
+ from . import _private_for_testing # noqa: F401
13
+
14
+ __all__ = [
15
+ "_private_for_testing",
16
+ "convert_fp8",
17
+ "copy_blocks",
18
+ "paged_attention_v1",
19
+ "paged_attention_v2",
20
+ "reshape_and_cache",
21
+ "reshape_and_cache_flash",
22
+ "swap_blocks",
23
+ ]
build/torch-stable-abi210-cu132-x86_64-linux/_custom_ops.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import List, Optional
2
+
3
+ import torch
4
+
5
+ from ._ops import ops
6
+
7
+
8
+ # page attention ops
9
+ def paged_attention_v1(
10
+ out: torch.Tensor,
11
+ query: torch.Tensor,
12
+ key_cache: torch.Tensor,
13
+ value_cache: torch.Tensor,
14
+ num_kv_heads: int,
15
+ scale: float,
16
+ block_tables: torch.Tensor,
17
+ seq_lens: torch.Tensor,
18
+ block_size: int,
19
+ max_seq_len: int,
20
+ alibi_slopes: Optional[torch.Tensor],
21
+ kv_cache_dtype: str,
22
+ k_scale: float,
23
+ v_scale: float,
24
+ tp_rank: int = 0,
25
+ blocksparse_local_blocks: int = 0,
26
+ blocksparse_vert_stride: int = 0,
27
+ blocksparse_block_size: int = 64,
28
+ blocksparse_head_sliding_step: int = 0,
29
+ ) -> None:
30
+ ops.paged_attention_v1(
31
+ out,
32
+ query,
33
+ key_cache,
34
+ value_cache,
35
+ num_kv_heads,
36
+ scale,
37
+ block_tables,
38
+ seq_lens,
39
+ block_size,
40
+ max_seq_len,
41
+ alibi_slopes,
42
+ kv_cache_dtype,
43
+ k_scale,
44
+ v_scale,
45
+ tp_rank,
46
+ blocksparse_local_blocks,
47
+ blocksparse_vert_stride,
48
+ blocksparse_block_size,
49
+ blocksparse_head_sliding_step,
50
+ )
51
+
52
+
53
+ def paged_attention_v2(
54
+ out: torch.Tensor,
55
+ exp_sum: torch.Tensor,
56
+ max_logits: torch.Tensor,
57
+ tmp_out: torch.Tensor,
58
+ query: torch.Tensor,
59
+ key_cache: torch.Tensor,
60
+ value_cache: torch.Tensor,
61
+ num_kv_heads: int,
62
+ scale: float,
63
+ block_tables: torch.Tensor,
64
+ seq_lens: torch.Tensor,
65
+ block_size: int,
66
+ max_seq_len: int,
67
+ alibi_slopes: Optional[torch.Tensor],
68
+ kv_cache_dtype: str,
69
+ k_scale: float,
70
+ v_scale: float,
71
+ tp_rank: int = 0,
72
+ blocksparse_local_blocks: int = 0,
73
+ blocksparse_vert_stride: int = 0,
74
+ blocksparse_block_size: int = 64,
75
+ blocksparse_head_sliding_step: int = 0,
76
+ ) -> None:
77
+ ops.paged_attention_v2(
78
+ out,
79
+ exp_sum,
80
+ max_logits,
81
+ tmp_out,
82
+ query,
83
+ key_cache,
84
+ value_cache,
85
+ num_kv_heads,
86
+ scale,
87
+ block_tables,
88
+ seq_lens,
89
+ block_size,
90
+ max_seq_len,
91
+ alibi_slopes,
92
+ kv_cache_dtype,
93
+ k_scale,
94
+ v_scale,
95
+ tp_rank,
96
+ blocksparse_local_blocks,
97
+ blocksparse_vert_stride,
98
+ blocksparse_block_size,
99
+ blocksparse_head_sliding_step,
100
+ )
101
+
102
+
103
+ def reshape_and_cache(
104
+ key: torch.Tensor,
105
+ value: torch.Tensor,
106
+ key_cache: torch.Tensor,
107
+ value_cache: torch.Tensor,
108
+ slot_mapping: torch.Tensor,
109
+ kv_cache_dtype: str,
110
+ k_scale: float,
111
+ v_scale: float,
112
+ ) -> None:
113
+ ops.reshape_and_cache(
114
+ key,
115
+ value,
116
+ key_cache,
117
+ value_cache,
118
+ slot_mapping,
119
+ kv_cache_dtype,
120
+ k_scale,
121
+ v_scale,
122
+ )
123
+
124
+
125
+ def reshape_and_cache_flash(
126
+ key: torch.Tensor,
127
+ value: torch.Tensor,
128
+ key_cache: torch.Tensor,
129
+ value_cache: torch.Tensor,
130
+ slot_mapping: torch.Tensor,
131
+ kv_cache_dtype: str,
132
+ k_scale: torch.Tensor,
133
+ v_scale: torch.Tensor,
134
+ ) -> None:
135
+ ops.reshape_and_cache_flash(
136
+ key,
137
+ value,
138
+ key_cache,
139
+ value_cache,
140
+ slot_mapping,
141
+ kv_cache_dtype,
142
+ k_scale,
143
+ v_scale,
144
+ )
145
+
146
+
147
+ def copy_blocks(
148
+ key_caches: List[torch.Tensor],
149
+ value_caches: List[torch.Tensor],
150
+ block_mapping: torch.Tensor,
151
+ ) -> None:
152
+ ops.copy_blocks(key_caches, value_caches, block_mapping)
153
+
154
+
155
+ def swap_blocks(
156
+ src: torch.Tensor, dst: torch.Tensor, block_mapping: torch.Tensor
157
+ ) -> None:
158
+ ops.swap_blocks(src, dst, block_mapping)
159
+
160
+
161
+ def convert_fp8(
162
+ output: torch.Tensor, input: torch.Tensor, scale: float = 1.0, kv_dtype: str = "fp8"
163
+ ) -> None:
164
+ ops.convert_fp8(output, input, scale, kv_dtype)
165
+
166
+
167
+ __all__ = [
168
+ "convert_fp8",
169
+ "paged_attention_v1",
170
+ "paged_attention_v2",
171
+ "reshape_and_cache",
172
+ "copy_blocks",
173
+ ]
build/torch-stable-abi210-cu132-x86_64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _paged_attention_cuda_4b8a7b6
3
+ ops = torch.ops._paged_attention_cuda_4b8a7b6
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_paged_attention_cuda_4b8a7b6::{op_name}"
build/torch-stable-abi210-cu132-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7f652685222ac9e6af2183ec9320bd3f4e883c802e870df3861d6b46cd439d73
3
+ size 96451400
build/torch-stable-abi210-cu132-x86_64-linux/_private_for_testing.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ """Internal symbols that need to be exposed for the test suite."""
2
+
3
+ from ._ops import ops
4
+
5
+ __all__ = [
6
+ "ops",
7
+ ]
build/torch-stable-abi210-cu132-x86_64-linux/metadata.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "paged-attention",
3
+ "id": "_paged_attention_cuda_4b8a7b6",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "Apache-2.0",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "10.0",
13
+ "10.3",
14
+ "11.0",
15
+ "12.0",
16
+ "12.1+PTX",
17
+ "7.5",
18
+ "8.0",
19
+ "8.6",
20
+ "8.7",
21
+ "8.9",
22
+ "9.0"
23
+ ]
24
+ },
25
+ "digest": {
26
+ "algorithm": "sha256",
27
+ "files": {
28
+ "__init__.py": "iImkWaa9phF1Yo9eaibD+dvh0W3HXLUpMwl9kfaeZ1w=",
29
+ "_custom_ops.py": "tnC6OR7TPhMV+tt8MyUyIH2gDIdxBzHT+1z1NUhA9EE=",
30
+ "_ops.py": "auz+JB60XwCdqM2eFtbS9mdhpZwUcp8BK7SnzHS3bvo=",
31
+ "_paged_attention_cuda_4b8a7b6.abi3.so": "f2UmhSIqyeavIYPskyC9P06IPIAuhw3zhh1rRs1DnXM=",
32
+ "_private_for_testing.py": "7iW8UbcC7nyQDzB1nslnXbLFVq9ceOaiP+VLo6hE/no=",
33
+ "platforms.py": "NeAhENqA8yXHgy3EfkYP1Bkx1n6aStkExV9py7Jvdiw="
34
+ }
35
+ },
36
+ "provenance": {
37
+ "kernel-builder": {
38
+ "version": "0.17.0-dev0",
39
+ "commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
40
+ "dirty": false
41
+ },
42
+ "kernel": {
43
+ "commit": "4b8a7b601eeacbe87d9836605f1c65496dc718b2",
44
+ "dirty": false
45
+ }
46
+ }
47
+ }
build/torch-stable-abi210-cu132-x86_64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"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"}, "tlogEntries":[{"logIndex":"3023417930", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1790791795", "inclusionPromise":{"signedEntryTimestamp":"MEUCIDqlP8sPkgD7zBZQc6orrbjwG3fZXIRLHnpas6Yv1gkJAiEAwNkKKiCpnlqJUET715KltT8RciMHjuhtnRhB4q8ZSRw="}, "inclusionProof":{"logIndex":"2901513668", "rootHash":"e74V2IOrZ3x6ckZVsZC2Cm1xGV8T4WIxmpW9fbAzu0Y=", "treeSize":"2901513692", "hashes":["4K2UuEqZPF9j84nNulLi3ZScuXwVCtY6U730id3KCMg=", "y3obLZbgRSQhpDH1oJBuK1KVbWTorrHbpEshfeTKn1Q=", "ZoFEbI4E1suwDgCrE4JJIk02FoJm//0gD1TXay06RcA=", "95RzGvodKN2fFcSeq8C7epPZAJ35KimmtkZgTt5LfAo=", "pWb8ON9JupkDH2KpW88waHo7jTwrUoOFcQJLQIyOi0U=", "JWgGg6UJX+Kw5yYgUOaNl8UJIsfdVRUAwHiruEhzsv8=", "Al21iLAHz7ijpGcyUNOVU0IaBEFcPEU2yb0VZQkZKdM=", "Y/b1UVQEeF4rBAS3K1Xr5I4NuBlqkZyyiobLBU4NxTM=", "KkM4t12E/0oDsQUKu2L03FdljDSCr6SMNKcjNHFVwkg=", "DBf+6S2FPBJx6iWymdRRUYRU/lyeflo7HU1q99h8qfo=", "dqgK4q43/y6aLFT0j3OJDK0/wP3bB1DcjtXt+M9ZDgA=", "YI8EgjQmA38CJT2O2AulXkUFuygfBUvKto28k1J1g2U=", "gjP07uTk7mDQZEVMqe6TZetGLEhOhmmEiWzeOyme2rk=", "qOJyrwx/VzDfrHHCPrmyyJlJlVTT2lwb0jUshbhlF6Q=", "R65BPV8zugTBA3eQG4LqBT4kXwiJbUY1GYPdd4glLTg=", "AqDykV6o5ERshtWsKq2KL+g91mURajZ2DQDbOsXvZ3I=", "4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=", "ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2901513692\ne74V2IOrZ3x6ckZVsZC2Cm1xGV8T4WIxmpW9fbAzu0Y=\n\n— rekor.sigstore.dev wNI9ajBGAiEA+w0ZOAZRXkeiHBRTsGpVkDuIlBfxAQ14Q3/gf4R2DV0CIQDWOpVMwAzLkxWcYdJwzhH3AhmIoUrO72fs/ACPx4UkeA==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4NGMwYWUyNTNlM2NkNTcyMThjN2FlNjQ3N2JmNWE3OTUwNGRmZjhhMzRkMzMwM2E4NTk2ODNjNTBjYTVjODE3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQkpBL2VYam0xdWxCeFd6TnBtSkFvZ01PZkFWTTRhdHdBOTlJUEhlaUFkdkFpRUFnLy8wckdrY1ZOL0d3eHZQQlRtd2ZybWhMYnhZMGRkcnJmWkozaWpMbTU0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRWRU5EUW5SRFowRjNTVUpCWjBsVVdTdFhMMVZPV0ZVNWNsaDRNSGxOVGpkU09IQnJRbEZ5V1dwQlMwSm5aM0ZvYTJwUFVGRlJSRUY2UVRNS1RWSlZkMFYzV1VSV1VWRkxSWGQ0ZW1GWFpIcGtSemw1V2xNMWExcFlXWGhJYWtGalFtZE9Wa0pCVFZSR1dFNXdXak5PTUdJelNteE1WMngxWkVkV2VRcGlWMVpyWVZkR01GcFVRV1ZHZHpCNVRtcEJOVTE2UVhoUFJFRTFUbFJTWVVaM01IbE9ha0UxVFhwQmVFOUVSVFZPVkZKaFRVRkJkMWRVUVZSQ1oyTnhDbWhyYWs5UVVVbENRbWRuY1docmFrOVFVVTFDUW5kT1EwRkJVazlpYzJsYVIwRlBURlZhTUU5a2RFZEJNMkZQWW1aTWRFaGpURTB3ZUZsd1VYRjBUMFlLUzBOc1VGVjFTWGhsYkRoa1VYaG9jWGRSVUc5RmVsWlpXRFk0UW1vck5Ua3hXa2swYVVJNVUyOXdOSEJTVXpaTWJ6UkpSamhFUTBOQ1pYZDNSR2RaUkFwV1VqQlFRVkZJTDBKQlVVUkJaMlZCVFVKTlIwRXhWV1JLVVZGTlRVRnZSME5EYzBkQlVWVkdRbmROUkUxQ01FZEJNVlZrUkdkUlYwSkNVVkJDYm1OaUNpOHJUR05wVXpCdGNEQmpjVzFwUmxkclJYQTNNMFJCWmtKblRsWklVMDFGUjBSQlYyZENWR1l3SzI1UVZtbFJVbXgyYlc4eVQydHZWbUZNUjB4b2FHc0tVSHBDY2tKblRsWklVa1ZDUVdZNFJWbFVRbVpvYkRGdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2Jsb3liSFZhTWxwb1dUSlZkZ3BoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkbVF6VFhaWmJsWndZa2RSZFdWWFJuUmlSVUo1Q2xwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QxRlpTMHQzV1VKQ1FVZEVkbnBCUWtGUlVYSmhTRkl3WTBoTk5reDVPVEJpTW5Sc1ltazFhRmt6VW5BS1lqSTFla3h0WkhCa1IyZ3hXVzVXZWxwWVNtcGlNalV3V2xjMU1FeHRUblppVkVGbVFtZHZja0puUlVWQldVOHZUVUZGUTBKQ1JqTmlNMHB5V20xNGRncGtNVGxyWVZoT2QxbFlVbXBoUkVFeVFtZHZja0puUlVWQldVOHZUVUZGUkVKRFp6QlphbWhvVGpKSk1rMUVSbXhhVjBacVdXMVZORTR5VVRWUFJFMHlDazVxUVRGYWFrWnFUbXBWTUU5VVdtdFplbU40VDBkSmVVMUNUVWREYVhOSFFWRlJRbWMzT0hkQlVWRkZRbFZLTVdGWGVHdE5RM05IUTJselIwRlJVVUlLWnpjNGQwRlJWVVZJVjJneFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRVSXdSME5wYzBkQlVWRkNaemM0ZHdwQlVWbEZSRE5LYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtFM1FtZHZja0puUlVWQldVOHZUVUZGU1VKRE1FMUxNbWd3WkVoQ2VrOXBPSFprUnpseUNscFhOSFZaVjA0d1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1lsRlpTMHQzV1VKQ1FVZEVkbnBCUWtOUlVtWUtSRVl4YjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjQXBrU0d0MlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyV1c1V2NHSkhVWFZsVjBaMFlrVkNlVnBYV25wTU1taHNXVmRTZWt3eU1XaGhWelIzQ2s5QldVdExkMWxDUWtGSFJIWjZRVUpEWjFGeFJFTm5NRmxxYUdoT01ra3lUVVJHYkZwWFJtcFpiVlUwVGpKUk5VOUVUVEpPYWtFeFdtcEdhazVxVlRBS1QxUmFhMWw2WTNoUFIwbDVUVUp6UjBOcGMwZEJVVkZDWnpjNGQwRlJjMFZFVVhkTVl6SldjMXBwTVc5aU0wNHdXbGRSZDFGQldVdExkMWxDUWtGSFJBcDJla0ZDUkVGUmVVUkVRbTlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFDbUl5TVhSa1Z6VndaRWhyZDA5QldVdExkMWxDUWtGSFJIWjZRVUpFVVZGeFJFTm5NRmxxYUdoT01ra3lUVVJHYkZwWFJtcFpiVlUwVGpKUk5VOUVUVElLVG1wQk1WcHFSbXBPYWxVd1QxUmFhMWw2WTNoUFIwbDVUVUk0UjBOcGMwZEJVVkZDWnpjNGQwRlJORVZGVVhkUVkyMVdiV041T1c5YVYwWnJZM2s1ZEFwWlYyeDFUVUp2UjBOcGMwZEJVVkZDWnpjNGQwRlJPRVZFUVhkTFRWUkJNMDFVVVROT1ZGVjVUMVJCZFVKbmIzSkNaMFZGUVZsUEwwMUJSVkZDUTBGTkNraHRhREJrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVkVGWlFtZHZja0puUlVWQldVOHZUVUZGVWtKQmIwMEtRMFJKTVU1NlNYZE9lbEY2VFVjd1IwTnBjMGRCVVZGQ1p6YzRkMEZTU1VWWWQzaGtZVWhTTUdOSVRUWk1lVGx1WVZoU2IyUlhTWFZaTWpsMFRESm9NUXBhTW1Sd1ltMWtiVmxYVG14TU1uUnNZMjAxYkdKSVRYUlpNamwwWWxoV2RXRllValZNZVRWdVlWaFNiMlJYU1haa01qbDVZVEphYzJJelpIcE1Na294Q21GWGVHdE1ibXhvWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJuUjBOcGMwZEJVVkZDWnpjNGQwRlNUVVZMWjNkdlRrZEpORmxVWkdrS1RtcEJlRnBYVm1oWk1rcHNUMFJrYTA5VVozcE9hbGwzVGxkWmVGbDZXVEZPUkdzeVdrZE5NMDFVYUdsTmFrRm9RbWR2Y2tKblJVVkJXVTh2VFVGRlZRcENRazFOUlZoa2RtTnRkRzFpUnpreldESlNjR016UW1oa1IwNXZUVWRSUjBOcGMwZEJVVkZDWnpjNGQwRlNWVVZXWjNoVllVaFNNR05JVFRaTWVUbHVDbUZZVW05a1YwbDFXVEk1ZEV3eWFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1Na1pxWkVkc2RtSnVUWFlLWTI1V2RXTjVPSHBPYW1NeFRYcEZlazVVWXpWT1V6bG9aRWhTYkdKWVFqQmplVGg0VFVKWlIwTnBjMGRCVVZGQ1p6YzRkMEZTV1VWRFFYZEhZMGhXYVFwaVIyeHFUVVZaUjBOcGMwZEJVVkZDWnpjNGQwRlNaMFZQUVhjeVkyMVdkMko2Y0c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MkNtSlhNVEZpYld3d1pWUndlVnBYV1RaamJWWnRZM2s1YjFwWFJtdGplVGwwV1Zkc2RVMUpSMHRDWjI5eVFtZEZSVUZrV2pWQloxRkRRa2gzUldWblFqUUtRVWhaUVROVU1IZGhjMkpJUlZSS2FrZFNOR050VjJNelFYRktTMWh5YW1WUVN6TXZhRFJ3ZVdkRE9IQTNielJCUVVGSFp6ZzBTa0ZWVVVGQlFrRk5RUXBTZWtKR1FXbENTbFJWYVVWTlYxWTBabFZVZG5vNGRtRk5VRk5UTlRWNGVFb3JkVzlxYVVOeGIxSnBXRWwwY0d4cWQwbG9RVXhvUnpSTVJGUnRSWGhDQ2k5V1VHaE1WblZ5TWxOa1VsWlVVRGhQYVhkSk9VbGlUMVJoVW5OQlJFdDNUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlZMEZOUjFGRFRVVnZkRmhpV21vS1ExYzRhMjVrVUVzeGFYTmlWSFZ0Vm5GbmQwaFZUVFl4ZFdOMlZFMTRjaXMyVDBFelUyYzFibFJrYUhwRk9FZHNZVGR1WjBzclMwOTRRVWwzUkZScWJncGFTM0pOTVd4MlZGYzRZVkZ0Tld4UmJsWlJiRlpvTmxwM01YRmxVR0V3Y0hKNVUza3ZWV0YzTXpSUFREaE9TWGRYU1hSbVozQnRlbVpVWkVjS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgWRwl3OTbSJeG7aVNhn3MJ+kJvCb9B5IvtRsXJQsPEuECFQCx4nhg4N5mgKEDAYYV34hyKN3NYxgPMjAyNjA5MzAxODA5NTRaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkzMDE4MDk1NFowLwYJKoZIhvcNAQkEMSIEIMQBIM46cL4WETGwV/ybd6XsglPEc6ulZAHi8fRWwLhRMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCUxnWuB7pwhy79Msu6+qoV0echf4kDvl/gXAmWWUtaEBVhwKC7lzDbJjcV/FQf7T0CMQDE5t9n+Q5YmP9XQYujTFf2joSCOk+Y+oDGgE0UrJdE9iIWSVue5U0wmrkRgjhiopk="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"hMCuJT481XIYx65kd79aeVBN/4o00zA6hZaDxQylyBc="}, "signature":"MEUCIBJA/eXjm1ulBxWzNpmJAogMOfAVM4atwA99IPHeiAdvAiEAg//0rGkcVN/GwxvPBTmwfrmhLbxY0ddrrfZJ3ijLm54="}}
build/torch-stable-abi210-cu132-x86_64-linux/platforms.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+ from abc import ABC, abstractmethod
4
+ from functools import lru_cache, wraps
5
+ from typing import Callable, ParamSpec, TypeVar
6
+
7
+ import numpy as np
8
+ import torch
9
+
10
+ IS_ROCM = torch.version.hip is not None
11
+ IS_MPS = torch.backends.mps.is_available()
12
+
13
+
14
+ class Platform(ABC):
15
+ @classmethod
16
+ def seed_everything(cls, seed: int) -> None:
17
+ """
18
+ Set the seed of each random module.
19
+ `torch.manual_seed` will set seed on all devices.
20
+
21
+ Loosely based on: https://github.com/Lightning-AI/pytorch-lightning/blob/2.4.0/src/lightning/fabric/utilities/seed.py#L20
22
+ """
23
+ random.seed(seed)
24
+ np.random.seed(seed)
25
+ torch.manual_seed(seed)
26
+
27
+ @abstractmethod
28
+ def get_device_name(self, device_id: int = 0) -> str: ...
29
+
30
+ @abstractmethod
31
+ def is_cuda(self) -> bool: ...
32
+
33
+ @abstractmethod
34
+ def is_rocm(self) -> bool: ...
35
+
36
+ @abstractmethod
37
+ def is_mps(self) -> bool: ...
38
+
39
+
40
+ class CudaPlatform(Platform):
41
+ @classmethod
42
+ @lru_cache(maxsize=8)
43
+ def get_device_name(cls, device_id: int = 0) -> str:
44
+ return torch.cuda.get_device_name(0)
45
+
46
+ def is_cuda(self) -> bool:
47
+ return True
48
+
49
+ def is_rocm(self) -> bool:
50
+ return False
51
+
52
+ def is_mps(self) -> bool:
53
+ return False
54
+
55
+
56
+ class RocmPlatform(Platform):
57
+ @classmethod
58
+ @lru_cache(maxsize=8)
59
+ def get_device_name(cls, device_id: int = 0) -> str:
60
+ return torch.cuda.get_device_name(device_id)
61
+
62
+ def is_cuda(self) -> bool:
63
+ return False
64
+
65
+ def is_rocm(self) -> bool:
66
+ return True
67
+
68
+ def is_mps(self) -> bool:
69
+ return False
70
+
71
+
72
+ class MpsPlatform(Platform):
73
+ @classmethod
74
+ @lru_cache(maxsize=8)
75
+ def get_device_name(cls, device_id: int = 0) -> str:
76
+ return torch.cuda.get_device_name(device_id)
77
+
78
+ def is_cuda(self) -> bool:
79
+ return False
80
+
81
+ def is_rocm(self) -> bool:
82
+ return False
83
+
84
+ def is_mps(self) -> bool:
85
+ return True
86
+
87
+ current_platform = (
88
+ RocmPlatform() if IS_ROCM else
89
+ MpsPlatform() if IS_MPS else
90
+ CudaPlatform() if torch.cuda.is_available() else
91
+ None
92
+ )