9bow commited on
Commit
46b2dec
·
verified ·
1 Parent(s): 9412f7c

Add qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2 WebTorch bundle (part 2)

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/939eb5e3ec5862e0f1d8caec99b814ed6b2bb3a41a132f7149a503e8df582e3c.wgsl +13 -0
  3. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/947f5cc8b3f87e1a0d4d322d9d9e71e2ed16ce6e1f7c91118678c164dc1c8752.wgsl +9 -0
  4. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/94a128c4e3d052323e995364319a5607fe0514a04b040a13cfffd1b11c445775.wgsl +9 -0
  5. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/95addfdb139df33bb3d5c05859412434d318cee0340560537dce4d56a05e159c.wgsl +9 -0
  6. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/95cba13b595301afbefe20da4a65b93d4d5c5f4a29b9e1d5348d32cb193c6b4b.wgsl +9 -0
  7. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9625ca0b071511e5261877fd21627ca354ea0219da86a10887e8054afa15dcfd.wgsl +9 -0
  8. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/96c87dca789848448686f9a38ed6770c54bfaba1d93008ecdac39383cf8b505a.wgsl +31 -0
  9. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/96cb6d05163d6d1a16ea2c8b75a5a2ec31f8010830756f18f5ba3c1470e36ed0.wgsl +28 -0
  10. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/96f1c813df998d7101deb468ed0d09039ec978aa11d8e406ed0fd46c600e06eb.wgsl +28 -0
  11. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9701df2bcd72ed6a0b72dca81006d9fcc2336e0250fbd66cf37d4fd80667358f.wgsl +9 -0
  12. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/970aa8fd65c7e96611a4b6f30cb0b71e24bdaefff0ca117243cab1a5a7e645a9.wgsl +9 -0
  13. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/97aa9b5cb2a41dbf920a6c15c61964d33dd0d87990a00183ac4b87c614bc376d.wgsl +12 -0
  14. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/985bb9ad33654b9adbd4a256d626e346556a10dad514692800da8ebd7910f0f0.wgsl +9 -0
  15. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af.wgsl +9 -0
  16. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.wgsl +9 -0
  17. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl +9 -0
  18. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909.wgsl +17 -0
  19. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3.wgsl +17 -0
  20. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074.wgsl +12 -0
  21. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0.wgsl +11 -0
  22. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773.wgsl +9 -0
  23. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43.wgsl +10 -0
  24. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl +16 -0
  25. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.wgsl +11 -0
  26. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6.wgsl +9 -0
  27. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl +10 -0
  28. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl +9 -0
  29. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl +9 -0
  30. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl +9 -0
  31. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl +9 -0
  32. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl +10 -0
  33. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl +9 -0
  34. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl +10 -0
  35. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl +44 -0
  36. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl +11 -0
  37. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl +9 -0
  38. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl +9 -0
  39. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a831fed0324f7532d7905d47c499e6a3deb56fe99d0dbcc91193b351efa797db.wgsl +9 -0
  40. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl +17 -0
  41. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl +9 -0
  42. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl +9 -0
  43. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl +10 -0
  44. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl +9 -0
  45. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl +10 -0
  46. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl +9 -0
  47. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl +10 -0
  48. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl +9 -0
  49. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/ac61ff8b1e3d15ef1f43e9d610e97d84fcae08527ed0a992d3cebbce5fdd286a.wgsl +17 -0
  50. qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl +9 -0
.gitattributes CHANGED
@@ -54,3 +54,4 @@ qwen35-08b-fp32-int2-g32-up-proj-mse-home-token-major-v2/tokenizer/tokenizer.jso
54
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
55
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
56
  qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
 
 
54
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
55
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
56
  qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
57
+ qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/939eb5e3ec5862e0f1d8caec99b814ed6b2bb3a41a132f7149a503e8df582e3c.wgsl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<i32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 2048u;
8
+ if (i >= 2048u) { return; }
9
+ let token = (i / 256u) % 4u;
10
+ let outer = i / 1024u;
11
+ let destination = outer * 1048576u + u32(b1[token]) * 256u + i % 256u;
12
+ out[((destination) / 256u) % 4096u * 512u + ((destination) / 1048576u) % 2u * 256u + ((destination) / 1u) % 256u * 1u] = f32(b0[i]);
13
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/947f5cc8b3f87e1a0d4d322d9d9e71e2ed16ce6e1f7c91118678c164dc1c8752.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 128u;
7
+ if (i >= 96u) { return; }
8
+ out[i] = f32(b0[((i / 32u) % 3u) * 32u + ((i / 32u) % 1u) * 32u + ((i / 1u) % 32u) * 1u + ((i / 1u) % 1u) * 32u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/94a128c4e3d052323e995364319a5607fe0514a04b040a13cfffd1b11c445775.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 256u;
7
+ if (i >= 256u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/95addfdb139df33bb3d5c05859412434d318cee0340560537dce4d56a05e159c.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 2048u;
7
+ if (i >= 2048u) { return; }
8
+ out[i] = f32(b0[((i / 2048u) % 1u) * 2048u + ((i / 2048u) % 1u) * 256u + ((i / 256u) % 8u) * 256u + ((i / 1u) % 256u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/95cba13b595301afbefe20da4a65b93d4d5c5f4a29b9e1d5348d32cb193c6b4b.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 128u;
7
+ if (i >= 128u) { return; }
8
+ out[i] = f32(b0[0u * 128u + ((i / 128u) % 1u) * 128u + ((i / 32u) % 4u) * 32u + ((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9625ca0b071511e5261877fd21627ca354ea0219da86a10887e8054afa15dcfd.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 32u) { return; }
8
+ out[i] = f32(b0[1u * 32u + ((i / 32u) % 1u) * 32u + ((i / 32u) % 1u) * 32u + ((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/96c87dca789848448686f9a38ed6770c54bfaba1d93008ecdac39383cf8b505a.wgsl ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<u32>;
3
+ @group(0) @binding(2) var<storage, read> b2: array<f32>;
4
+ @group(0) @binding(3) var<storage, read_write> out: array<f32>;
5
+ fn dequant_1(index: u32) -> f32 {
6
+ let row = index / 1024u;
7
+ let col = index % 1024u;
8
+ let word = b1[row * 256u + col / 4u];
9
+ let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128;
10
+ return f32(code) * b2[row * 32u + col / 32u];
11
+ }
12
+
13
+ var<workgroup> tile_a: array<f32, 64>;
14
+ var<workgroup> tile_b: array<f32, 64>;
15
+ @compute @workgroup_size(8, 8)
16
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
17
+ let row = group.y * 8u + local.y;
18
+ let col = group.x * 8u + local.x;
19
+ let i = (group.z * 64u + row) * 16u + col;
20
+ var acc = 0.0;
21
+ for (var tile = 0u; tile < 1024u; tile += 8u) {
22
+ tile_a[local.y * 8u + local.x] = 0.0;
23
+ tile_b[local.x * 8u + local.y] = 0.0;
24
+ if (row < 64u && tile + local.x < 1024u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 64u + row) * 1024u + tile + local.x]); }
25
+ if (group.x * 8u + local.y < 16u && tile + local.x < 1024u) { tile_b[local.x * 8u + local.y] = dequant_1((group.x * 8u + local.y) * 1024u + tile + local.x); }
26
+ workgroupBarrier();
27
+ for (var p = 0u; p < 8u; p++) { acc += tile_a[local.y * 8u + p] * tile_b[p * 8u + local.x]; }
28
+ workgroupBarrier();
29
+ }
30
+ if (row < 64u && col < 16u) { out[i] = f32(acc + 0.0); }
31
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/96cb6d05163d6d1a16ea2c8b75a5a2ec31f8010830756f18f5ba3c1470e36ed0.wgsl ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<u32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+ fn unpack_bf16_1(index: u32) -> f32 {
5
+ let pair = b1[index / 2u];
6
+ let bits = (pair >> ((index % 2u) * 16u)) & 65535u;
7
+ return bitcast<f32>(bits << 16u);
8
+ }
9
+
10
+ var<workgroup> tile_a: array<f32, 64>;
11
+ var<workgroup> tile_b: array<f32, 64>;
12
+ @compute @workgroup_size(8, 8)
13
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
14
+ let row = group.y * 8u + local.y;
15
+ let col = group.x * 8u + local.x;
16
+ let i = (group.z * 64u + row) * 65536u + col;
17
+ var acc = 0.0;
18
+ for (var tile = 0u; tile < 1024u; tile += 8u) {
19
+ tile_a[local.y * 8u + local.x] = 0.0;
20
+ tile_b[local.x * 8u + local.y] = 0.0;
21
+ if (row < 64u && tile + local.x < 1024u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 64u + row) * 1024u + tile + local.x]); }
22
+ if (group.x * 8u + local.y < 65536u && tile + local.x < 1024u) { tile_b[local.x * 8u + local.y] = unpack_bf16_1((group.x * 8u + local.y) * 1024u + tile + local.x); }
23
+ workgroupBarrier();
24
+ for (var p = 0u; p < 8u; p++) { acc += tile_a[local.y * 8u + p] * tile_b[p * 8u + local.x]; }
25
+ workgroupBarrier();
26
+ }
27
+ if (row < 64u && col < 65536u) { out[i] = f32(acc + 0.0); }
28
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/96f1c813df998d7101deb468ed0d09039ec978aa11d8e406ed0fd46c600e06eb.wgsl ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<u32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+ fn unpack_bf16_1(index: u32) -> f32 {
5
+ let pair = b1[index / 2u];
6
+ let bits = (pair >> ((index % 2u) * 16u)) & 65535u;
7
+ return bitcast<f32>(bits << 16u);
8
+ }
9
+
10
+ var<workgroup> tile_a: array<f32, 64>;
11
+ var<workgroup> tile_b: array<f32, 64>;
12
+ @compute @workgroup_size(8, 8)
13
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
14
+ let row = group.y * 8u + local.y;
15
+ let col = group.x * 8u + local.x;
16
+ let i = (group.z * 16u + row) * 51712u + col;
17
+ var acc = 0.0;
18
+ for (var tile = 0u; tile < 1024u; tile += 8u) {
19
+ tile_a[local.y * 8u + local.x] = 0.0;
20
+ tile_b[local.x * 8u + local.y] = 0.0;
21
+ if (row < 16u && tile + local.x < 1024u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 16u + row) * 1024u + tile + local.x]); }
22
+ if (group.x * 8u + local.y < 51712u && tile + local.x < 1024u) { tile_b[local.x * 8u + local.y] = unpack_bf16_1((group.x * 8u + local.y) * 1024u + tile + local.x); }
23
+ workgroupBarrier();
24
+ for (var p = 0u; p < 8u; p++) { acc += tile_a[local.y * 8u + p] * tile_b[p * 8u + local.x]; }
25
+ workgroupBarrier();
26
+ }
27
+ if (row < 16u && col < 51712u) { out[i] = f32(acc + 0.0); }
28
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9701df2bcd72ed6a0b72dca81006d9fcc2336e0250fbd66cf37d4fd80667358f.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 131072u;
7
+ if (i >= 131072u) { return; }
8
+ out[i] = f32(b0[((i / 131072u) % 1u) * 393216u + ((i / 8192u) % 16u) * 24576u + (((i / 128u) % 64u) * 1u + 128u) * 128u + ((i / 1u) % 128u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/970aa8fd65c7e96611a4b6f30cb0b71e24bdaefff0ca117243cab1a5a7e645a9.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 48u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/97aa9b5cb2a41dbf920a6c15c61964d33dd0d87990a00183ac4b87c614bc376d.wgsl ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 8192u;
8
+ if (i >= 8192u) { return; }
9
+ let coord = (i / 1u) % 256u;
10
+ if (coord >= 0u && coord < 64u) { out[i] = f32(b0[(i / 256u) * 64u + (coord - 0u) * 1u + i % 1u]); }
11
+ if (coord >= 64u && coord < 256u) { out[i] = f32(b1[(i / 256u) * 192u + (coord - 64u) * 1u + i % 1u]); }
12
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/985bb9ad33654b9adbd4a256d626e346556a10dad514692800da8ebd7910f0f0.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<i32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 3u) { return; }
8
+ out[i] = i32(b0[(((i / 1u) % 3u) * 1u + 1u) * 1u + ((i / 1u) % 1u) * 1u + ((i / 1u) % 1u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 24576u;
7
+ if (i >= 24576u) { return; }
8
+ out[i] = f32(b0[((i / 24576u) % 1u) * 49152u + ((i / 4u) % 6144u) * 8u + (((i / 1u) % 4u) * 1u + 4u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 24576u;
7
+ if (i >= 24576u) { return; }
8
+ out[i] = f32(b0[((i / 24576u) % 1u) * 122880u + ((i / 4u) % 6144u) * 20u + (((i / 1u) % 4u) * 1u + 16u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 1024u;
7
+ if (i >= 1024u) { return; }
8
+ out[i] = f32(f32(b0[i]) * 1.0);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909.wgsl ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<u32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+ fn unpack_bf16_1(index: u32) -> f32 {
5
+ let pair = b1[index / 2u];
6
+ let bits = (pair >> ((index % 2u) * 16u)) & 65535u;
7
+ return bitcast<f32>(bits << 16u);
8
+ }
9
+
10
+ @compute @workgroup_size(64)
11
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
12
+ let i = gid.x + gid.y * 16384u;
13
+ if (i >= 16384u) { return; }
14
+ let token = i32(b0[i / 1024u]);
15
+ if (token < 131072 || token >= 196608) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 131072) * 1024u + i % 1024u));
17
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3.wgsl ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<u32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+ fn unpack_bf16_1(index: u32) -> f32 {
5
+ let pair = b1[index / 2u];
6
+ let bits = (pair >> ((index % 2u) * 16u)) & 65535u;
7
+ return bitcast<f32>(bits << 16u);
8
+ }
9
+
10
+ @compute @workgroup_size(64)
11
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
12
+ let i = gid.x + gid.y * 4096u;
13
+ if (i >= 4096u) { return; }
14
+ let token = i32(b0[i / 1024u]);
15
+ if (token < 65536 || token >= 131072) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 65536) * 1024u + i % 1024u));
17
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074.wgsl ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 417792u;
8
+ if (i >= 417792u) { return; }
9
+ let coord = (i / 1u) % 68u;
10
+ if (coord >= 0u && coord < 4u) { out[i] = f32(b0[(i / 68u) * 4u + (coord - 0u) * 1u + i % 1u]); }
11
+ if (coord >= 4u && coord < 68u) { out[i] = f32(b1[(i / 68u) * 64u + (coord - 4u) * 1u + i % 1u]); }
12
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0.wgsl ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 1024u;
7
+ if (i >= 1024u) { return; }
8
+ let x = f32(b0[i]);
9
+ if (x * 1.0 > 20.0) { out[i] = f32(x); return; }
10
+ out[i] = f32(log(1.0 + exp(x * 1.0)) / 1.0);
11
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 32768u;
7
+ if (i >= 32768u) { return; }
8
+ out[i] = f32(b0[((i / 32768u) % 1u) * 65536u + ((i / 2048u) % 16u) * 4096u + ((i / 256u) % 8u) * 512u + (((i / 1u) % 256u) * 1u + 0u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 122880u;
7
+ if (i >= 122880u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(x / (1.0 + exp(-x)));
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read> b2: array<f32>;
4
+ @group(0) @binding(3) var<storage, read> b3: array<f32>;
5
+ @group(0) @binding(4) var<storage, read_write> out: array<f32>;
6
+
7
+ @compute @workgroup_size(64)
8
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
9
+ let i = gid.x + gid.y * 248320u;
10
+ if (i >= 248320u) { return; }
11
+ let coord = (i / 1u) % 248320u;
12
+ if (coord >= 0u && coord < 65536u) { out[i] = f32(b0[(i / 248320u) * 65536u + (coord - 0u) * 1u + i % 1u]); }
13
+ if (coord >= 65536u && coord < 131072u) { out[i] = f32(b1[(i / 248320u) * 65536u + (coord - 65536u) * 1u + i % 1u]); }
14
+ if (coord >= 131072u && coord < 196608u) { out[i] = f32(b2[(i / 248320u) * 65536u + (coord - 131072u) * 1u + i % 1u]); }
15
+ if (coord >= 196608u && coord < 248320u) { out[i] = f32(b3[(i / 248320u) * 51712u + (coord - 196608u) * 1u + i % 1u]); }
16
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.wgsl ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 2048u;
8
+ if (i >= 2048u) { return; }
9
+ let coord = (i / 1u) % 32u;
10
+ if (coord >= 1u && coord < 34u && (coord - 1u) % 3u == 0u) { out[i] = f32(b0[((i / 2048u) % 1u) * 704u + ((i / 32u) % 64u) * 11u + ((((i / 1u) % 32u) - 1u) / 3u) * 1u]); } else { out[i] = f32(b1[i]); }
11
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 393216u;
7
+ if (i >= 393216u) { return; }
8
+ out[i] = f32(b0[((i / 393216u) % 1u) * 417792u + ((i / 64u) % 6144u) * 68u + (((i / 1u) % 64u) * 1u + 4u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 64u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(-x);
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 512u;
7
+ if (i >= 512u) { return; }
8
+ out[i] = f32(b0[1u * 512u + ((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 32u + ((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 98304u;
7
+ if (i >= 98304u) { return; }
8
+ out[i] = f32(b0[((i / 98304u) % 1u) * 98304u + ((i / 16u) % 6144u) * 1u + ((i / 1u) % 16u) * 6144u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 32768u;
7
+ if (i >= 32768u) { return; }
8
+ out[i] = f32(b0[((i / 32768u) % 1u) * 98304u + ((i / 2048u) % 16u) * 6144u + (((i / 1u) % 2048u) * 1u + 4096u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 12u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 1024u;
7
+ if (i >= 1024u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(1.0 / (1.0 + exp(-x)));
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<i32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 1u) { return; }
8
+ out[i] = i32(b0[i]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 8192u;
7
+ if (i >= 8192u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(1.0 / (1.0 + exp(-x)));
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read> b2: array<f32>;
4
+ @group(0) @binding(3) var<storage, read> b3: array<f32>;
5
+ @group(0) @binding(4) var<storage, read> b4: array<f32>;
6
+ @group(0) @binding(5) var<storage, read> b5: array<f32>;
7
+ @group(0) @binding(6) var<storage, read_write> out: array<f32>;
8
+
9
+ var<workgroup> partial: array<f32, 128>;
10
+ var<workgroup> delta: f32;
11
+ @compute @workgroup_size(128)
12
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
13
+ let column = group.x;
14
+ let head = group.y;
15
+ let batch_index = group.z;
16
+ let lane = local.x;
17
+ var recurrent = 0.0;
18
+ if (lane < 128u) { recurrent = f32(b5[((batch_index * 16u + head) * 128u + lane) * 128u + column]); }
19
+ for (var token = 0u; token < 64u; token++) {
20
+ recurrent *= exp(f32(b3[(batch_index * 64u + token) * 16u + head]));
21
+ partial[lane] = 0.0;
22
+ if (lane < 128u) { partial[lane] = recurrent * f32(b1[((batch_index * 64u + token) * 16u + head) * 128u + lane]); }
23
+ workgroupBarrier();
24
+ for (var stride = 64u; stride > 0u; stride /= 2u) {
25
+ if (lane < stride) { partial[lane] += partial[lane + stride]; }
26
+ workgroupBarrier();
27
+ }
28
+ if (lane == 0u) { delta = (f32(b2[((batch_index * 64u + token) * 16u + head) * 128u + column]) - partial[0]) * f32(b4[(batch_index * 64u + token) * 16u + head]); }
29
+ workgroupBarrier();
30
+ if (lane < 128u) { recurrent += f32(b1[((batch_index * 64u + token) * 16u + head) * 128u + lane]) * delta; }
31
+ partial[lane] = 0.0;
32
+ if (lane < 128u) {
33
+ partial[lane] = recurrent * f32(b0[((batch_index * 64u + token) * 16u + head) * 128u + lane]) * 0.08838834764831845;
34
+ }
35
+ workgroupBarrier();
36
+ for (var stride = 64u; stride > 0u; stride /= 2u) {
37
+ if (lane < stride) { partial[lane] += partial[lane + stride]; }
38
+ workgroupBarrier();
39
+ }
40
+ if (lane == 0u) { out[((batch_index * 16u + head) * 192u + 128u + token) * 128u + column] = f32(partial[0]); }
41
+ workgroupBarrier();
42
+ }
43
+ if (lane < 128u) { out[((batch_index * 16u + head) * 192u + lane) * 128u + column] = f32(recurrent); }
44
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 2048u;
8
+ if (i >= 2048u) { return; }
9
+ let coord = (i / 128u) % 1u;
10
+ if (coord == 0u) { out[i] = f32(b0[((i / 2048u) % 1u) * 2048u + ((i / 128u) % 16u) * 128u + ((i / 1u) % 128u) * 1u]); } else { out[i] = f32(b1[i]); }
11
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 128u;
7
+ if (i >= 96u) { return; }
8
+ out[i] = f32(b0[((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 98304u;
7
+ if (i >= 98304u) { return; }
8
+ out[i] = f32(b0[((i / 98304u) % 1u) * 98304u + ((i / 6144u) % 16u) * 1u + ((i / 1u) % 6144u) * 16u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a831fed0324f7532d7905d47c499e6a3deb56fe99d0dbcc91193b351efa797db.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 393216u;
7
+ if (i >= 393216u) { return; }
8
+ out[i] = f32(b0[((i / 393216u) % 1u) * 393216u + ((i / 64u) % 6144u) * 1u + ((i / 1u) % 64u) * 6144u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 384u;
8
+ if (i >= 384u) { return; }
9
+ let batch = i / 128u;
10
+ let row = (i / 4u) % 32u;
11
+ let col = i % 4u;
12
+ var acc = 0.0;
13
+ for (var p = 0u; p < 1u; p++) {
14
+ acc += f32(b0[(((batch / 1u) % 3u) * 32u) + row * 1u + p]) * f32(b1[(((batch / 1u) % 3u) * 4u) + p * 4u + col]);
15
+ }
16
+ out[i] = f32(acc);
17
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<i32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 256u;
7
+ if (i >= 256u) { return; }
8
+ out[i] = i32(b0[((i / 1u) % 64u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 8192u;
7
+ if (i >= 8192u) { return; }
8
+ out[i] = f32(b0[((i / 8192u) % 1u) * 24576u + ((i / 2048u) % 4u) * 6144u + (((i / 1u) % 2048u) * 1u + 2048u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 131072u;
8
+ if (i >= 131072u) { return; }
9
+ out[i] = f32(f32(b0[i]) * f32(b1[i]));
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<i32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<i32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 64u;
7
+ if (i >= 48u) { return; }
8
+ out[i] = i32(b0[(((i / 16u) % 3u) * 1u + 1u) * 16u + ((i / 16u) % 1u) * 16u + ((i / 1u) % 16u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 32768u;
8
+ if (i >= 32768u) { return; }
9
+ out[i] = f32(f32(b0[i]) * f32(b1[i]));
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 65536u;
7
+ if (i >= 65536u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 2048u;
7
+ if (i >= 2048u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(1.0 / (1.0 + exp(-x)));
10
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 131072u;
7
+ if (i >= 131072u) { return; }
8
+ out[i] = f32(b0[((i / 131072u) % 1u) * 393216u + ((i / 2048u) % 64u) * 6144u + (((i / 1u) % 2048u) * 1u + 0u) * 1u]);
9
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/ac61ff8b1e3d15ef1f43e9d610e97d84fcae08527ed0a992d3cebbce5fdd286a.wgsl ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read> b1: array<f32>;
3
+ @group(0) @binding(2) var<storage, read_write> out: array<f32>;
4
+
5
+ @compute @workgroup_size(64)
6
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
7
+ let i = gid.x + gid.y * 32768u;
8
+ if (i >= 32768u) { return; }
9
+ let batch = i / 4096u;
10
+ let row = (i / 256u) % 16u;
11
+ let col = i % 256u;
12
+ var acc = 0.0;
13
+ for (var p = 0u; p < 4096u; p++) {
14
+ acc += f32(b0[(((batch / 1u) % 8u) * 65536u) + row * 4096u + p]) * f32(b1[(((batch / 1u) % 8u) * 1048576u) + p * 256u + col]);
15
+ }
16
+ out[i] = f32(acc);
17
+ }
qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ @group(0) @binding(0) var<storage, read> b0: array<f32>;
2
+ @group(0) @binding(1) var<storage, read_write> out: array<f32>;
3
+
4
+ @compute @workgroup_size(64)
5
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
6
+ let i = gid.x + gid.y * 512u;
7
+ if (i >= 512u) { return; }
8
+ out[i] = f32(b0[((i / 512u) % 1u) * 2048u + ((i / 256u) % 2u) * 1024u + ((i / 64u) % 4u) * 256u + (((i / 1u) % 64u) * 1u + 0u) * 1u]);
9
+ }