9bow commited on
Commit
4bca4e2
·
verified ·
1 Parent(s): 850ed86

Add qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6 (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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl +10 -0
  3. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl +10 -0
  4. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl +11 -0
  5. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b.wgsl +40 -0
  6. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl +9 -0
  7. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7b0c51677aa6c03cbc5b36f07b4895bfdd46309ffd851a38a38e5761d9eef38.wgsl +11 -0
  8. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl +9 -0
  9. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189.wgsl +59 -0
  10. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl +17 -0
  11. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl +9 -0
  12. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl +10 -0
  13. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl +9 -0
  14. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl +10 -0
  15. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl +10 -0
  16. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl +9 -0
  17. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl +9 -0
  18. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl +10 -0
  19. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl +11 -0
  20. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/aeee4bc86f9b4986043125d462e8fed051591da36bd013e5c7c31c3449353452.wgsl +17 -0
  21. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl +11 -0
  22. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl +9 -0
  23. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b1741cc45db17fa6e66bd797a89a3e3ca7cc70854e55c9e549d4f8500ef5a509.wgsl +17 -0
  24. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl +10 -0
  25. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl +9 -0
  26. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl +9 -0
  27. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07.wgsl +40 -0
  28. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl +11 -0
  29. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9.wgsl +25 -0
  30. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl +9 -0
  31. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl +9 -0
  32. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b64a63c60f91d717d7879df834c3443b1675c875093fad7b05da47fac5d61fc4.wgsl +10 -0
  33. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl +10 -0
  34. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl +9 -0
  35. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl +10 -0
  36. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bc22275618821f75af681d7a4d901fcd863aefc1ab3cf44da85ef9b0cf8b6790.wgsl +17 -0
  37. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566.wgsl +24 -0
  38. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl +9 -0
  39. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bcbc26c7be0f06e801dcc384ef7de68f07d5b1b91b84e0615d4b922f73944318.wgsl +59 -0
  40. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39.wgsl +59 -0
  41. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl +9 -0
  42. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl +9 -0
  43. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl +12 -0
  44. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39.wgsl +25 -0
  45. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl +10 -0
  46. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129.wgsl +59 -0
  47. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl +10 -0
  48. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl +11 -0
  49. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl +10 -0
  50. qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl +9 -0
.gitattributes CHANGED
@@ -90,3 +90,4 @@ qwen35-08b-fp32-int8-g32-home-token-major-v2-v6/tokenizer/tokenizer.json filter=
90
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/graph.json filter=lfs diff=lfs merge=lfs -text
91
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
92
  qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/graph.json filter=lfs diff=lfs merge=lfs -text
 
 
90
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/graph.json filter=lfs diff=lfs merge=lfs -text
91
  qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
92
  qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/graph.json filter=lfs diff=lfs merge=lfs -text
93
+ qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b.wgsl ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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> key_row: array<f32, 128>;
10
+ var<workgroup> query_row: array<f32, 128>;
11
+ @compute @workgroup_size(128)
12
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
13
+ let head = group.x;
14
+ let batch_index = group.y;
15
+ let column = local.x;
16
+ var column_state: array<f32, 128>;
17
+ for (var k = 0u; k < 128u; k++) { column_state[k] = f32(b5[((batch_index * 16u + head) * 128u + k) * 128u + column]); }
18
+ for (var token = 0u; token < 64u; token++) {
19
+ for (var index = column; index < 128u; index += 128u) {
20
+ key_row[index] = f32(b1[((batch_index * 64u + token) * 16u + head) * 128u + index]);
21
+ query_row[index] = f32(b0[((batch_index * 64u + token) * 16u + head) * 128u + index]);
22
+ }
23
+ workgroupBarrier();
24
+ let factor = exp(f32(b3[((batch_index * 64u + token) * 16u + head)]));
25
+ var remembered = 0.0;
26
+ for (var k = 0u; k < 128u; k++) {
27
+ column_state[k] *= factor;
28
+ remembered += column_state[k] * key_row[k];
29
+ }
30
+ let delta = (f32(b2[((batch_index * 64u + token) * 16u + head) * 128u + column]) - remembered) * f32(b4[((batch_index * 64u + token) * 16u + head)]);
31
+ var total = 0.0;
32
+ for (var k = 0u; k < 128u; k++) {
33
+ column_state[k] += key_row[k] * delta;
34
+ total += column_state[k] * query_row[k];
35
+ }
36
+ out[((batch_index * 16u + head) * 192u + 128u + token) * 128u + column] = f32(total * 0.08838834764831845);
37
+ workgroupBarrier();
38
+ }
39
+ for (var k = 0u; k < 128u; k++) { out[((batch_index * 16u + head) * 192u + k) * 128u + column] = f32(column_state[k]); }
40
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7b0c51677aa6c03cbc5b36f07b4895bfdd46309ffd851a38a38e5761d9eef38.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> b2: array<i32>;
4
+ @group(0) @binding(3) var<storage, read_write> out: array<f32>;
5
+
6
+ @compute @workgroup_size(64)
7
+ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
8
+ let i = gid.x + gid.y * 2048u;
9
+ if (i >= 2048u) { return; }
10
+ out[i] = f32(select(f32(b0[i]), f32(b1[i]), f32(b2[0u]) != 0.0));
11
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189.wgsl ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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<array<f32, 16>, 16>;
11
+ var<workgroup> tile_b: array<array<f32, 64>, 16>;
12
+ @compute @workgroup_size(16, 16)
13
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
14
+ let lane = local.y * 16u + local.x;
15
+ let batch = group.z;
16
+ let tile_n = group.x * 64u;
17
+ let tile_row = group.y * 16u;
18
+ var acc: array<array<f32, 4>, 1>;
19
+ for (var k0 = 0u; k0 < 2048u; k0 += 16u) {
20
+ for (var e = 0u; e < 1u; e++) {
21
+ let flat = lane + e * 256u;
22
+ let m_local = flat / 16u;
23
+ let row = tile_row + m_local;
24
+ let col = k0 + flat % 16u;
25
+ var value = 0.0;
26
+ if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); }
27
+ tile_a[m_local][flat % 16u] = value;
28
+ }
29
+ for (var e = 0u; e < 4u; e++) {
30
+ let n_local = lane / 4u;
31
+ let k_local = (lane % 4u) * 4u + e;
32
+ let n_index = tile_n + n_local;
33
+ let col = k0 + k_local;
34
+ var value = 0.0;
35
+ if (n_index < 16u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); }
36
+ tile_b[k_local][n_local] = value;
37
+ }
38
+ workgroupBarrier();
39
+ for (var kk = 0u; kk < 16u; kk++) {
40
+ var b_values: array<f32, 4>;
41
+ for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; }
42
+ for (var r = 0u; r < 1u; r++) {
43
+ let a_value = tile_a[local.y * 1u + r][kk];
44
+ for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; }
45
+ }
46
+ }
47
+ workgroupBarrier();
48
+ }
49
+ for (var r = 0u; r < 1u; r++) {
50
+ let out_row = tile_row + local.y * 1u + r;
51
+ for (var c = 0u; c < 4u; c++) {
52
+ let out_col = tile_n + local.x * 4u + c;
53
+ if (out_row < 4u && out_col < 16u) {
54
+ let i = (batch * 4u + out_row) * 16u + out_col;
55
+ out[i] = f32(acc[r][c] + 0.0);
56
+ }
57
+ }
58
+ }
59
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/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
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.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 * 4096u;
7
+ if (i >= 4096u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(-x);
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.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 * 128u;
8
+ if (i >= 128u) { return; }
9
+ let coord = (i / 1u) % 32u;
10
+ if (coord >= 2u && coord < 32u && (coord - 2u) % 3u == 0u) { out[i] = f32(b0[((i / 128u) % 1u) * 40u + ((i / 32u) % 4u) * 10u + ((((i / 1u) % 32u) - 2u) / 3u) * 1u]); } else { out[i] = f32(b1[i]); }
11
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/aeee4bc86f9b4986043125d462e8fed051591da36bd013e5c7c31c3449353452.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 * 2048u;
13
+ if (i >= 2048u) { return; }
14
+ let token = i32(b0[i / 2048u]);
15
+ if (token < 229376 || token >= 248320) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 229376) * 2048u + i % 2048u));
17
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.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 x = f32(b0[i]); let s = f32(f32(x / (1.0 + exp(-x))));
10
+ out[i] = f32(s * f32(b1[i]));
11
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.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 * 1536u;
7
+ if (i >= 1536u) { return; }
8
+ out[i] = f32(b0[((i / 512u) % 3u) * 512u + ((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 1u + ((i / 1u) % 32u) * 16u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b1741cc45db17fa6e66bd797a89a3e3ca7cc70854e55c9e549d4f8500ef5a509.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 < 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-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.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 * 2048u;
8
+ if (i >= 2048u) { return; }
9
+ out[i] = f32(f32(b0[i]) * f32(b1[((i / 128u) % 16u) * 1u]));
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.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 / 128u) % 2u) * 256u + ((i / 32u) % 4u) * 64u + (((i / 1u) % 32u) * 1u + 32u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.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 * 30720u;
7
+ if (i >= 30720u) { return; }
8
+ out[i] = f32(b0[((i / 30720u) % 1u) * 49152u + ((i / 5u) % 6144u) * 8u + (((i / 1u) % 5u) * 1u + 0u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07.wgsl ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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> key_row: array<f32, 128>;
10
+ var<workgroup> query_row: array<f32, 128>;
11
+ @compute @workgroup_size(128)
12
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
13
+ let head = group.x;
14
+ let batch_index = group.y;
15
+ let column = local.x;
16
+ var column_state: array<f32, 128>;
17
+ for (var k = 0u; k < 128u; k++) { column_state[k] = f32(b5[((batch_index * 16u + head) * 128u + k) * 128u + column]); }
18
+ for (var token = 0u; token < 16u; token++) {
19
+ for (var index = column; index < 128u; index += 128u) {
20
+ key_row[index] = f32(b1[((batch_index * 16u + token) * 16u + head) * 128u + index]);
21
+ query_row[index] = f32(b0[((batch_index * 16u + token) * 16u + head) * 128u + index]);
22
+ }
23
+ workgroupBarrier();
24
+ let factor = exp(f32(b3[((batch_index * 16u + token) * 16u + head)]));
25
+ var remembered = 0.0;
26
+ for (var k = 0u; k < 128u; k++) {
27
+ column_state[k] *= factor;
28
+ remembered += column_state[k] * key_row[k];
29
+ }
30
+ let delta = (f32(b2[((batch_index * 16u + token) * 16u + head) * 128u + column]) - remembered) * f32(b4[((batch_index * 16u + token) * 16u + head)]);
31
+ var total = 0.0;
32
+ for (var k = 0u; k < 128u; k++) {
33
+ column_state[k] += key_row[k] * delta;
34
+ total += column_state[k] * query_row[k];
35
+ }
36
+ out[((batch_index * 16u + head) * 144u + 128u + token) * 128u + column] = f32(total * 0.08838834764831845);
37
+ workgroupBarrier();
38
+ }
39
+ for (var k = 0u; k < 128u; k++) { out[((batch_index * 16u + head) * 144u + k) * 128u + column] = f32(column_state[k]); }
40
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.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 >= 2u && coord < 32u && (coord - 2u) % 3u == 0u) { out[i] = f32(b0[((i / 2048u) % 1u) * 640u + ((i / 32u) % 64u) * 10u + ((((i / 1u) % 32u) - 2u) / 3u) * 1u]); } else { out[i] = f32(b1[i]); }
11
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9.wgsl ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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> partial: array<f32, 64>;
11
+ @compute @workgroup_size(64)
12
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
13
+ let i = group.x + group.y * 16u;
14
+ if (i >= 16u) { return; }
15
+ let lane = local.x;
16
+ var acc = 0.0;
17
+ for (var p = lane; p < 2048u; p += 64u) { acc += f32(b0[(i / 16u) * 2048u + p]) * unpack_bf16_1((i % 16u) * 2048u + p); }
18
+ partial[lane] = acc;
19
+ workgroupBarrier();
20
+ for (var stride = 32u; stride > 0u; stride /= 2u) {
21
+ if (lane < stride) { partial[lane] += partial[lane + stride]; }
22
+ workgroupBarrier();
23
+ }
24
+ if (lane == 0u) { out[i] = f32(partial[0] + 0.0); }
25
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.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) * 512u + ((i / 256u) % 2u) * 256u + ((i / 256u) % 1u) * 512u + ((i / 1u) % 256u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.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 / 4096u) % 1u) * 8192u + ((i / 512u) % 8u) * 1024u + ((i / 32u) % 16u) * 64u + (((i / 1u) % 32u) * 1u + 0u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b64a63c60f91d717d7879df834c3443b1675c875093fad7b05da47fac5d61fc4.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 * 303104u;
7
+ if (i >= 303104u) { return; }
8
+ let coord = (i / 1u) % 18944u;
9
+ if (coord >= 0u && coord < 18944u) { out[i] = f32(b0[(i / 18944u) * 18944u + (coord - 0u) * 1u + i % 1u]); }
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.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 * 49152u;
7
+ if (i >= 49152u) { return; }
8
+ let x = f32(b0[i]);
9
+ out[i] = f32(x / (1.0 + exp(-x)));
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.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 * 262144u;
7
+ if (i >= 262144u) { return; }
8
+ out[i] = f32(b0[((i / 262144u) % 1u) * 393216u + ((i / 16384u) % 16u) * 24576u + (((i / 128u) % 128u) * 1u + 0u) * 128u + ((i / 1u) % 128u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.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 * 2048u;
8
+ if (i >= 2048u) { return; }
9
+ out[i] = f32(f32(b0[i]) - (f32(b1[i]) * 1.0));
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bc22275618821f75af681d7a4d901fcd863aefc1ab3cf44da85ef9b0cf8b6790.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 < 229376 || token >= 248320) { out[i] = f32(0.0); return; }
16
+ out[i] = f32(unpack_bf16_1(u32(token - 229376) * 2048u + i % 2048u));
17
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566.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 * 4u;
9
+ if (row >= 4u) { 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-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.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 / 16384u) % 2u) * 256u + ((i / 256u) % 64u) * 512u + ((i / 1u) % 256u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bcbc26c7be0f06e801dcc384ef7de68f07d5b1b91b84e0615d4b922f73944318.wgsl ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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<array<f32, 16>, 16>;
11
+ var<workgroup> tile_b: array<array<f32, 64>, 16>;
12
+ @compute @workgroup_size(16, 16)
13
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
14
+ let lane = local.y * 16u + local.x;
15
+ let batch = group.z;
16
+ let tile_n = group.x * 64u;
17
+ let tile_row = group.y * 16u;
18
+ var acc: array<array<f32, 4>, 1>;
19
+ for (var k0 = 0u; k0 < 2048u; k0 += 16u) {
20
+ for (var e = 0u; e < 1u; e++) {
21
+ let flat = lane + e * 256u;
22
+ let m_local = flat / 16u;
23
+ let row = tile_row + m_local;
24
+ let col = k0 + flat % 16u;
25
+ var value = 0.0;
26
+ if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); }
27
+ tile_a[m_local][flat % 16u] = value;
28
+ }
29
+ for (var e = 0u; e < 4u; e++) {
30
+ let n_local = lane / 4u;
31
+ let k_local = (lane % 4u) * 4u + e;
32
+ let n_index = tile_n + n_local;
33
+ let col = k0 + k_local;
34
+ var value = 0.0;
35
+ if (n_index < 32768u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); }
36
+ tile_b[k_local][n_local] = value;
37
+ }
38
+ workgroupBarrier();
39
+ for (var kk = 0u; kk < 16u; kk++) {
40
+ var b_values: array<f32, 4>;
41
+ for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; }
42
+ for (var r = 0u; r < 1u; r++) {
43
+ let a_value = tile_a[local.y * 1u + r][kk];
44
+ for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; }
45
+ }
46
+ }
47
+ workgroupBarrier();
48
+ }
49
+ for (var r = 0u; r < 1u; r++) {
50
+ let out_row = tile_row + local.y * 1u + r;
51
+ for (var c = 0u; c < 4u; c++) {
52
+ let out_col = tile_n + local.x * 4u + c;
53
+ if (out_row < 4u && out_col < 32768u) {
54
+ let i = (batch * 4u + out_row) * 32768u + out_col;
55
+ out[i] = f32(acc[r][c] + 0.0);
56
+ }
57
+ }
58
+ }
59
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39.wgsl ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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<array<f32, 16>, 64>;
11
+ var<workgroup> tile_b: array<array<f32, 64>, 16>;
12
+ @compute @workgroup_size(16, 16)
13
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
14
+ let lane = local.y * 16u + local.x;
15
+ let batch = group.z;
16
+ let tile_n = group.x * 64u;
17
+ let tile_row = group.y * 64u;
18
+ var acc: array<array<f32, 4>, 4>;
19
+ for (var k0 = 0u; k0 < 6144u; k0 += 16u) {
20
+ for (var e = 0u; e < 4u; e++) {
21
+ let flat = lane + e * 256u;
22
+ let m_local = flat / 16u;
23
+ let row = tile_row + m_local;
24
+ let col = k0 + flat % 16u;
25
+ var value = 0.0;
26
+ if (row < 64u && col < 6144u) { value = f32(f32(b0[(batch * 64u + row) * 6144u + col])); }
27
+ tile_a[m_local][flat % 16u] = value;
28
+ }
29
+ for (var e = 0u; e < 4u; e++) {
30
+ let n_local = lane / 4u;
31
+ let k_local = (lane % 4u) * 4u + e;
32
+ let n_index = tile_n + n_local;
33
+ let col = k0 + k_local;
34
+ var value = 0.0;
35
+ if (n_index < 2048u && col < 6144u) { value = f32(unpack_bf16_1(n_index * 6144u + col)); }
36
+ tile_b[k_local][n_local] = value;
37
+ }
38
+ workgroupBarrier();
39
+ for (var kk = 0u; kk < 16u; kk++) {
40
+ var b_values: array<f32, 4>;
41
+ for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; }
42
+ for (var r = 0u; r < 4u; r++) {
43
+ let a_value = tile_a[local.y * 4u + r][kk];
44
+ for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; }
45
+ }
46
+ }
47
+ workgroupBarrier();
48
+ }
49
+ for (var r = 0u; r < 4u; r++) {
50
+ let out_row = tile_row + local.y * 4u + r;
51
+ for (var c = 0u; c < 4u; c++) {
52
+ let out_col = tile_n + local.x * 4u + c;
53
+ if (out_row < 64u && out_col < 2048u) {
54
+ let i = (batch * 64u + out_row) * 2048u + out_col;
55
+ out[i] = f32(acc[r][c] + 0.0);
56
+ }
57
+ }
58
+ }
59
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.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) * 32768u + ((i / 12288u) % 2u) * 16384u + ((i / 192u) % 64u) * 256u + (((i / 1u) % 192u) * 1u + 64u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.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) * 417792u + ((i / 4u) % 6144u) * 68u + (((i / 1u) % 4u) * 1u + 64u) * 1u]);
9
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.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 * 2048u;
8
+ if (i >= 2048u) { 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-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39.wgsl ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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> partial: array<f32, 64>;
11
+ @compute @workgroup_size(64)
12
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
13
+ let i = group.x + group.y * 2048u;
14
+ if (i >= 2048u) { return; }
15
+ let lane = local.x;
16
+ var acc = 0.0;
17
+ for (var p = lane; p < 6144u; p += 64u) { acc += f32(b0[(i / 2048u) * 6144u + p]) * unpack_bf16_1((i % 2048u) * 6144u + p); }
18
+ partial[lane] = acc;
19
+ workgroupBarrier();
20
+ for (var stride = 32u; stride > 0u; stride /= 2u) {
21
+ if (lane < stride) { partial[lane] += partial[lane + stride]; }
22
+ workgroupBarrier();
23
+ }
24
+ if (lane == 0u) { out[i] = f32(partial[0] + 0.0); }
25
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.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 / 1u) % 16u) * 1u]) * f32(b1[i]));
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129.wgsl ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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<array<f32, 16>, 16>;
11
+ var<workgroup> tile_b: array<array<f32, 64>, 16>;
12
+ @compute @workgroup_size(16, 16)
13
+ fn main(@builtin(workgroup_id) group: vec3<u32>, @builtin(local_invocation_id) local: vec3<u32>) {
14
+ let lane = local.y * 16u + local.x;
15
+ let batch = group.z;
16
+ let tile_n = group.x * 64u;
17
+ let tile_row = group.y * 16u;
18
+ var acc: array<array<f32, 4>, 1>;
19
+ for (var k0 = 0u; k0 < 6144u; k0 += 16u) {
20
+ for (var e = 0u; e < 1u; e++) {
21
+ let flat = lane + e * 256u;
22
+ let m_local = flat / 16u;
23
+ let row = tile_row + m_local;
24
+ let col = k0 + flat % 16u;
25
+ var value = 0.0;
26
+ if (row < 4u && col < 6144u) { value = f32(f32(b0[(batch * 4u + row) * 6144u + col])); }
27
+ tile_a[m_local][flat % 16u] = value;
28
+ }
29
+ for (var e = 0u; e < 4u; e++) {
30
+ let n_local = lane / 4u;
31
+ let k_local = (lane % 4u) * 4u + e;
32
+ let n_index = tile_n + n_local;
33
+ let col = k0 + k_local;
34
+ var value = 0.0;
35
+ if (n_index < 2048u && col < 6144u) { value = f32(unpack_bf16_1(n_index * 6144u + col)); }
36
+ tile_b[k_local][n_local] = value;
37
+ }
38
+ workgroupBarrier();
39
+ for (var kk = 0u; kk < 16u; kk++) {
40
+ var b_values: array<f32, 4>;
41
+ for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; }
42
+ for (var r = 0u; r < 1u; r++) {
43
+ let a_value = tile_a[local.y * 1u + r][kk];
44
+ for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; }
45
+ }
46
+ }
47
+ workgroupBarrier();
48
+ }
49
+ for (var r = 0u; r < 1u; r++) {
50
+ let out_row = tile_row + local.y * 1u + r;
51
+ for (var c = 0u; c < 4u; c++) {
52
+ let out_col = tile_n + local.x * 4u + c;
53
+ if (out_row < 4u && out_col < 2048u) {
54
+ let i = (batch * 4u + out_row) * 2048u + out_col;
55
+ out[i] = f32(acc[r][c] + 0.0);
56
+ }
57
+ }
58
+ }
59
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.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(cos(x));
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.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
+ var acc = 0.0;
9
+ for (var j = 0u; j < 128u; j++) { acc += f32(b0[(((i / 64u) % 1u) * 8192u + ((i / 16u) % 4u) * 2048u + ((i / 1u) % 16u) * 128u) + (((j / 1u) % 128u) * 1u)]); }
10
+ out[i] = f32(acc);
11
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.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 * 64u;
8
+ if (i >= 16u) { return; }
9
+ out[i] = f32(f32(b0[((i / 1u) % 16u) * 1u]) * f32(b1[i]));
10
+ }
qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v6/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.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 + 0u) * 1u]);
9
+ }