9bow commited on
Commit
8e9c862
·
verified ·
1 Parent(s): 37977ad

Publish WebTorch model catalog bundles (part 7)

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 +2 -0
  2. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4d46494a55ac0b66fdddd47b9422106ac39e0c7d206f01004e13f93a010e1bf5.wgsl +12 -0
  3. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4d8ebffbbf193b18c13a5cc17d286bf5c92c5ba53ca022af78a9151ec1e5b9c0.wgsl +9 -0
  4. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4f27100b1e707c866f7cdd701f722bed2969be6e71245d4e4a14e1ef7ebe3fcf.wgsl +17 -0
  5. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4f2c0d08150d4b97d90c244db2d41baca81484c2630dbbd6d586f2d8a4b07b8b.wgsl +9 -0
  6. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4fa24e8f09b07271534341707a7a688af67c7deca1f114bfaeba20a2e066c9f1.wgsl +11 -0
  7. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4fad29e3e337840e25132f10b3e3d55225f727ae13525ff0b0bdf31e03f09d74.wgsl +10 -0
  8. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/50535e4c99d9fb4a272d8260a1415f6b38a7ad1025da64e145f230df697d9b73.wgsl +10 -0
  9. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/51fd4d798491c6a80daff4c18b0495926b7f62269dfc3a78a327faa52ba2a759.wgsl +10 -0
  10. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/52210a661e4d5241f53b3b1caf65456e1988ddd663ded8ead63ee7f7c7e3ff57.wgsl +9 -0
  11. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5244c41c17f08956963dde4c3784e8e122ba0e3c0d76794c8b3673252f672f27.wgsl +28 -0
  12. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/52b439507af68e969a6e116d3c8ea5338a4cde5a3fc1e97b729512d17ab2f4f9.wgsl +9 -0
  13. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/52d5f0189ff49849070362fea5585100e0c7a9eb6ff6722e3b545c113b965292.wgsl +28 -0
  14. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/53d6eb0b5e6d49bfd3bb9fd1b781e13317adf528e047da2416e95f5a3a13b1b4.wgsl +9 -0
  15. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/55b9c48ba429daf80bbae0b4737f895b475abdc9ddfdc88ab2f894f133ec2bf9.wgsl +10 -0
  16. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/56167a7e8fb1c67fa72948a8baa71866d54cc775be83f8cfa75a947ac0f58b12.wgsl +9 -0
  17. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/564b62d37d6845f8049f903d4ba35762c607937d8a9644bfe511fbc7bf90dacd.wgsl +24 -0
  18. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/56ea85fd6d5f7cc9394d6aa0ee2fdeee921dc84957548088041c975ba925c6a0.wgsl +17 -0
  19. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/577120bb3cdd5d1fb64df75a3d9d9bfb7df9a47cbe10c3df4702cdedda8742f2.wgsl +17 -0
  20. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/57dc406322bf3badd8490493ef924bd7e7e0afd542d2d6e409b4d8a3b4b784f7.wgsl +9 -0
  21. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/58077eb80a5fa253f535c97c82dc07edd48455a17cc52583aeee41c7d1bbd0b3.wgsl +9 -0
  22. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/58a04f81024c554fa7384cf7989536e51ab65a353203039f95c9787453ee627c.wgsl +28 -0
  23. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/59ea88d691b919af03bbb26f0253decfbc35d74f9661cdd3a08570ae85c313d2.wgsl +11 -0
  24. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5a3a2ba3e1cb848fbbeeafe66425eae65d9fd196646d15eef291188a8179e044.wgsl +24 -0
  25. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5b490e5074446b3ca05ffdd5f79c18e32aa5c23339dd93c75956125f4caba51f.wgsl +24 -0
  26. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5b657fa4e308a89ca0d0edb8cb2a485d6f048dcdbcffb9e2c3a50073be7ad3ff.wgsl +22 -0
  27. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd.wgsl +9 -0
  28. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4.wgsl +12 -0
  29. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51.wgsl +12 -0
  30. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5eac5f92aa4d18895369b11adb99ac0d9639d8b615f7240cffe6f6be7046e54a.wgsl +24 -0
  31. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f4403d78557e88e66d71eb5e53746cc07449a7c421b57eda4f093a09a68a99a.wgsl +9 -0
  32. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f57b46016eccc3b50e3685e142b7deadce8f074f124e643e6e7015e2cc27357.wgsl +9 -0
  33. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f657afde3ab80a1fc4b6739c0b702bc5bd60e52630762e66b210fbb8b42b52a.wgsl +9 -0
  34. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f9d7a23bba38f692aefbf2617133c7884ddbe4ea6d985a89a59c1683dcfd6bf.wgsl +10 -0
  35. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5fbfe4534ce5bfff645563250dd536998f537f4d690c4c2fc422723d5af8e3ec.wgsl +9 -0
  36. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5fd6e068841f5c054392bef564909dbf086bae9e4030f3625d1143244a08cbbf.wgsl +11 -0
  37. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5ffab5e011b6e44aae54b4287fcbe68c4a20cee0779818a3178470f3b6d5ffd6.wgsl +17 -0
  38. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/605f51996eef0769d3b456a83f7540262d1761589b55d1fd41fb2b4dd8fa249f.wgsl +10 -0
  39. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/60a9a411c756055d21d8ec478436ba82e0fd522ccf1eb4488aef6b25769d96c5.wgsl +17 -0
  40. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/62708aacbfcd0063a897e3348ae69a00d4dd155fce6665b18c5176224b039e12.wgsl +17 -0
  41. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/62f30a62c18ed78c9bf37bdc56529accbee2264b9eac931ba0b35a80bb917e7c.wgsl +9 -0
  42. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/63396da046b345383e1c7b09aee551d08e4c3c45030ff5c8bb76bbc34bb2abc6.wgsl +9 -0
  43. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/64f29e6a6e8772f8cfc7449941fd85f70caff7c7e20f316c39b394500e9a8ce1.wgsl +10 -0
  44. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/6633b8c4bd21f4e281eb976cdf9e94037ea3de39224dc79ad89e46b6569f5a60.wgsl +31 -0
  45. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/66978c862f8d1e391ded2424a4132cfea5f0cc7686c76610502bb596224db368.wgsl +28 -0
  46. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/66d2c54f014fcbb9053b0710f63280a933d6ad881f5af3c6df4b553c56b53a53.wgsl +31 -0
  47. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/67816e11d408a6230572433502ace2f9a337285eb623360a1cec493e95add139.wgsl +9 -0
  48. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/67978e951813ede8016ebf553fb8d3b4ce9e15dd184810544879559208d6b7e1.wgsl +10 -0
  49. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/687a9faf59b35be173c2861749834333b53400d1dd22bf430cef04722237a309.wgsl +17 -0
  50. qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/690d8dfb579e55be9c90fa8375f6e2ddde55256a6552a59d83e054f34b485ea0.wgsl +22 -0
.gitattributes CHANGED
@@ -38,3 +38,5 @@ qwen35-08b-fp32-8k-token-major-home/tokenizer/tokenizer.json filter=lfs diff=lfs
38
  qwen35-08b-fp32-int8-g32-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
39
  qwen35-08b-fp32-int8-g32-home-token-major-v2/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
40
  qwen35-2b-fp32-int8-g32-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
 
 
 
38
  qwen35-08b-fp32-int8-g32-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
39
  qwen35-08b-fp32-int8-g32-home-token-major-v2/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
40
  qwen35-2b-fp32-int8-g32-home-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
41
+ qwen35-2b-fp32-int8-g32-home-token-major-v2/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
42
+ qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2/graph.json filter=lfs diff=lfs merge=lfs -text
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4d46494a55ac0b66fdddd47b9422106ac39e0c7d206f01004e13f93a010e1bf5.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 * 49152u;
8
+ if (i >= 49152u) { return; }
9
+ let coord = (i / 1u) % 8u;
10
+ if (coord >= 0u && coord < 4u) { out[i] = f32(b0[(i / 8u) * 4u + (coord - 0u) * 1u + i % 1u]); }
11
+ if (coord >= 4u && coord < 8u) { out[i] = f32(b1[(i / 8u) * 4u + (coord - 4u) * 1u + i % 1u]); }
12
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4d8ebffbbf193b18c13a5cc17d286bf5c92c5ba53ca022af78a9151ec1e5b9c0.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) * 131072u + ((i / 4096u) % 8u) * 16384u + ((i / 64u) % 64u) * 256u + (((i / 1u) % 64u) * 1u + 0u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4f27100b1e707c866f7cdd701f722bed2969be6e71245d4e4a14e1ef7ebe3fcf.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 * 131072u;
13
+ if (i >= 131072u) { return; }
14
+ let token = i32(b0[i / 2048u]);
15
+ if (token < 131072 || token >= 163840) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 131072) * 2048u + i % 2048u));
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4f2c0d08150d4b97d90c244db2d41baca81484c2630dbbd6d586f2d8a4b07b8b.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) * 131072u + ((i / 2048u) % 64u) * 256u + ((i / 256u) % 8u) * 16384u + ((i / 1u) % 256u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4fa24e8f09b07271534341707a7a688af67c7deca1f114bfaeba20a2e066c9f1.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 * 1536u;
8
+ if (i >= 1536u) { return; }
9
+ let coord = (i / 512u) % 3u;
10
+ if (coord == 0u) { out[i] = f32(b0[((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 32u + ((i / 1u) % 32u) * 1u]); } else { out[i] = f32(b1[i]); }
11
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/4fad29e3e337840e25132f10b3e3d55225f727ae13525ff0b0bdf31e03f09d74.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 * 256u;
7
+ if (i >= 256u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(-x);
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/50535e4c99d9fb4a272d8260a1415f6b38a7ad1025da64e145f230df697d9b73.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 * 131072u;
7
+ if (i >= 131072u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(1.0 / (1.0 + exp(-x)));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/51fd4d798491c6a80daff4c18b0495926b7f62269dfc3a78a327faa52ba2a759.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 >= 16u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(exp(x));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/52210a661e4d5241f53b3b1caf65456e1988ddd663ded8ead63ee7f7c7e3ff57.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) * 32768u + ((i / 2048u) % 16u) * 128u + ((i / 128u) % 16u) * 2048u + ((i / 1u) % 128u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5244c41c17f08956963dde4c3784e8e122ba0e3c0d76794c8b3673252f672f27.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) * 18944u + col;
17
+ var acc = 0.0;
18
+ for (var tile = 0u; tile < 2048u; 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 < 2048u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 64u + row) * 2048u + tile + local.x]); }
22
+ if (group.x * 8u + local.y < 18944u && tile + local.x < 2048u) { tile_b[local.x * 8u + local.y] = unpack_bf16_1((group.x * 8u + local.y) * 2048u + 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 < 18944u) { out[i] = f32(acc + 0.0); }
28
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/52b439507af68e969a6e116d3c8ea5338a4cde5a3fc1e97b729512d17ab2f4f9.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 >= 16u) { return; }
8
+ out[i] = i32(b0[((i / 1u) % 4u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/52d5f0189ff49849070362fea5585100e0c7a9eb6ff6722e3b545c113b965292.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 * 4u + row) * 32768u + col;
17
+ var acc = 0.0;
18
+ for (var tile = 0u; tile < 2048u; 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 < 4u && tile + local.x < 2048u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 4u + row) * 2048u + tile + local.x]); }
22
+ if (group.x * 8u + local.y < 32768u && tile + local.x < 2048u) { tile_b[local.x * 8u + local.y] = unpack_bf16_1((group.x * 8u + local.y) * 2048u + 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 < 4u && col < 32768u) { out[i] = f32(acc + 0.0); }
28
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/53d6eb0b5e6d49bfd3bb9fd1b781e13317adf528e047da2416e95f5a3a13b1b4.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 / 32u) % 1u) * 1u + ((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/55b9c48ba429daf80bbae0b4737f895b475abdc9ddfdc88ab2f894f133ec2bf9.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 * 30720u;
7
+ if (i >= 30720u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(x / (1.0 + exp(-x)));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/56167a7e8fb1c67fa72948a8baa71866d54cc775be83f8cfa75a947ac0f58b12.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 * 640u;
7
+ if (i >= 640u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/564b62d37d6845f8049f903d4ba35762c607937d8a9644bfe511fbc7bf90dacd.wgsl ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ var<workgroup> factor: f32;
6
+ @compute @workgroup_size(64)
7
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
8
+ let row = group.x + group.y * 64u;
9
+ if (row >= 64u) { return; }
10
+ let lane = local.x;
11
+ if (lane == 0u) {
12
+ var total = 0.0;
13
+ for (var j = 0u; j < 128u; j++) {
14
+ let v = f32(b0[row * 128u + j]);
15
+ total += v * v;
16
+ }
17
+ factor = inverseSqrt(total / 128.0 + 1e-06);
18
+ }
19
+ workgroupBarrier();
20
+ for (var p = lane; p < 128u; p += 64u) {
21
+ let i = row * 128u + p;
22
+ out[i] = f32(f32(b0[row * 128u + p]) * factor * (f32(b1[p]) + 0.0));
23
+ }
24
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/56ea85fd6d5f7cc9394d6aa0ee2fdeee921dc84957548088041c975ba925c6a0.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 * 524288u;
8
+ if (i >= 524288u) { return; }
9
+ let batch = i / 65536u;
10
+ let row = (i / 4096u) % 16u;
11
+ let col = i % 4096u;
12
+ var acc = 0.0;
13
+ for (var p = 0u; p < 256u; p++) {
14
+ acc += f32(b0[(((batch / 1u) % 8u) * 4096u) + row * 256u + p]) * f32(b1[(((batch / 1u) % 8u) * 1048576u) + p * 4096u + col]);
15
+ }
16
+ out[i] = f32(acc);
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/577120bb3cdd5d1fb64df75a3d9d9bfb7df9a47cbe10c3df4702cdedda8742f2.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 * 32768u;
13
+ if (i >= 32768u) { return; }
14
+ let token = i32(b0[i / 2048u]);
15
+ if (token < 131072 || token >= 163840) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 131072) * 2048u + i % 2048u));
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/57dc406322bf3badd8490493ef924bd7e7e0afd542d2d6e409b4d8a3b4b784f7.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 >= 16u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/58077eb80a5fa253f535c97c82dc07edd48455a17cc52583aeee41c7d1bbd0b3.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(b0[((i / 1024u) % 1u) * 2048u + ((i / 512u) % 2u) * 1024u + ((i / 32u) % 16u) * 64u + (((i / 1u) % 32u) * 1u + 0u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/58a04f81024c554fa7384cf7989536e51ab65a353203039f95c9787453ee627c.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) * 18944u + col;
17
+ var acc = 0.0;
18
+ for (var tile = 0u; tile < 2048u; 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 < 2048u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 16u + row) * 2048u + tile + local.x]); }
22
+ if (group.x * 8u + local.y < 18944u && tile + local.x < 2048u) { tile_b[local.x * 8u + local.y] = unpack_bf16_1((group.x * 8u + local.y) * 2048u + 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 < 18944u) { out[i] = f32(acc + 0.0); }
28
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/59ea88d691b919af03bbb26f0253decfbc35d74f9661cdd3a08570ae85c313d2.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 * 64u;
7
+ if (i >= 16u) { 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-2b-fp32-int8-g32-home-token-major-v2/kernels/5a3a2ba3e1cb848fbbeeafe66425eae65d9fd196646d15eef291188a8179e044.wgsl ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ var<workgroup> factor: f32;
6
+ @compute @workgroup_size(64)
7
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
8
+ let row = group.x + group.y * 256u;
9
+ if (row >= 256u) { return; }
10
+ let lane = local.x;
11
+ if (lane == 0u) {
12
+ var total = 0.0;
13
+ for (var j = 0u; j < 128u; j++) {
14
+ let v = f32(b0[row * 128u + j]);
15
+ total += v * v;
16
+ }
17
+ factor = inverseSqrt(total / 128.0 + 1e-06);
18
+ }
19
+ workgroupBarrier();
20
+ for (var p = lane; p < 128u; p += 64u) {
21
+ let i = row * 128u + p;
22
+ out[i] = f32(f32(b0[row * 128u + p]) * factor * (f32(b1[p]) + 0.0));
23
+ }
24
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5b490e5074446b3ca05ffdd5f79c18e32aa5c23339dd93c75956125f4caba51f.wgsl ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ var<workgroup> factor: f32;
6
+ @compute @workgroup_size(64)
7
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
8
+ let row = group.x + group.y * 1u;
9
+ if (row >= 1u) { return; }
10
+ let lane = local.x;
11
+ if (lane == 0u) {
12
+ var total = 0.0;
13
+ for (var j = 0u; j < 2048u; j++) {
14
+ let v = f32(b0[row * 2048u + j]);
15
+ total += v * v;
16
+ }
17
+ factor = inverseSqrt(total / 2048.0 + 1e-06);
18
+ }
19
+ workgroupBarrier();
20
+ for (var p = lane; p < 2048u; p += 64u) {
21
+ let i = row * 2048u + p;
22
+ out[i] = f32(f32(b0[row * 2048u + p]) * factor * (f32(b1[p]) + 1.0));
23
+ }
24
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5b657fa4e308a89ca0d0edb8cb2a485d6f048dcdbcffb9e2c3a50073be7ad3ff.wgsl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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> b6: array<f32>;
8
+ @group(0) @binding(7) var<storage, read_write> out: array<f32>;
9
+
10
+ @compute @workgroup_size(64)
11
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
12
+ let i = gid.x + gid.y * 917504u;
13
+ if (i >= 917504u) { return; }
14
+ let coord = (i / 1u) % 229376u;
15
+ if (coord >= 0u && coord < 32768u) { out[i] = f32(b0[(i / 229376u) * 32768u + (coord - 0u) * 1u + i % 1u]); }
16
+ if (coord >= 32768u && coord < 65536u) { out[i] = f32(b1[(i / 229376u) * 32768u + (coord - 32768u) * 1u + i % 1u]); }
17
+ if (coord >= 65536u && coord < 98304u) { out[i] = f32(b2[(i / 229376u) * 32768u + (coord - 65536u) * 1u + i % 1u]); }
18
+ if (coord >= 98304u && coord < 131072u) { out[i] = f32(b3[(i / 229376u) * 32768u + (coord - 98304u) * 1u + i % 1u]); }
19
+ if (coord >= 131072u && coord < 163840u) { out[i] = f32(b4[(i / 229376u) * 32768u + (coord - 131072u) * 1u + i % 1u]); }
20
+ if (coord >= 163840u && coord < 196608u) { out[i] = f32(b5[(i / 229376u) * 32768u + (coord - 163840u) * 1u + i % 1u]); }
21
+ if (coord >= 196608u && coord < 229376u) { out[i] = f32(b6[(i / 229376u) * 32768u + (coord - 196608u) * 1u + i % 1u]); }
22
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd.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 / 256u) % 1u) * 512u + ((i / 32u) % 8u) * 64u + ((i / 32u) % 1u) * 64u + (((i / 1u) % 32u) * 1u + 0u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4.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 * 128u;
8
+ if (i >= 128u) { return; }
9
+ let coord = (i / 1u) % 64u;
10
+ if (coord >= 0u && coord < 32u) { out[i] = f32(b0[(i / 64u) * 32u + (coord - 0u) * 1u + i % 1u]); }
11
+ if (coord >= 32u && coord < 64u) { out[i] = f32(b1[(i / 64u) * 32u + (coord - 32u) * 1u + i % 1u]); }
12
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51.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 * 122880u;
8
+ if (i >= 122880u) { return; }
9
+ let coord = (i / 1u) % 20u;
10
+ if (coord >= 0u && coord < 4u) { out[i] = f32(b0[(i / 20u) * 4u + (coord - 0u) * 1u + i % 1u]); }
11
+ if (coord >= 4u && coord < 20u) { out[i] = f32(b1[(i / 20u) * 16u + (coord - 4u) * 1u + i % 1u]); }
12
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5eac5f92aa4d18895369b11adb99ac0d9639d8b615f7240cffe6f6be7046e54a.wgsl ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ var<workgroup> factor: f32;
6
+ @compute @workgroup_size(64)
7
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
8
+ let row = group.x + group.y * 2u;
9
+ if (row >= 2u) { return; }
10
+ let lane = local.x;
11
+ if (lane == 0u) {
12
+ var total = 0.0;
13
+ for (var j = 0u; j < 256u; j++) {
14
+ let v = f32(b0[row * 256u + j]);
15
+ total += v * v;
16
+ }
17
+ factor = inverseSqrt(total / 256.0 + 1e-06);
18
+ }
19
+ workgroupBarrier();
20
+ for (var p = lane; p < 256u; p += 64u) {
21
+ let i = row * 256u + p;
22
+ out[i] = f32(f32(b0[row * 256u + p]) * factor * (f32(b1[p]) + 1.0));
23
+ }
24
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f4403d78557e88e66d71eb5e53746cc07449a7c421b57eda4f093a09a68a99a.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 * 4096u;
7
+ if (i >= 4096u) { return; }
8
+ out[i] = f32(b0[i]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f57b46016eccc3b50e3685e142b7deadce8f074f124e643e6e7015e2cc27357.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[0u * 512u + ((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 32u + ((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f657afde3ab80a1fc4b6739c0b702bc5bd60e52630762e66b210fbb8b42b52a.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 * 384u;
7
+ if (i >= 384u) { return; }
8
+ out[i] = f32(b0[((i / 384u) % 1u) * 512u + ((i / 192u) % 2u) * 256u + ((i / 192u) % 1u) * 256u + (((i / 1u) % 192u) * 1u + 64u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5f9d7a23bba38f692aefbf2617133c7884ddbe4ea6d985a89a59c1683dcfd6bf.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 * 256u;
8
+ if (i >= 256u) { return; }
9
+ out[i] = f32(f32(b0[i]) + (f32(b1[((i / 1u) % 16u) * 1u]) * 1.0));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5fbfe4534ce5bfff645563250dd536998f537f4d690c4c2fc422723d5af8e3ec.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 * 192u;
7
+ if (i >= 160u) { return; }
8
+ out[i] = f32(b0[((i / 160u) % 1u) * 512u + ((i / 10u) % 16u) * 32u + (((i / 1u) % 10u) * 3u + 2u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5fd6e068841f5c054392bef564909dbf086bae9e4030f3625d1143244a08cbbf.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 * 64u;
7
+ if (i >= 64u) { return; }
8
+ let coord = (i / 1u) % 64u;
9
+ if (coord >= 0u && coord < 32u) { out[i] = f32(b0[(i / 64u) * 32u + (coord - 0u) * 1u + i % 1u]); }
10
+ if (coord >= 32u && coord < 64u) { out[i] = f32(b0[(i / 64u) * 32u + (coord - 32u) * 1u + i % 1u]); }
11
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/5ffab5e011b6e44aae54b4287fcbe68c4a20cee0779818a3178470f3b6d5ffd6.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 * 8192u;
13
+ if (i >= 8192u) { return; }
14
+ let token = i32(b0[i / 2048u]);
15
+ if (token < 131072 || token >= 163840) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 131072) * 2048u + i % 2048u));
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/605f51996eef0769d3b456a83f7540262d1761589b55d1fd41fb2b4dd8fa249f.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 * 8192u;
8
+ if (i >= 8192u) { return; }
9
+ out[i] = f32(f32(b0[i]) + (f32(b1[i]) * 1.0));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/60a9a411c756055d21d8ec478436ba82e0fd522ccf1eb4488aef6b25769d96c5.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 * 8192u;
8
+ if (i >= 8192u) { return; }
9
+ let batch = i / 1024u;
10
+ let row = (i / 256u) % 4u;
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) * 16384u) + row * 4096u + p]) * f32(b1[(((batch / 1u) % 8u) * 1048576u) + p * 256u + col]);
15
+ }
16
+ out[i] = f32(acc);
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/62708aacbfcd0063a897e3348ae69a00d4dd155fce6665b18c5176224b039e12.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 * 131072u;
13
+ if (i >= 131072u) { return; }
14
+ let token = i32(b0[i / 2048u]);
15
+ if (token < 32768 || token >= 65536) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 32768) * 2048u + i % 2048u));
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/62f30a62c18ed78c9bf37bdc56529accbee2264b9eac931ba0b35a80bb917e7c.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[2u * 128u + ((i / 128u) % 1u) * 128u + ((i / 32u) % 4u) * 32u + ((i / 1u) % 32u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/63396da046b345383e1c7b09aee551d08e4c3c45030ff5c8bb76bbc34bb2abc6.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) * 32768u + ((i / 4096u) % 8u) * 256u + ((i / 256u) % 16u) * 2048u + ((i / 1u) % 256u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/64f29e6a6e8772f8cfc7449941fd85f70caff7c7e20f316c39b394500e9a8ce1.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(inverseSqrt(x));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/6633b8c4bd21f4e281eb976cdf9e94037ea3de39224dc79ad89e46b6569f5a60.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 / 2048u;
7
+ let col = index % 2048u;
8
+ let word = b1[row * 512u + col / 4u];
9
+ let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128;
10
+ return f32(code) * b2[row * 64u + 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 * 4u + row) * 6144u + col;
20
+ var acc = 0.0;
21
+ for (var tile = 0u; tile < 2048u; 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 < 4u && tile + local.x < 2048u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 4u + row) * 2048u + tile + local.x]); }
25
+ if (group.x * 8u + local.y < 6144u && tile + local.x < 2048u) { tile_b[local.x * 8u + local.y] = dequant_1((group.x * 8u + local.y) * 2048u + 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 < 4u && col < 6144u) { out[i] = f32(acc + 0.0); }
31
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/66978c862f8d1e391ded2424a4132cfea5f0cc7686c76610502bb596224db368.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> 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 / 2048u;
7
+ let col = index % 2048u;
8
+ let word = b1[row * 512u + col / 4u];
9
+ let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128;
10
+ return f32(code) * b2[row * 64u + col / 32u];
11
+ }
12
+
13
+ var<workgroup> partial: array<f32, 64>;
14
+ @compute @workgroup_size(64)
15
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
16
+ let i = group.x + group.y * 4096u;
17
+ if (i >= 4096u) { return; }
18
+ let lane = local.x;
19
+ var acc = 0.0;
20
+ for (var p = lane; p < 2048u; p += 64u) { acc += f32(b0[(i / 4096u) * 2048u + p]) * dequant_1((i % 4096u) * 2048u + p); }
21
+ partial[lane] = acc;
22
+ workgroupBarrier();
23
+ for (var stride = 32u; stride > 0u; stride /= 2u) {
24
+ if (lane < stride) { partial[lane] += partial[lane + stride]; }
25
+ workgroupBarrier();
26
+ }
27
+ if (lane == 0u) { out[i] = f32(partial[0] + 0.0); }
28
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/66d2c54f014fcbb9053b0710f63280a933d6ad881f5af3c6df4b553c56b53a53.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 / 6144u;
7
+ let col = index % 6144u;
8
+ let word = b1[row * 1536u + col / 4u];
9
+ let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128;
10
+ return f32(code) * b2[row * 192u + 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 * 4u + row) * 2048u + col;
20
+ var acc = 0.0;
21
+ for (var tile = 0u; tile < 6144u; 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 < 4u && tile + local.x < 6144u) { tile_a[local.y * 8u + local.x] = f32(b0[(group.z * 4u + row) * 6144u + tile + local.x]); }
25
+ if (group.x * 8u + local.y < 2048u && tile + local.x < 6144u) { tile_b[local.x * 8u + local.y] = dequant_1((group.x * 8u + local.y) * 6144u + 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 < 4u && col < 2048u) { out[i] = f32(acc + 0.0); }
31
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/67816e11d408a6230572433502ace2f9a337285eb623360a1cec493e95add139.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 / 1024u) % 2u) * 256u + ((i / 256u) % 4u) * 512u + ((i / 1u) % 256u) * 1u]);
9
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/67978e951813ede8016ebf553fb8d3b4ce9e15dd184810544879559208d6b7e1.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 >= 16u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(1.0 / (1.0 + exp(-x)));
10
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/687a9faf59b35be173c2861749834333b53400d1dd22bf430cef04722237a309.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 * 8192u;
13
+ if (i >= 8192u) { return; }
14
+ let token = i32(b0[i / 2048u]);
15
+ if (token < 98304 || token >= 131072) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 98304) * 2048u + i % 2048u));
17
+ }
qwen35-2b-fp32-int8-g32-home-token-major-v2/kernels/690d8dfb579e55be9c90fa8375f6e2ddde55256a6552a59d83e054f34b485ea0.wgsl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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> b6: array<f32>;
8
+ @group(0) @binding(7) var<storage, read_write> out: array<f32>;
9
+
10
+ @compute @workgroup_size(64)
11
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
12
+ let i = gid.x + gid.y * 229376u;
13
+ if (i >= 229376u) { return; }
14
+ let coord = (i / 1u) % 229376u;
15
+ if (coord >= 0u && coord < 32768u) { out[i] = f32(b0[(i / 229376u) * 32768u + (coord - 0u) * 1u + i % 1u]); }
16
+ if (coord >= 32768u && coord < 65536u) { out[i] = f32(b1[(i / 229376u) * 32768u + (coord - 32768u) * 1u + i % 1u]); }
17
+ if (coord >= 65536u && coord < 98304u) { out[i] = f32(b2[(i / 229376u) * 32768u + (coord - 65536u) * 1u + i % 1u]); }
18
+ if (coord >= 98304u && coord < 131072u) { out[i] = f32(b3[(i / 229376u) * 32768u + (coord - 98304u) * 1u + i % 1u]); }
19
+ if (coord >= 131072u && coord < 163840u) { out[i] = f32(b4[(i / 229376u) * 32768u + (coord - 131072u) * 1u + i % 1u]); }
20
+ if (coord >= 163840u && coord < 196608u) { out[i] = f32(b5[(i / 229376u) * 32768u + (coord - 163840u) * 1u + i % 1u]); }
21
+ if (coord >= 196608u && coord < 229376u) { out[i] = f32(b6[(i / 229376u) * 32768u + (coord - 196608u) * 1u + i % 1u]); }
22
+ }