diff --git a/.gitattributes b/.gitattributes index 07b39ea98801398100b339db23237a047ba4726f..e62503f4062db59f1b481ee98a0e3b124e2a4789 100644 --- a/.gitattributes +++ b/.gitattributes @@ -88,3 +88,4 @@ qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v6/tokenizer/tokeniz qwen35-08b-fp32-int8-g32-home-token-major-v2-v6/graph.json filter=lfs diff=lfs merge=lfs -text qwen35-08b-fp32-int8-g32-home-token-major-v2-v6/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/graph.json filter=lfs diff=lfs merge=lfs -text +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 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3ae9e0043808929344cd1e40bf60a2dc532aac06 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +let x = f32(b0[i]); +out[i] = f32(1.0 / (1.0 + exp(-x))); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..aa456f658303b9267eb9faab7425cd740bbdc6f5 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let coord = (i / 128u) % 1u; +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]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..448ac843411eab6d87a7ce9a3dd0991e2b837329 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b.wgsl @@ -0,0 +1,40 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var b4: array; +@group(0) @binding(5) var b5: array; +@group(0) @binding(6) var out: array; + +var key_row: array; +var query_row: array; +@compute @workgroup_size(128) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let head = group.x; + let batch_index = group.y; + let column = local.x; + var column_state: array; + for (var k = 0u; k < 128u; k++) { column_state[k] = f32(b5[((batch_index * 16u + head) * 128u + k) * 128u + column]); } + for (var token = 0u; token < 64u; token++) { + for (var index = column; index < 128u; index += 128u) { + key_row[index] = f32(b1[((batch_index * 64u + token) * 16u + head) * 128u + index]); + query_row[index] = f32(b0[((batch_index * 64u + token) * 16u + head) * 128u + index]); + } + workgroupBarrier(); + let factor = exp(f32(b3[((batch_index * 64u + token) * 16u + head)])); + var remembered = 0.0; + for (var k = 0u; k < 128u; k++) { + column_state[k] *= factor; + remembered += column_state[k] * key_row[k]; + } + let delta = (f32(b2[((batch_index * 64u + token) * 16u + head) * 128u + column]) - remembered) * f32(b4[((batch_index * 64u + token) * 16u + head)]); + var total = 0.0; + for (var k = 0u; k < 128u; k++) { + column_state[k] += key_row[k] * delta; + total += column_state[k] * query_row[k]; + } + out[((batch_index * 16u + head) * 192u + 128u + token) * 128u + column] = f32(total * 0.08838834764831845); + workgroupBarrier(); + } + for (var k = 0u; k < 128u; k++) { out[((batch_index * 16u + head) * 192u + k) * 128u + column] = f32(column_state[k]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8f7e080e8cee8c2acabacf51697ca01fe402a237 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 128u; +if (i >= 96u) { return; } +out[i] = f32(b0[((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58aa0b8cdce7083ab78ef1d07209c0fb7453bfd4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 98304u; +if (i >= 98304u) { return; } +out[i] = f32(b0[((i / 98304u) % 1u) * 98304u + ((i / 6144u) % 16u) * 1u + ((i / 1u) % 6144u) * 16u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..943bcc71f01bb1a2fa56a858925869618579c85f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 16u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 16u) { + let i = (batch * 4u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a411756a9239877ab739c80010eb78b97e1cc130 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl @@ -0,0 +1,17 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 384u; +if (i >= 384u) { return; } +let batch = i / 128u; +let row = (i / 4u) % 32u; +let col = i % 4u; +var acc = 0.0; +for (var p = 0u; p < 1u; p++) { + acc += f32(b0[(((batch / 1u) % 3u) * 32u) + row * 1u + p]) * f32(b1[(((batch / 1u) % 3u) * 4u) + p * 4u + col]); +} +out[i] = f32(acc); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a442553393b20f2c68a57efbb6d0eccae8d1c425 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 256u; +if (i >= 256u) { return; } +out[i] = i32(b0[((i / 1u) % 64u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a99778950c185f009de4f25b85da7a7fbaf72a4b6c6b50f7c40c5a6622edac0b.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a99778950c185f009de4f25b85da7a7fbaf72a4b6c6b50f7c40c5a6622edac0b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..052f10d39ec2d9d56781dfd48b22be2b3c4d5eb4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a99778950c185f009de4f25b85da7a7fbaf72a4b6c6b50f7c40c5a6622edac0b.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 196608 || token >= 248320) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 196608) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..70a57f24ff695b932429f61024d4f9a7cf194254 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(b0[((i / 8192u) % 1u) * 24576u + ((i / 2048u) % 4u) * 6144u + (((i / 1u) % 2048u) * 1u + 2048u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4bd4cd7da7a46d9f8234fcb621a58a1e37822d4c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..44a1dd646db06ca3b9e95fa43d9ecf152f916a44 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 48u) { return; } +out[i] = i32(b0[(((i / 16u) % 3u) * 1u + 1u) * 16u + ((i / 16u) % 1u) * 16u + ((i / 1u) % 16u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2a2a259f750aef9c48507b8fa223d1c4de2f1364 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0e63cebe9c685e72f2ef3807fe8a83b8853e6dd9 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let x = f32(b0[i]); +out[i] = f32(1.0 / (1.0 + exp(-x))); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..74186e66e6477562a7428f1d974871861d33807f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +out[i] = f32(b0[((i / 131072u) % 1u) * 393216u + ((i / 2048u) % 64u) * 6144u + (((i / 1u) % 2048u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4493ec84a6a3ecaad780645eb74fd1900795ba99 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 512u; +if (i >= 512u) { return; } +out[i] = f32(b0[((i / 512u) % 1u) * 2048u + ((i / 256u) % 2u) * 1024u + ((i / 64u) % 4u) * 256u + (((i / 1u) % 64u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f6c7872687b7bdd3f9a0ce5853f90ec21d96e2d3 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 4096u; +if (i >= 4096u) { return; } +let x = f32(b0[i]); +out[i] = f32(-x); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/adfb7a2d806c49340ad05dc718ec8e48351f8da53f76d1375fb33bbba6a4a2b6.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/adfb7a2d806c49340ad05dc718ec8e48351f8da53f76d1375fb33bbba6a4a2b6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2d5a4fbf0458a12837527d80d0e67ce6232535ea --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/adfb7a2d806c49340ad05dc718ec8e48351f8da53f76d1375fb33bbba6a4a2b6.wgsl @@ -0,0 +1,43 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_0(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b0[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 64u + col / 32u]; +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let slot = local.x / 16u; + let lane = local.x % 16u; + let i = (group.x + group.y * 16384u) * 4u + slot; + var acc = 0.0; + if (i < 65536u) { + let row = i % 65536u; + for (var w = lane; w < 512u; w += 16u) { + let word = b0[row * 512u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 2048u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 65536u) * 2048u + col]); + } + } + acc += part * f32(b1[row * 64u + first / 32u]); + } + } + partial[local.x] = acc; + workgroupBarrier(); + for (var stride = 8u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[local.x] += partial[local.x + stride]; } + workgroupBarrier(); + } + if (lane == 0u && i < 65536u) { out[i] = f32(partial[local.x] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..48686d13bb0682a3b49a3239768a42f4ae4217d8 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 128u; +if (i >= 128u) { return; } +let coord = (i / 1u) % 32u; +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]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..149a4ba7b993cd3c7a5ae3d437265ae0e1001e0e --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let x = f32(b0[i]); let s = f32(f32(x / (1.0 + exp(-x)))); +out[i] = f32(s * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..59029583047b1c87c1e71eb358d7b73fbc8adba5 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 1536u; +if (i >= 1536u) { return; } +out[i] = f32(b0[((i / 512u) % 3u) * 512u + ((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 1u + ((i / 1u) % 32u) * 16u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..54526e84e0f57f0b27c2e0d57273b25cde83790f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[((i / 128u) % 16u) * 1u])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..d7c92bd3f3a7e5b1883a4c8b38d5e18114b7fd53 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 256u; +if (i >= 256u) { return; } +out[i] = f32(b0[((i / 256u) % 1u) * 512u + ((i / 128u) % 2u) * 256u + ((i / 32u) % 4u) * 64u + (((i / 1u) % 32u) * 1u + 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4d8a5bb75deb878ba50367abeb2220352b270284 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 30720u; +if (i >= 30720u) { return; } +out[i] = f32(b0[((i / 30720u) % 1u) * 49152u + ((i / 5u) % 6144u) * 8u + (((i / 1u) % 5u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1163ccb855fe99acd93e5cf2dc96d233ae05e802 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07.wgsl @@ -0,0 +1,40 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var b4: array; +@group(0) @binding(5) var b5: array; +@group(0) @binding(6) var out: array; + +var key_row: array; +var query_row: array; +@compute @workgroup_size(128) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let head = group.x; + let batch_index = group.y; + let column = local.x; + var column_state: array; + for (var k = 0u; k < 128u; k++) { column_state[k] = f32(b5[((batch_index * 16u + head) * 128u + k) * 128u + column]); } + for (var token = 0u; token < 16u; token++) { + for (var index = column; index < 128u; index += 128u) { + key_row[index] = f32(b1[((batch_index * 16u + token) * 16u + head) * 128u + index]); + query_row[index] = f32(b0[((batch_index * 16u + token) * 16u + head) * 128u + index]); + } + workgroupBarrier(); + let factor = exp(f32(b3[((batch_index * 16u + token) * 16u + head)])); + var remembered = 0.0; + for (var k = 0u; k < 128u; k++) { + column_state[k] *= factor; + remembered += column_state[k] * key_row[k]; + } + let delta = (f32(b2[((batch_index * 16u + token) * 16u + head) * 128u + column]) - remembered) * f32(b4[((batch_index * 16u + token) * 16u + head)]); + var total = 0.0; + for (var k = 0u; k < 128u; k++) { + column_state[k] += key_row[k] * delta; + total += column_state[k] * query_row[k]; + } + out[((batch_index * 16u + head) * 144u + 128u + token) * 128u + column] = f32(total * 0.08838834764831845); + workgroupBarrier(); + } + for (var k = 0u; k < 128u; k++) { out[((batch_index * 16u + head) * 144u + k) * 128u + column] = f32(column_state[k]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6b99413ee370aa1076606344bd7a730d9634394d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let coord = (i / 1u) % 32u; +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]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..974532b0a701d436f47eaed601bfea2de3d0ad30 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 16u; + if (i >= 16u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 2048u; p += 64u) { acc += f32(b0[(i / 16u) * 2048u + p]) * unpack_bf16_1((i % 16u) * 2048u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b4981e05a9fd9f813ac9438423df9c2971fac80f408cebd8578b5da4246c6482.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b4981e05a9fd9f813ac9438423df9c2971fac80f408cebd8578b5da4246c6482.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..dc39b29475365bec358abd35220fa955a4198035 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b4981e05a9fd9f813ac9438423df9c2971fac80f408cebd8578b5da4246c6482.wgsl @@ -0,0 +1,43 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_0(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b0[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 64u + col / 32u]; +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let slot = local.x / 16u; + let lane = local.x % 16u; + let i = (group.x + group.y * 1024u) * 4u + slot; + var acc = 0.0; + if (i < 4096u) { + let row = i % 4096u; + for (var w = lane; w < 512u; w += 16u) { + let word = b0[row * 512u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 2048u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 4096u) * 2048u + col]); + } + } + acc += part * f32(b1[row * 64u + first / 32u]); + } + } + partial[local.x] = acc; + workgroupBarrier(); + for (var stride = 8u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[local.x] += partial[local.x + stride]; } + workgroupBarrier(); + } + if (lane == 0u && i < 4096u) { out[i] = f32(partial[local.x] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a5d1a988399067b52e6658a8d39dcbfac3d81a20 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 512u; +if (i >= 512u) { return; } +out[i] = f32(b0[((i / 512u) % 1u) * 512u + ((i / 256u) % 2u) * 256u + ((i / 256u) % 1u) * 512u + ((i / 1u) % 256u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9977e082147cbcb3bb693d292b2bdfcee26bb38a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 4096u; +if (i >= 4096u) { return; } +out[i] = f32(b0[((i / 4096u) % 1u) * 8192u + ((i / 512u) % 8u) * 1024u + ((i / 32u) % 16u) * 64u + (((i / 1u) % 32u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..174ea30cc2482fd8884ac2284af35d964b934cbf --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 49152u; +if (i >= 49152u) { return; } +let x = f32(b0[i]); +out[i] = f32(x / (1.0 + exp(-x))); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e3d4966600c9fa703e8af8c55e751691948715a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 262144u; +if (i >= 262144u) { return; } +out[i] = f32(b0[((i / 262144u) % 1u) * 393216u + ((i / 16384u) % 16u) * 24576u + (((i / 128u) % 128u) * 1u + 0u) * 128u + ((i / 1u) % 128u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..70d42d4c763bcca299e524c1695c1ae352353cd9 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(f32(b0[i]) - (f32(b1[i]) * 1.0)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2e79845d2a74341a4c1a33d8faccf3e7441bc787 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566.wgsl @@ -0,0 +1,24 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +var factor: f32; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let row = group.x + group.y * 4u; + if (row >= 4u) { return; } + let lane = local.x; + if (lane == 0u) { + var total = 0.0; + for (var j = 0u; j < 2048u; j++) { + let v = f32(b0[row * 2048u + j]); + total += v * v; + } + factor = inverseSqrt(total / 2048.0 + 1e-06); + } + workgroupBarrier(); + for (var p = lane; p < 2048u; p += 64u) { + let i = row * 2048u + p; + out[i] = f32(f32(b0[row * 2048u + p]) * factor * (f32(b1[p]) + 1.0)); + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7b4dd957fd1c7e8dcb9f85dae6fcf264becc9365 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +out[i] = f32(b0[((i / 32768u) % 1u) * 32768u + ((i / 16384u) % 2u) * 256u + ((i / 256u) % 64u) * 512u + ((i / 1u) % 256u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e872c70bee91901aaa404f404520084eb5d97007 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 6144u; k0 += 16u) { + for (var e = 0u; e < 4u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 64u && col < 6144u) { value = f32(f32(b0[(batch * 64u + row) * 6144u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 2048u && col < 6144u) { value = f32(unpack_bf16_1(n_index * 6144u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 2048u) { + let i = (batch * 64u + out_row) * 2048u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1eaf48755f6c89edfa173b16d7f022444d1cc0d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 24576u; +if (i >= 24576u) { return; } +out[i] = f32(b0[((i / 24576u) % 1u) * 32768u + ((i / 12288u) % 2u) * 16384u + ((i / 192u) % 64u) * 256u + (((i / 1u) % 192u) * 1u + 64u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a6362c1ba2be5818f23846f039d679fea5bafbf3 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 24576u; +if (i >= 24576u) { return; } +out[i] = f32(b0[((i / 24576u) % 1u) * 417792u + ((i / 4u) % 6144u) * 68u + (((i / 1u) % 4u) * 1u + 64u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4d0f8a39c69d540e4ebe14901bb8411835e15afb --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl @@ -0,0 +1,12 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let coord = (i / 1u) % 64u; +if (coord >= 0u && coord < 32u) { out[i] = f32(b0[(i / 64u) * 32u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 32u && coord < 64u) { out[i] = f32(b1[(i / 64u) * 32u + (coord - 32u) * 1u + i % 1u]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..086e39d7db86061c0500bb42369df207d6b0f4d1 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 2048u; + if (i >= 2048u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 6144u; p += 64u) { acc += f32(b0[(i / 2048u) * 6144u + p]) * unpack_bf16_1((i % 2048u) * 6144u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bf3904bed5701c349b7a05b3595c1ca9779c0f97ccb4f55288f659edcba1d4a1.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bf3904bed5701c349b7a05b3595c1ca9779c0f97ccb4f55288f659edcba1d4a1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8e8b43f1759298262c602d357fba899d33098324 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/bf3904bed5701c349b7a05b3595c1ca9779c0f97ccb4f55288f659edcba1d4a1.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 65536 || token >= 131072) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 65536) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cb1e79634a79e0cdf98a873e21b34a8285f58367 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 256u; +if (i >= 256u) { return; } +out[i] = f32(f32(b0[((i / 1u) % 16u) * 1u]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..86b176cedfb400beed117512e7609a1832765ecf --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 6144u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 4u && col < 6144u) { value = f32(f32(b0[(batch * 4u + row) * 6144u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 2048u && col < 6144u) { value = f32(unpack_bf16_1(n_index * 6144u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 2048u) { + let i = (batch * 4u + out_row) * 2048u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bb8b3676ab0dfbc0c5c78d28f96387bc3a721046 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +let x = f32(b0[i]); +out[i] = f32(cos(x)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0c6c020c365e592254d9a01952f5a009adc5a22f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +var acc = 0.0; +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)]); } +out[i] = f32(acc); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2d80755364a4fee024c589b10f9f00932c251576 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 16u) { return; } +out[i] = f32(f32(b0[((i / 1u) % 16u) * 1u]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ab5764fc85cf04731216d5178e63dfc02d07826a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +out[i] = f32(b0[((i / 32768u) % 1u) * 98304u + ((i / 2048u) % 16u) * 6144u + (((i / 1u) % 2048u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa4df64a06b41dc3305ec748ea504d435a19aa23 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 16u) { return; } +let x = f32(b0[i]); +out[i] = f32(inverseSqrt(x)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa9bac520b006ea9afd50beaa3b3f67aa0df0eef --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 192u; +if (i >= 160u) { return; } +out[i] = f32(b0[i]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e167ce6a7ce9917f434844c31163e81a8ec4800 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 1024u; +if (i >= 1024u) { return; } +out[i] = f32(f32(b0[((i / 1u) % 16u) * 1u]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..68bb70490bf5d2d463fb8fe40f5bec228d3c516f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[((i / 2048u) % 4u) * 16u + ((i / 128u) % 16u) * 1u])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22bcefa0ff08fd3a5375ea57e17ff7f0cda1d768 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl @@ -0,0 +1,24 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +var factor: f32; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let row = group.x + group.y * 1024u; + if (row >= 1024u) { return; } + let lane = local.x; + if (lane == 0u) { + var total = 0.0; + for (var j = 0u; j < 128u; j++) { + let v = f32(b0[row * 128u + j]); + total += v * v; + } + factor = inverseSqrt(total / 128.0 + 1e-06); + } + workgroupBarrier(); + for (var p = lane; p < 128u; p += 64u) { + let i = row * 128u + p; + out[i] = f32(f32(b0[row * 128u + p]) * factor * (f32(b1[p]) + 0.0)); + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7e12c353c29523774d93254e8dc9f119ce04b4fb --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[((i / 2048u) % 1u) * 6144u + ((i / 2048u) % 1u) * 6144u + (((i / 1u) % 2048u) * 1u + 2048u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c4ca94e74e0371d07134a1bb1a87124635c2e269c334ddaed7428b5e6ac56dea.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c4ca94e74e0371d07134a1bb1a87124635c2e269c334ddaed7428b5e6ac56dea.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..068629513d04288ec84f03113b4787daa0ca7b83 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c4ca94e74e0371d07134a1bb1a87124635c2e269c334ddaed7428b5e6ac56dea.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 4u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 64u && col < 2048u) { value = f32(f32(b0[(batch * 64u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 16u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 16u) { + let i = (batch * 64u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c6fea77f6311ccf6eef6061338d5de46f7bd66317a5a8448d52c3cfd72f6c541.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c6fea77f6311ccf6eef6061338d5de46f7bd66317a5a8448d52c3cfd72f6c541.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..81a43a53e2afe8680a3dfd635b517553462f437c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c6fea77f6311ccf6eef6061338d5de46f7bd66317a5a8448d52c3cfd72f6c541.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 6144u; + if (i >= 6144u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 2048u; p += 64u) { acc += f32(b0[(i / 6144u) * 2048u + p]) * unpack_bf16_1((i % 6144u) * 2048u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..19ed701e6f3435af2e4cac80f2299fec71288328 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[2u * 2048u + ((i / 2048u) % 1u) * 2048u + ((i / 32u) % 64u) * 32u + ((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c88b874fddadcd945a36268210eaf56eeebe0fe8eb15a05e5eaead67f062d23d.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c88b874fddadcd945a36268210eaf56eeebe0fe8eb15a05e5eaead67f062d23d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..dc93dc06c253b18e3d3467df997279d63882cc1d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c88b874fddadcd945a36268210eaf56eeebe0fe8eb15a05e5eaead67f062d23d.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 16u && col < 2048u) { value = f32(f32(b0[(batch * 16u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 512u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 512u) { + let i = (batch * 16u + out_row) * 512u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6bbc472bea9c8d96ae70e94b1ca3e146cd081981 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +let x = f32(b0[i]); +out[i] = f32(sin(x)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c9dce107dfa3160c552e0381c1859565c3e7e014e76b9a5c9845a7aa9979866a.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c9dce107dfa3160c552e0381c1859565c3e7e014e76b9a5c9845a7aa9979866a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c9c837a1926cf2071a7767c482bfd9348bd9b4b5 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/c9dce107dfa3160c552e0381c1859565c3e7e014e76b9a5c9845a7aa9979866a.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +out[i] = f32(f32(b0[i]) + (f32(b1[i]) * 1.0)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a23bfb9bcccaa79b5dac185105bff8ca820bb74d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 1024u; +if (i >= 1024u) { return; } +let x = f32(b0[i]); +out[i] = f32(sin(x)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f99a31a5530ee04c3f3573c324dd7c6471dc1049 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl @@ -0,0 +1,17 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 128u; +if (i >= 96u) { return; } +let batch = i / 32u; +let row = (i / 1u) % 32u; +let col = i % 1u; +var acc = 0.0; +for (var p = 0u; p < 1u; p++) { + acc += f32(b0[(((batch / 1u) % 3u) * 32u) + row * 1u + p]) * f32(b1[(((batch / 1u) % 3u) * 1u) + p * 1u + col]); +} +out[i] = f32(acc); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..228b4bbd0824c9c80c477855a3d00e3274aa4588 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688.wgsl @@ -0,0 +1,13 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { + let i = gid.x + gid.y * 512u; + if (i >= 512u) { return; } + let token = (i / 256u) % 1u; + let outer = i / 256u; + let destination = outer * 1048576u + u32(b1[token]) * 256u + i % 256u; + out[((destination) / 256u) % 4096u * 512u + ((destination) / 1048576u) % 2u * 256u + ((destination) / 1u) % 256u * 1u] = f32(b0[i]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..09fcea174bf26710815b865219fd6f9b01ee9aa1 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[((i / 2048u) % 64u) * 16u + ((i / 128u) % 16u) * 1u])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cdc19273b8bfec26295a9cdd705792e257689c14c37018465721fc274ceb0159.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cdc19273b8bfec26295a9cdd705792e257689c14c37018465721fc274ceb0159.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..d00f0133603bdbac002864405a247d0ca2f70157 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/cdc19273b8bfec26295a9cdd705792e257689c14c37018465721fc274ceb0159.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 4u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 64u && col < 2048u) { value = f32(f32(b0[(batch * 64u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 4096u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 4096u) { + let i = (batch * 64u + out_row) * 4096u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1885827206d969e4d30ba0cbea1254ed34899aa --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 512u; +if (i >= 512u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[((i / 64u) % 4u) * 64u + ((i / 1u) % 64u) * 1u])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2ed956d555ce10ac3e0cfb4ddb36ebd66e887258 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 1536u; +if (i >= 1536u) { return; } +out[i] = f32(b0[((i / 512u) % 3u) * 512u + ((i / 512u) % 1u) * 512u + ((i / 16u) % 32u) * 1u + ((i / 1u) % 16u) * 32u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a2aecdb17ed7acc593c2fb1336efc680b5b06fe2 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +out[i] = f32(f32(b0[i]) + (f32(b1[i]) * 1.0)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8dc4e37b9ab18460e2948a94be384c7507b4a40b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 192u; +if (i >= 176u) { return; } +out[i] = f32(b0[i]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d6a2b88f3aca2d1841d2dfa2766cc4583b87071dc8b9c1290e860b28de7790be.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d6a2b88f3aca2d1841d2dfa2766cc4583b87071dc8b9c1290e860b28de7790be.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..83920b21b9dbdde594cad4001e014e463cd673d4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d6a2b88f3aca2d1841d2dfa2766cc4583b87071dc8b9c1290e860b28de7790be.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 4096u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 4096u) { + let i = (batch * 4u + out_row) * 4096u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..953be222dbeeda53732439dbfe62aa874ef12d4f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[0u * 2048u + ((i / 2048u) % 1u) * 2048u + ((i / 32u) % 64u) * 32u + ((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d89f0e701f3fd0dfdd794055dea8b45e81d4a197648b46c1764ae568734a994a.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d89f0e701f3fd0dfdd794055dea8b45e81d4a197648b46c1764ae568734a994a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..da9f9c6971976f6ec4a283384fb8340189a741d4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d89f0e701f3fd0dfdd794055dea8b45e81d4a197648b46c1764ae568734a994a.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 16u && col < 2048u) { value = f32(f32(b0[(batch * 16u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 4096u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 4096u) { + let i = (batch * 16u + out_row) * 4096u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2b2fd35974b2d0fe841a8a268a0226630737a60e --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 256u; +if (i >= 256u) { return; } +let x = f32(b0[i]); +out[i] = f32(cos(x)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d9ab25f0ef4248028d7dab1e782d0756dfc664cc90794d13644bd91106541608.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d9ab25f0ef4248028d7dab1e782d0756dfc664cc90794d13644bd91106541608.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c0e8a5bcdd7bb06fc67695c1213f4a8697db5d1c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/d9ab25f0ef4248028d7dab1e782d0756dfc664cc90794d13644bd91106541608.wgsl @@ -0,0 +1,96 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var out: array; + +var q_row: array; +var scores: array; +var partial: array; +var limit_shared: u32; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.x; + let head = group.x / 16u; + let row = group.x % 16u; + let kv_head = head / 4u; + for (var d = lane; d < 256u; d += 64u) { q_row[d] = f32(b0[(head * 16u + row) * 256u + d]); } + // Bound the key loop by the last unmasked position so work follows the used context. + var last = 0.0; + for (var j = lane; j < 4096u; j += 64u) { + if (f32(b3[row * 4096u + j]) > -1000.0) { last = max(last, f32(j + 1u)); } + } + partial[lane] = last; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] = max(partial[lane], partial[lane + stride]); } + workgroupBarrier(); + } + if (lane == 0u) { limit_shared = u32(partial[0]); } + let limit = workgroupUniformLoad(&limit_shared); + var running_max = -3.4028234663852886e38; + var running_sum = 0.0; + var acc: array; + for (var start = 0u; start < limit; start += 1024u) { + let count = min(1024u, limit - start); + var tile_max = -3.4028234663852886e38; + for (var t = lane; t < count; t += 64u) { + let j = start + t; + var score = -3.4028234663852886e38; + if (f32(b3[row * 4096u + j]) > -1000.0) { + var dot = 0.0; + for (var d = 0u; d < 256u; d++) { dot += q_row[d] * f32(b1[(((kv_head * 4096u + j) * 256u + d) / 256u) % 4096u * 512u + (((kv_head * 4096u + j) * 256u + d) / 1048576u) % 2u * 256u + (((kv_head * 4096u + j) * 256u + d) / 1u) % 256u * 1u]); } + score = dot * 0.0625 + f32(b3[row * 4096u + j]); + } + scores[t] = score; + tile_max = max(tile_max, score); + } + partial[lane] = tile_max; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] = max(partial[lane], partial[lane + stride]); } + workgroupBarrier(); + } + let next_max = max(running_max, partial[0]); + workgroupBarrier(); + var tile_sum = 0.0; + for (var t = lane; t < count; t += 64u) { + var p = 0.0; + if (scores[t] > -3.0e38) { p = exp(scores[t] - next_max); } + scores[t] = p; + tile_sum += p; + } + partial[lane] = tile_sum; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + var correction = 0.0; + if (running_max > -3.0e38) { correction = exp(running_max - next_max); } + running_sum = running_sum * correction + partial[0]; + running_max = next_max; + for (var c = 0u; c < 4u; c++) { + let d = lane + c * 64u; + var total = acc[c] * correction; + if (d < 256u) { + for (var t = 0u; t < count; t++) { + let p = scores[t]; + if (p != 0.0) { + let j = start + t; + total += p * f32(b2[(((kv_head * 4096u + j) * 256u + d) / 256u) % 4096u * 512u + (((kv_head * 4096u + j) * 256u + d) / 1048576u) % 2u * 256u + (((kv_head * 4096u + j) * 256u + d) / 1u) % 256u * 1u]); + } + } + } + acc[c] = total; + } + workgroupBarrier(); + } + for (var c = 0u; c < 4u; c++) { + let d = lane + c * 64u; + if (d < 256u) { + let i = (head * 16u + row) * 256u + d; + out[i] = f32(acc[c] / running_sum); + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/da37c092a03f4f2394848d5e7a53718ea5f9357ad43b277d0945fedbd21efefd.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/da37c092a03f4f2394848d5e7a53718ea5f9357ad43b277d0945fedbd21efefd.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cb5e495e72b6e03806a4a6da7f4bff1aa82e148e --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/da37c092a03f4f2394848d5e7a53718ea5f9357ad43b277d0945fedbd21efefd.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 16u && col < 2048u) { value = f32(f32(b0[(batch * 16u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 2048u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 2048u) { + let i = (batch * 16u + out_row) * 2048u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..499822f6fd09e951de9b6f6961f497b337bb638b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 192u; +if (i >= 192u) { return; } +out[i] = f32(b0[i]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0e13dfcb4085c03a943bab386ba2afe5e2a6133c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 4u) { return; } +out[i] = i32(b0[0u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dca2d13eceb7f90047efadbc587b69a46d46f8254f2b8cdd94d09a5fe1b042e5.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dca2d13eceb7f90047efadbc587b69a46d46f8254f2b8cdd94d09a5fe1b042e5.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8a708484a0fe934757d3a17225266fc711ac7718 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dca2d13eceb7f90047efadbc587b69a46d46f8254f2b8cdd94d09a5fe1b042e5.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 0 || token >= 65536) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 0) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ea5b4f2a12f5be394f09aff8d9d7d412604cad2b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl @@ -0,0 +1,17 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 6144u; +if (i >= 6144u) { return; } +let batch = i / 2048u; +let row = (i / 64u) % 32u; +let col = i % 64u; +var acc = 0.0; +for (var p = 0u; p < 1u; p++) { + acc += f32(b0[(((batch / 1u) % 3u) * 32u) + row * 1u + p]) * f32(b1[(((batch / 1u) % 3u) * 64u) + p * 64u + col]); +} +out[i] = f32(acc); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..684e67f205ed8e5d2b379a1b312f0339ea744c07 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4f2bf7e4c7efd7610ae86a151b04332e7a137cb4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +let x = f32(b0[i]); +out[i] = f32(inverseSqrt(x)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2373549cc794fa4438a3c1e3ac3320d217d2de1c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 512u; +if (i >= 512u) { return; } +out[i] = f32(b0[2u * 512u + ((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 32u + ((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/debf9022e52fbf078668ff0a4b2548d3ff1dc14ad3f77dc985b02ea121104208.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/debf9022e52fbf078668ff0a4b2548d3ff1dc14ad3f77dc985b02ea121104208.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..deb5ec3e6b0823eb7b69b265065038a225ed086c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/debf9022e52fbf078668ff0a4b2548d3ff1dc14ad3f77dc985b02ea121104208.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 0 || token >= 65536) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 0) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..edaf6eca29e64fa2e4a563af4eaf9fe76bfb99b7 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 32u) { return; } +out[i] = f32(b0[2u * 32u + ((i / 32u) % 1u) * 32u + ((i / 32u) % 1u) * 32u + ((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dfc212b0c2108c9670cf748f1267f8da7586d36ff80208cbbcbe2f7023d2faca.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dfc212b0c2108c9670cf748f1267f8da7586d36ff80208cbbcbe2f7023d2faca.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..dfae6f2a4359557f1dd56a7b810441d7d751ea25 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/dfc212b0c2108c9670cf748f1267f8da7586d36ff80208cbbcbe2f7023d2faca.wgsl @@ -0,0 +1,43 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_0(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b0[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 64u + col / 32u]; +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let slot = local.x / 16u; + let lane = local.x % 16u; + let i = (group.x + group.y * 128u) * 4u + slot; + var acc = 0.0; + if (i < 512u) { + let row = i % 512u; + for (var w = lane; w < 512u; w += 16u) { + let word = b0[row * 512u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 2048u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 512u) * 2048u + col]); + } + } + acc += part * f32(b1[row * 64u + first / 32u]); + } + } + partial[local.x] = acc; + workgroupBarrier(); + for (var stride = 8u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[local.x] += partial[local.x + stride]; } + workgroupBarrier(); + } + if (lane == 0u && i < 512u) { out[i] = f32(partial[local.x] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5bc58ca8a83e46e3403c1f4ea7a6fd95358ac3d0 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 6144u; +if (i >= 6144u) { return; } +out[i] = f32(b0[((i / 6144u) % 1u) * 30720u + ((i / 1u) % 6144u) * 5u + (((i / 1u) % 1u) * 1u + 4u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e12d48dbab3f0507f5ea8b34dc59c3769b6b7baedd4e9a77f70e0bdf15261ffa.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e12d48dbab3f0507f5ea8b34dc59c3769b6b7baedd4e9a77f70e0bdf15261ffa.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a9555a9241c240d31b4e4ac2079bb229088b6ac3 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e12d48dbab3f0507f5ea8b34dc59c3769b6b7baedd4e9a77f70e0bdf15261ffa.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 2048u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 2048u) { + let i = (batch * 4u + out_row) * 2048u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e14fe3c24ffb28ca7b4a2da41e18b6d53164bda6a4a61ac36f0c14c3787d422c.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e14fe3c24ffb28ca7b4a2da41e18b6d53164bda6a4a61ac36f0c14c3787d422c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2654a7e15882408aeaedee62dbe7ef5ad8f04378 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e14fe3c24ffb28ca7b4a2da41e18b6d53164bda6a4a61ac36f0c14c3787d422c.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 131072 || token >= 196608) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 131072) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6e0d70a003b0ae9ebc255496a061f374428e3953 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +let x = f32(b0[i]); let s = f32(f32(x / (1.0 + exp(-x)))); +out[i] = f32(s * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1a249dce7a17d3c8504f99f72c8bdd539676dfd8fc7efe939ddb9348d423084.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1a249dce7a17d3c8504f99f72c8bdd539676dfd8fc7efe939ddb9348d423084.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7a27ee6f9aed4b2434611a182d65507d3b15f760 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1a249dce7a17d3c8504f99f72c8bdd539676dfd8fc7efe939ddb9348d423084.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 2048u; + if (i >= 2048u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 2048u; p += 64u) { acc += f32(b0[(i / 2048u) * 2048u + p]) * unpack_bf16_1((i % 2048u) * 2048u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1e6ea1e6e881f1dba4becc0b879a788d63dc69731a323566db88e6029d5bbb5.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1e6ea1e6e881f1dba4becc0b879a788d63dc69731a323566db88e6029d5bbb5.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..47674ff087139594c6340353fff66430eb1849d0 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e1e6ea1e6e881f1dba4becc0b879a788d63dc69731a323566db88e6029d5bbb5.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 4u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 64u && col < 2048u) { value = f32(f32(b0[(batch * 64u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 6144u && col < 2048u) { value = f32(unpack_bf16_1(n_index * 2048u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 6144u) { + let i = (batch * 64u + out_row) * 6144u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e206c8544ab8da09affbd41cbcc21ae7a03e8f25607e3e7b473db7b65b904023.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e206c8544ab8da09affbd41cbcc21ae7a03e8f25607e3e7b473db7b65b904023.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..00fa9507dbdba75765f2c2e49a0af929cab62732 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e206c8544ab8da09affbd41cbcc21ae7a03e8f25607e3e7b473db7b65b904023.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 131072 || token >= 196608) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 131072) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e26328df0e65bd3b1aa31d12ed34e71b1b4b309d708bd58badcabad803bca34a.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e26328df0e65bd3b1aa31d12ed34e71b1b4b309d708bd58badcabad803bca34a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..386e724abeb484d12085a13de21550ab9f87e944 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e26328df0e65bd3b1aa31d12ed34e71b1b4b309d708bd58badcabad803bca34a.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 6144u; +if (i >= 6144u) { return; } +let x = f32(b0[i]); let s = f32(f32(x / (1.0 + exp(-x)))); +out[i] = f32(s * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ea5b4de02c46ed92269369bebfaf9e012b9aa48d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00.wgsl @@ -0,0 +1,13 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { + let i = gid.x + gid.y * 32768u; + if (i >= 32768u) { return; } + let token = (i / 256u) % 64u; + let outer = i / 16384u; + let destination = outer * 1048576u + u32(b1[token]) * 256u + i % 256u; + out[((destination) / 256u) % 4096u * 512u + ((destination) / 1048576u) % 2u * 256u + ((destination) / 1u) % 256u * 1u] = f32(b0[i]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2eb119d2449221b9b8bace6cfb92a13e33a3c95c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[((i / 2048u) % 1u) * 4096u + ((i / 2048u) % 1u) * 4096u + ((i / 256u) % 8u) * 512u + (((i / 1u) % 256u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3d2f9b253a6b9d0335cd3b020fa078163eb347a6 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(f32(b0[i]) * f32(b1[((i / 64u) % 16u) * 64u + ((i / 1u) % 64u) * 1u])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e5ef3162a83551a46be3dfc18436f093a96819f90fcbfb74c725fad0cc569311.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e5ef3162a83551a46be3dfc18436f093a96819f90fcbfb74c725fad0cc569311.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e98cfac400a53d9d029478f5d58ac445ac566603 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e5ef3162a83551a46be3dfc18436f093a96819f90fcbfb74c725fad0cc569311.wgsl @@ -0,0 +1,43 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_0(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b0[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 64u + col / 32u]; +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let slot = local.x / 16u; + let lane = local.x % 16u; + let i = (group.x + group.y * 12928u) * 4u + slot; + var acc = 0.0; + if (i < 51712u) { + let row = i % 51712u; + for (var w = lane; w < 512u; w += 16u) { + let word = b0[row * 512u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 2048u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 51712u) * 2048u + col]); + } + } + acc += part * f32(b1[row * 64u + first / 32u]); + } + } + partial[local.x] = acc; + workgroupBarrier(); + for (var stride = 8u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[local.x] += partial[local.x + stride]; } + workgroupBarrier(); + } + if (lane == 0u && i < 51712u) { out[i] = f32(partial[local.x] + 0.0); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1cca9e30814dd2231912899d446310b2c59b8009 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[((i / 2048u) % 1u) * 6144u + ((i / 2048u) % 1u) * 6144u + (((i / 1u) % 2048u) * 1u + 4096u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..46d7c7b355ee64e20cfeead625b246a385c60d9b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(b0[((i / 8192u) % 1u) * 24576u + ((i / 2048u) % 4u) * 6144u + (((i / 1u) % 2048u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c061788bda0478004560218a522ad6db46d1c40e --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 16u) { return; } +var acc = 0.0; +for (var j = 0u; j < 128u; j++) { acc += f32(b0[(((i / 16u) % 1u) * 2048u + ((i / 16u) % 1u) * 2048u + ((i / 1u) % 16u) * 128u) + (((j / 1u) % 128u) * 1u)]); } +out[i] = f32(acc); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9737295d6a724ac96efb6c84473f524d0f8dcb5f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 256u; +if (i >= 256u) { return; } +out[i] = f32(f32(b0[i]) * 1.0); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f47eaba34fc23b6975aa31bc0c00044a984a7861 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +out[i] = i32(b0[i]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22f89afc566d4ca07eaa1dbc2cd6483d7a06aa71 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(b0[((i / 8192u) % 1u) * 270336u + ((i / 512u) % 16u) * 16896u + (((i / 128u) % 4u) * 1u + 128u) * 128u + ((i / 1u) % 128u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bb856b01379609571713742a1c1896a7bff7fa7a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl @@ -0,0 +1,16 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 3973120u; +if (i >= 3973120u) { return; } +let coord = (i / 1u) % 248320u; +if (coord >= 0u && coord < 65536u) { out[i] = f32(b0[(i / 248320u) * 65536u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 65536u && coord < 131072u) { out[i] = f32(b1[(i / 248320u) * 65536u + (coord - 65536u) * 1u + i % 1u]); } +if (coord >= 131072u && coord < 196608u) { out[i] = f32(b2[(i / 248320u) * 65536u + (coord - 131072u) * 1u + i % 1u]); } +if (coord >= 196608u && coord < 248320u) { out[i] = f32(b3[(i / 248320u) * 51712u + (coord - 196608u) * 1u + i % 1u]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ebdeb8028a8c090b91a5a326b788e4eee2347105662f1fd698ad4579d3a7c7ea.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ebdeb8028a8c090b91a5a326b788e4eee2347105662f1fd698ad4579d3a7c7ea.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..04642f85261d1248123f53ed18d15744f6fe1d90 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ebdeb8028a8c090b91a5a326b788e4eee2347105662f1fd698ad4579d3a7c7ea.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 4096u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 4096u) { + let i = (batch * 4u + out_row) * 4096u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ec40e0e7453f12aae9b1c49863914d6673508049ce3302f9a5c377e698ce612c.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ec40e0e7453f12aae9b1c49863914d6673508049ce3302f9a5c377e698ce612c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..437beb4d9a8f789a175b08867afc3222dd621bf3 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ec40e0e7453f12aae9b1c49863914d6673508049ce3302f9a5c377e698ce612c.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 0 || token >= 65536) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 0) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa04fd0adecdb9f18898bad16cb516ccdf4bf468 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 16u) { return; } +out[i] = f32(f32(b0[i]) + (1e-06 * 1.0)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7dd035a2b7b4ce728303f33a2f815174cbedc865 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[((i / 2048u) % 1u) * 4096u + ((i / 2048u) % 1u) * 4096u + ((i / 256u) % 8u) * 512u + (((i / 1u) % 256u) * 1u + 256u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7b1a3f0dff8b91f244bd9f20ffde6873033a24df --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl @@ -0,0 +1,24 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +var factor: f32; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let row = group.x + group.y * 512u; + if (row >= 512u) { return; } + let lane = local.x; + if (lane == 0u) { + var total = 0.0; + for (var j = 0u; j < 256u; j++) { + let v = f32(b0[row * 256u + j]); + total += v * v; + } + factor = inverseSqrt(total / 256.0 + 1e-06); + } + workgroupBarrier(); + for (var p = lane; p < 256u; p += 64u) { + let i = row * 256u + p; + out[i] = f32(f32(b0[row * 256u + p]) * factor * (f32(b1[p]) + 1.0)); + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e7ff2c1c7d2a5c72bbf52908e3a4a89766434990 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 704u; +if (i >= 704u) { return; } +out[i] = f32(b0[((i / 704u) % 1u) * 2048u + ((i / 11u) % 64u) * 32u + (((i / 1u) % 11u) * 3u + 1u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/efed95690af6454644068b55831d23936cd1add6dce94521596e8f31c250b901.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/efed95690af6454644068b55831d23936cd1add6dce94521596e8f31c250b901.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..852780c909fa413e3215be6a00f68e894e9295d6 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/efed95690af6454644068b55831d23936cd1add6dce94521596e8f31c250b901.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 4u && col < 2048u) { value = f32(f32(b0[(batch * 4u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 65536u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 65536u) { + let i = (batch * 4u + out_row) * 65536u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..63d1ffd2bc103e1a26f56ca1d5c9ff8519c692ac --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +let x = f32(b0[i]); +out[i] = f32(1.0 / (1.0 + exp(-x))); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..15382fc197ef648b58ce80bf82efcabed936514c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl @@ -0,0 +1,12 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +let coord = (i / 1u) % 256u; +if (coord >= 0u && coord < 64u) { out[i] = f32(b0[(i / 256u) * 64u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 64u && coord < 256u) { out[i] = f32(b1[(i / 256u) * 192u + (coord - 64u) * 1u + i % 1u]); } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..514e64a95d7576a978b5e3abc375ffb22297bc66 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(b0[((i / 8192u) % 1u) * 32768u + ((i / 1024u) % 8u) * 4096u + ((i / 64u) % 16u) * 256u + (((i / 1u) % 64u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b2f14ad5c01e9efb2e5f7424d8124543f564a86d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +out[i] = f32(b0[((i / 64u) % 1u) * 128u + ((i / 32u) % 2u) * 64u + ((i / 32u) % 1u) * 64u + (((i / 1u) % 32u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ce3525f2123ee5d4f25f699881ad39286c38f693 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(f32(b0[i]) * f32(b0[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5b2ba528c9d245492ad94b337e8cafcc65deeb4a5e7975a55ca79cbfe0a29d4.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5b2ba528c9d245492ad94b337e8cafcc65deeb4a5e7975a55ca79cbfe0a29d4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bd35aa048bb4b57e5c7e6738e8b53a89be6ae7e7 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5b2ba528c9d245492ad94b337e8cafcc65deeb4a5e7975a55ca79cbfe0a29d4.wgsl @@ -0,0 +1,96 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var out: array; + +var q_row: array; +var scores: array; +var partial: array; +var limit_shared: u32; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.x; + let head = group.x / 4u; + let row = group.x % 4u; + let kv_head = head / 4u; + for (var d = lane; d < 256u; d += 64u) { q_row[d] = f32(b0[(head * 4u + row) * 256u + d]); } + // Bound the key loop by the last unmasked position so work follows the used context. + var last = 0.0; + for (var j = lane; j < 4096u; j += 64u) { + if (f32(b3[row * 4096u + j]) > -1000.0) { last = max(last, f32(j + 1u)); } + } + partial[lane] = last; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] = max(partial[lane], partial[lane + stride]); } + workgroupBarrier(); + } + if (lane == 0u) { limit_shared = u32(partial[0]); } + let limit = workgroupUniformLoad(&limit_shared); + var running_max = -3.4028234663852886e38; + var running_sum = 0.0; + var acc: array; + for (var start = 0u; start < limit; start += 1024u) { + let count = min(1024u, limit - start); + var tile_max = -3.4028234663852886e38; + for (var t = lane; t < count; t += 64u) { + let j = start + t; + var score = -3.4028234663852886e38; + if (f32(b3[row * 4096u + j]) > -1000.0) { + var dot = 0.0; + for (var d = 0u; d < 256u; d++) { dot += q_row[d] * f32(b1[(((kv_head * 4096u + j) * 256u + d) / 256u) % 4096u * 512u + (((kv_head * 4096u + j) * 256u + d) / 1048576u) % 2u * 256u + (((kv_head * 4096u + j) * 256u + d) / 1u) % 256u * 1u]); } + score = dot * 0.0625 + f32(b3[row * 4096u + j]); + } + scores[t] = score; + tile_max = max(tile_max, score); + } + partial[lane] = tile_max; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] = max(partial[lane], partial[lane + stride]); } + workgroupBarrier(); + } + let next_max = max(running_max, partial[0]); + workgroupBarrier(); + var tile_sum = 0.0; + for (var t = lane; t < count; t += 64u) { + var p = 0.0; + if (scores[t] > -3.0e38) { p = exp(scores[t] - next_max); } + scores[t] = p; + tile_sum += p; + } + partial[lane] = tile_sum; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + var correction = 0.0; + if (running_max > -3.0e38) { correction = exp(running_max - next_max); } + running_sum = running_sum * correction + partial[0]; + running_max = next_max; + for (var c = 0u; c < 4u; c++) { + let d = lane + c * 64u; + var total = acc[c] * correction; + if (d < 256u) { + for (var t = 0u; t < count; t++) { + let p = scores[t]; + if (p != 0.0) { + let j = start + t; + total += p * f32(b2[(((kv_head * 4096u + j) * 256u + d) / 256u) % 4096u * 512u + (((kv_head * 4096u + j) * 256u + d) / 1048576u) % 2u * 256u + (((kv_head * 4096u + j) * 256u + d) / 1u) % 256u * 1u]); + } + } + } + acc[c] = total; + } + workgroupBarrier(); + } + for (var c = 0u; c < 4u; c++) { + let d = lane + c * 64u; + if (d < 256u) { + let i = (head * 4u + row) * 256u + d; + out[i] = f32(acc[c] / running_sum); + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..92790934326cbc014348566d54624e3d2d8a85c1 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 512u; +if (i >= 512u) { return; } +out[i] = f32(f32(b0[i]) + (f32(b1[i]) * 1.0)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..011b9989a7cfd50ed05b4fbde19f90b64aa84b20 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +out[i] = f32(f32(b0[i]) * f32(b0[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e61151db275d2deac9f983bd165d506d746f384 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 2048u; +if (i >= 2048u) { return; } +out[i] = f32(b0[1u * 2048u + ((i / 2048u) % 1u) * 2048u + ((i / 32u) % 64u) * 32u + ((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1fe067e9574b327c21206e0e5535bc398f54ff1b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 64u; +if (i >= 64u) { return; } +out[i] = f32(f32(b0[((i / 1u) % 16u) * 1u]) * f32(b1[i])); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..410788b08c259098da3f2a160cb88a04812a90f1 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 32768u; +if (i >= 32768u) { return; } +out[i] = f32(b0[((i / 32768u) % 1u) * 98304u + ((i / 2048u) % 16u) * 6144u + (((i / 1u) % 2048u) * 1u + 2048u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f90d949c070eec5a0b623db13ea76c181e22fdf7154c1a892100fb68c130ff16.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f90d949c070eec5a0b623db13ea76c181e22fdf7154c1a892100fb68c130ff16.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2ce21539eec08e1899e2172b580513bd1c216eff --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f90d949c070eec5a0b623db13ea76c181e22fdf7154c1a892100fb68c130ff16.wgsl @@ -0,0 +1,20 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 131072u; +if (i >= 131072u) { return; } +let token = i32(b0[i / 2048u]); +if (token < 196608 || token >= 248320) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 196608) * 2048u + i % 2048u)); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9e09a0405b65767fdf150265f0573fa5737b5356 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 6144u; +if (i >= 6144u) { return; } +out[i] = f32(b0[((i / 6144u) % 1u) * 8192u + ((i / 768u) % 8u) * 1024u + ((i / 192u) % 4u) * 256u + (((i / 1u) % 192u) * 1u + 64u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cf15e04cdeba75c873e80fc764f945a9f56b3a48 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl @@ -0,0 +1,24 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +var factor: f32; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let row = group.x + group.y * 8u; + if (row >= 8u) { return; } + let lane = local.x; + if (lane == 0u) { + var total = 0.0; + for (var j = 0u; j < 256u; j++) { + let v = f32(b0[row * 256u + j]); + total += v * v; + } + factor = inverseSqrt(total / 256.0 + 1e-06); + } + workgroupBarrier(); + for (var p = lane; p < 256u; p += 64u) { + let i = row * 256u + p; + out[i] = f32(f32(b0[row * 256u + p]) * factor * (f32(b1[p]) + 1.0)); + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c9ea63d0ef2a33525ebd5156d578b4ceaf2ede3f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 8192u; +if (i >= 8192u) { return; } +out[i] = f32(b0[((i / 8192u) % 1u) * 8192u + ((i / 2048u) % 4u) * 128u + ((i / 128u) % 16u) * 512u + ((i / 1u) % 128u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6f74d6d41b23067fa00cf713cb503945fad5fe53 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 24576u; +if (i >= 24576u) { return; } +out[i] = f32(b0[((i / 24576u) % 1u) * 24576u + ((i / 6144u) % 4u) * 1u + ((i / 1u) % 6144u) * 4u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fb074a5f1f543fbb6d69f4f5130b3b7444731cb8fd9e8d2c70ccbf7075039a70.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fb074a5f1f543fbb6d69f4f5130b3b7444731cb8fd9e8d2c70ccbf7075039a70.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..d0c190b7aae31092707c8ffd484cd5c6cb0a1965 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fb074a5f1f543fbb6d69f4f5130b3b7444731cb8fd9e8d2c70ccbf7075039a70.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 4u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 64u && col < 2048u) { value = f32(f32(b0[(batch * 64u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 512u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 512u) { + let i = (batch * 64u + out_row) * 512u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..247b70d7c24a44a2a389531aeedf176cc171389c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl @@ -0,0 +1,9 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 640u; +if (i >= 640u) { return; } +out[i] = f32(b0[((i / 640u) % 1u) * 2048u + ((i / 10u) % 64u) * 32u + (((i / 1u) % 10u) * 3u + 2u) * 1u]); +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fc1528dcecd7c2d55cc9c6c9311eaab089186426807f1ff67ac1e26d382e408a.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fc1528dcecd7c2d55cc9c6c9311eaab089186426807f1ff67ac1e26d382e408a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f8c1fc7997da28d3c4672116629656e83cc52bec --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/fc1528dcecd7c2d55cc9c6c9311eaab089186426807f1ff67ac1e26d382e408a.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 1u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 16u && col < 2048u) { value = f32(f32(b0[(batch * 16u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 65536u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 65536u) { + let i = (batch * 16u + out_row) * 65536u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ff8c888cc0b5126b58de66db908ff04f71ad7b1c622703b63bbfc31e74b260b4.wgsl b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ff8c888cc0b5126b58de66db908ff04f71ad7b1c622703b63bbfc31e74b260b4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..95b273cd80372ec77740d8651badaf4f4360fb22 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/kernels/ff8c888cc0b5126b58de66db908ff04f71ad7b1c622703b63bbfc31e74b260b4.wgsl @@ -0,0 +1,71 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var out: array; +fn dequant_1(index: u32) -> f32 { + let row = index / 2048u; + let col = index % 2048u; + let word = b1[row * 512u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 64u + col / 32u]; +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 2048u; k0 += 16u) { + for (var e = 0u; e < 4u; e++) { + let flat = lane + e * 256u; + let m_local = flat / 16u; + let row = tile_row + m_local; + let col = k0 + flat % 16u; + var value = 0.0; + if (row < 64u && col < 2048u) { value = f32(f32(b0[(batch * 64u + row) * 2048u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 256u) { + let n_local = lane / 4u; + let word_local = lane % 4u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 4u; + var word = 0u; + var scale = 0.0; + if (n_index < 65536u && first < 2048u) { + word = b1[n_index * 512u + first / 4u]; + scale = f32(b2[n_index * 64u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 2048u) { value = f32(code) * scale; } + tile_b[word_local * 4u + e][n_local] = value; + } + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 65536u) { + let i = (batch * 64u + out_row) * 65536u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/manifest.json b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..f6074a7b757eeb0084c1e99a806d822ea6f0525a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/manifest.json @@ -0,0 +1,2185 @@ +{ + "format": "webtorch", + "version": 1, + "producer": { + "name": "webtorch", + "version": "0.1.0a1", + "torch": "2.14.0" + }, + "entrypoints": { + "forward": "graph.json", + "prefill-4": "entrypoints/prefill-4.json", + "prefill-16": "entrypoints/prefill-16.json", + "prefill-64": "entrypoints/prefill-64.json" + }, + "requiredFeatures": [], + "assets": [ + { + "path": "weights/00015.bin", + "byteLength": 67108864, + "sha256": "e03e9ea691d0b5ceeb2fe8b5be66d5c093e844e9a9c66419d39b5896b4e01319" + }, + { + "path": "weights/00016.bin", + "byteLength": 67108864, + "sha256": "fe8254c59393a562809ecd57c8aa80b009fc6ebe2eadc434582a4f2747eaeb65" + }, + { + "path": "weights/00017.bin", + "byteLength": 67108864, + "sha256": "57148cd4031dbb9e4c797bec29e94bce34196bd99cc466caf4f473994c3cfb37" + }, + { + "path": "weights/00018.bin", + "byteLength": 67108864, + "sha256": "e4de09f17f8c15e27c06eaaf2e69885efd837192a5d14a0d5a99c93d516faf5f" + }, + { + "path": "weights/00019.bin", + "byteLength": 67108864, + "sha256": "76dda70376dfa5539aa9adf093bbe00f1c91b9b621c314764d334a162f7d103b" + }, + { + "path": "weights/00020.bin", + "byteLength": 67108864, + "sha256": "1d585e393d7d2dd232c285c7a519a03b19e1c0a0129e06c04ed1e6268f088f18" + }, + { + "path": "weights/00021.bin", + "byteLength": 67108864, + "sha256": "4d0578c2f668e7b97b576197d92105ba63b4ee06ca9363a30508b3087775cf46" + }, + { + "path": "weights/00022.bin", + "byteLength": 67108864, + "sha256": "8f11ca7d1a280e5627b7bb7e961cf8b7adb91a84ee4bf5b9e2b40648ee0ab96f" + }, + { + "path": "weights/00023.bin", + "byteLength": 67108864, + "sha256": "4f2b45c74f25a5aa754f28c6707543ae6cc64a24ae224e97e2f031b8abb1fb46" + }, + { + "path": "weights/00024.bin", + "byteLength": 67108864, + "sha256": "06e05a9ae0b7739858bd6ba82e560d6b98e59b3c775a1ebe7ced85b3dca920e2" + }, + { + "path": "weights/00025.bin", + "byteLength": 67108864, + "sha256": "6973ab4cc1a83eed9fd60a7e60b9b4540efefc8dcf46c928d24b87d489e40df5" + }, + { + "path": "weights/00026.bin", + "byteLength": 67108864, + "sha256": "e4d0ff4c94c7e872161c91bb7538f671139de85667445640bfa32e6e9d996712" + }, + { + "path": "weights/00027.bin", + "byteLength": 67108864, + "sha256": "9227bb0235cc5fbf51cc8b4ad0e40917aa1ebe5ff0baee6f0932ba367ce0eca4" + }, + { + "path": "weights/00028.bin", + "byteLength": 67108864, + "sha256": "8fdb586782269da3797cfa5256982fea8693a8ce2c22c11352e713c5b153b09e" + }, + { + "path": "weights/00029.bin", + "byteLength": 67108864, + "sha256": "2122c2db66c80ab6754718b22bf35881954fd7e544cb7e67e7945085cea0abd7" + }, + { + "path": "weights/00030.bin", + "byteLength": 67108864, + "sha256": "c13cf1342293971b9e2a70be5314e414360fb01bc52b1cc4c129d0331aa68db3" + }, + { + "path": "weights/00031.bin", + "byteLength": 67108864, + "sha256": "3f494ab8796ea4a4241003f88496a9c22073bea4a85a5adfd8e21ab564314960" + }, + { + "path": "weights/00032.bin", + "byteLength": 67108864, + "sha256": "94201ff6b6f5dee1bdb77b4e0f1de9ad16a6d4e31f15f1f8c4e4c17156f2b179" + }, + { + "path": "weights/00033.bin", + "byteLength": 67108864, + "sha256": "15a27ad130cb0d315f11a4feded61e04acd0bf352bc91960fb04c44115cfa60a" + }, + { + "path": "weights/00034.bin", + "byteLength": 67108864, + "sha256": "4859bf12e4dff5964a77ba1ef2490c3523d9d6d8807a6b55e826b0fe82fead40" + }, + { + "path": "weights/00035.bin", + "byteLength": 67108864, + "sha256": "ee5e44efb6ed9c950d6efcb79a909a293925fb23daef592cd2b0a3838306a456" + }, + { + "path": "weights/00036.bin", + "byteLength": 67108864, + "sha256": "549f6be19eb4423c0245f87d83e22d5df197eecdeda091fbd0affd28464e4dc7" + }, + { + "path": "weights/00037.bin", + "byteLength": 67108864, + "sha256": "06244125bf0574b1058d00e16835283e2f0b35372becd033a675f8a940fd28e6" + }, + { + "path": "weights/00038.bin", + "byteLength": 67108864, + "sha256": "5d85347997090fd46cf2a16752708e9fa57a6840e209f4eb220f782a50f9532d" + }, + { + "path": "weights/00039.bin", + "byteLength": 67108864, + "sha256": "46a51ee44b5b713e30b717a91b140e13c1009a20eca34ddd95115cceb5de4b2f" + }, + { + "path": "weights/00040.bin", + "byteLength": 67108864, + "sha256": "38e057236f17edfbaac13388c5572fa8d1c2a787cfef781a7788fd6e26117fc9" + }, + { + "path": "weights/00041.bin", + "byteLength": 27024768, + "sha256": "0b0fb39a2d33001b2629c905567bac2dfc9fc2597a0d3585ceba31e96233434b" + }, + { + "path": "tokenizer/tokenizer.json", + "byteLength": 12807982, + "sha256": "5f9e4d4901a92b997e463c1f46055088b6cca5ca61a6522d1b9f64c4bb81cb42" + }, + { + "path": "tokenizer/tokenizer_config.json", + "byteLength": 16709, + "sha256": "49e2b6e395f959f077f1e992b338919c0d4a9732fc6e613995e06557f843500c" + }, + { + "path": "tokenizer/chat_template.jinja", + "byteLength": 7755, + "sha256": "273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80" + }, + { + "path": "source/config.json", + "byteLength": 2908, + "sha256": "ed1c1723241f23f7f4e23430759cbd7dcfb4103cbdfe052bfe7626b57c2615b4" + }, + { + "path": "source/LICENSE", + "byteLength": 11544, + "sha256": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a" + }, + { + "path": "source/provenance.json", + "byteLength": 199, + "sha256": "c8660f24d71eae596fa20ba3312e0a3634dea45d9081186ca3c95543bb94ccdd" + }, + { + "path": "weights/int8-422da3921400-000.bin", + "byteLength": 67108864, + "sha256": "377fd59265a5d2aa4042271079707df0c6279151e55b6c42e85884d653293d59" + }, + { + "path": "weights/int8-422da3921400-001.bin", + "byteLength": 67108864, + "sha256": "f81ce411620fbde23b8d39f217fb9166868898f3f076384b4bfb711afb024cc6" + }, + { + "path": "weights/int8-422da3921400-002.bin", + "byteLength": 67108864, + "sha256": "d0161d977e69be487af3517dc1340d3c70e216cb09abd750413390575f352d75" + }, + { + "path": "weights/int8-422da3921400-003.bin", + "byteLength": 67108864, + "sha256": "1dad5e340e009fad70452f37f5bfbea024172054b7e6b74037b55ab200bf9e67" + }, + { + "path": "weights/int8-422da3921400-004.bin", + "byteLength": 67108864, + "sha256": "b7551a97a3e0de11cc8c1e7121c61905d41445425788e7a761db8516fd46c31c" + }, + { + "path": "weights/int8-422da3921400-005.bin", + "byteLength": 67108864, + "sha256": "b458c88a0470f80ddf3237dafaa176381c48ce7167800bc36a247020623d3b92" + }, + { + "path": "weights/int8-422da3921400-006.bin", + "byteLength": 67108864, + "sha256": "264ce13dbc95d528d1b1a86b025d543445b3006c3ac93769a4dd7afa83ad62bb" + }, + { + "path": "weights/int8-422da3921400-007.bin", + "byteLength": 38797312, + "sha256": "5207098eb86685114c19309a64aa9e8ab6ab10a840d65d7db38626a02ba3e277" + }, + { + "path": "weights/int8-422da3921400-scales-000.bin", + "byteLength": 63569920, + "sha256": "996aac5b374e2494bf4533ae0e18c5a9f31b529d757d6ad61d6eb142cc6163ba" + }, + { + "path": "entrypoints/prefill-16.json", + "byteLength": 8184896, + "sha256": "a24f05324e9c07d4d359be17854ee57f8c992242868a1000164d050fb6bd8a41" + }, + { + "path": "entrypoints/prefill-4.json", + "byteLength": 8181113, + "sha256": "226e6dabcb9332fe71de6b6cb8068e3d37c17b128e5f3738602f30982cdfdc9d" + }, + { + "path": "entrypoints/prefill-64.json", + "byteLength": 8186218, + "sha256": "54bb3a248c59224850a23e34765375b375da87c041181ecb21066e91a68acf56" + }, + { + "path": "graph.json", + "byteLength": 10577879, + "sha256": "56d4c8d4985a04d14d0ed05c9a98a9cad86a5e3d0822c5f80892daf18b3ceb17" + }, + { + "path": "kernels/0112d93bb1aa347d8887ce1b95610a1a21fc8450ff8f59bcd37747fa6bf6fa52.wgsl", + "byteLength": 373, + "sha256": "0112d93bb1aa347d8887ce1b95610a1a21fc8450ff8f59bcd37747fa6bf6fa52" + }, + { + "path": "kernels/0151a813c4a92adeb44f0e3b6108c77b29804118b588c9025805f724fce839b4.wgsl", + "byteLength": 849, + "sha256": "0151a813c4a92adeb44f0e3b6108c77b29804118b588c9025805f724fce839b4" + }, + { + "path": "kernels/0337d8a473b6e485bd383533df7d373dbbfe7a5f3a982424004560b7213fbaa3.wgsl", + "byteLength": 499, + "sha256": "0337d8a473b6e485bd383533df7d373dbbfe7a5f3a982424004560b7213fbaa3" + }, + { + "path": "kernels/036902bfb564d824fa22d0ba0d8ed16a5d58e362fa585035f488ba7b806cefea.wgsl", + "byteLength": 2876, + "sha256": "036902bfb564d824fa22d0ba0d8ed16a5d58e362fa585035f488ba7b806cefea" + }, + { + "path": "kernels/04f26661cc9ac73bb7f39f66b76c4be31ee8774e094eeb41ed7d677e1b1d3fa9.wgsl", + "byteLength": 368, + "sha256": "04f26661cc9ac73bb7f39f66b76c4be31ee8774e094eeb41ed7d677e1b1d3fa9" + }, + { + "path": "kernels/04f5cb70141e507d48bd44a76bfdf264a404a706e8a012502dce5a22ee75bab0.wgsl", + "byteLength": 371, + "sha256": "04f5cb70141e507d48bd44a76bfdf264a404a706e8a012502dce5a22ee75bab0" + }, + { + "path": "kernels/0554a443ecf6ead32fd2d58178b9ce3c592c89a09b3f63fa509ee947323bb497.wgsl", + "byteLength": 399, + "sha256": "0554a443ecf6ead32fd2d58178b9ce3c592c89a09b3f63fa509ee947323bb497" + }, + { + "path": "kernels/06440203515e4680feb62f40c1594cb018d746dea49cc7f455143bffb1bfa23f.wgsl", + "byteLength": 799, + "sha256": "06440203515e4680feb62f40c1594cb018d746dea49cc7f455143bffb1bfa23f" + }, + { + "path": "kernels/06eecde176beab9ff488ad533f2f4513e09bc49a30c4358f9648076f619f9992.wgsl", + "byteLength": 394, + "sha256": "06eecde176beab9ff488ad533f2f4513e09bc49a30c4358f9648076f619f9992" + }, + { + "path": "kernels/0725908abf78c022f86deb338a06779f6f1346ebfe54ff5a43ee6b9eeb93c972.wgsl", + "byteLength": 286, + "sha256": "0725908abf78c022f86deb338a06779f6f1346ebfe54ff5a43ee6b9eeb93c972" + }, + { + "path": "kernels/07cfabe2e2c2feff22a06c8296600e5ca21efb7444419f0a05e5ff6f48e0292d.wgsl", + "byteLength": 307, + "sha256": "07cfabe2e2c2feff22a06c8296600e5ca21efb7444419f0a05e5ff6f48e0292d" + }, + { + "path": "kernels/0835fa80eaadb7c0e6d677e1fc622ad5dcedabb431e5d312f3b7aeb2252a7c7c.wgsl", + "byteLength": 231, + "sha256": "0835fa80eaadb7c0e6d677e1fc622ad5dcedabb431e5d312f3b7aeb2252a7c7c" + }, + { + "path": "kernels/08390b1553d11820d1d96b10add657b92acb8d26cd9f11acab8f16777ecfc10a.wgsl", + "byteLength": 758, + "sha256": "08390b1553d11820d1d96b10add657b92acb8d26cd9f11acab8f16777ecfc10a" + }, + { + "path": "kernels/09ea34c2533b929bd309e2bcbcf6d27fa02c731d82276ba6425db85961ea121b.wgsl", + "byteLength": 317, + "sha256": "09ea34c2533b929bd309e2bcbcf6d27fa02c731d82276ba6425db85961ea121b" + }, + { + "path": "kernels/0b8815b1efe176d55ab08530c0a9e1913cf6c9ef3e773c574843573d237cf196.wgsl", + "byteLength": 309, + "sha256": "0b8815b1efe176d55ab08530c0a9e1913cf6c9ef3e773c574843573d237cf196" + }, + { + "path": "kernels/0bbd6a5e356c1205a61dc3580a3ff68d88b98a952a5692d66b56ded171d9fc56.wgsl", + "byteLength": 311, + "sha256": "0bbd6a5e356c1205a61dc3580a3ff68d88b98a952a5692d66b56ded171d9fc56" + }, + { + "path": "kernels/0d1edb63bf4dc212d55f8a4c79a50e04c0d822bd9f6e193003e2071ba0d57d69.wgsl", + "byteLength": 411, + "sha256": "0d1edb63bf4dc212d55f8a4c79a50e04c0d822bd9f6e193003e2071ba0d57d69" + }, + { + "path": "kernels/0d3892883d1532d173a7dbe85d9ab1daa87f0d9b4923a535b8d2003f24f9500c.wgsl", + "byteLength": 497, + "sha256": "0d3892883d1532d173a7dbe85d9ab1daa87f0d9b4923a535b8d2003f24f9500c" + }, + { + "path": "kernels/0f943f386d2f37a8e56b4285b26e1c093c2f2fa2a5ce81cc43c44cc9bb0137f5.wgsl", + "byteLength": 386, + "sha256": "0f943f386d2f37a8e56b4285b26e1c093c2f2fa2a5ce81cc43c44cc9bb0137f5" + }, + { + "path": "kernels/0fbc9484ef8ca703ced4ffd123f1ae733c44556b6cb160ee803b820ff5ec867d.wgsl", + "byteLength": 411, + "sha256": "0fbc9484ef8ca703ced4ffd123f1ae733c44556b6cb160ee803b820ff5ec867d" + }, + { + "path": "kernels/100cfb630383828acba947e4a98fa4a47e8173e7ca32a62325780b90606093bf.wgsl", + "byteLength": 1025, + "sha256": "100cfb630383828acba947e4a98fa4a47e8173e7ca32a62325780b90606093bf" + }, + { + "path": "kernels/1024c1444e2cb17a211ebed96e18db764f1809d6e986d09e75f482ab4e61a07b.wgsl", + "byteLength": 2883, + "sha256": "1024c1444e2cb17a211ebed96e18db764f1809d6e986d09e75f482ab4e61a07b" + }, + { + "path": "kernels/10f50e9d35c8b5620e65e713c11c5150ba986b19e201a736fe77d4dc04922158.wgsl", + "byteLength": 2077, + "sha256": "10f50e9d35c8b5620e65e713c11c5150ba986b19e201a736fe77d4dc04922158" + }, + { + "path": "kernels/11a92e9cba6bfc381c98c5127db137639d6c87f1cb220459880ead039dc81256.wgsl", + "byteLength": 363, + "sha256": "11a92e9cba6bfc381c98c5127db137639d6c87f1cb220459880ead039dc81256" + }, + { + "path": "kernels/121285fc94b4a9f873c60a1d6e0de9d764286607718405fd18288e7ff419c483.wgsl", + "byteLength": 381, + "sha256": "121285fc94b4a9f873c60a1d6e0de9d764286607718405fd18288e7ff419c483" + }, + { + "path": "kernels/1255847146b31732939e573cdb26c483358c1ce07f987bd8c3d3d69ae8c7e141.wgsl", + "byteLength": 380, + "sha256": "1255847146b31732939e573cdb26c483358c1ce07f987bd8c3d3d69ae8c7e141" + }, + { + "path": "kernels/13237b557466d2fef5bfbc74e7ac77219b9821a53bc0843dbb5d14db8b04d414.wgsl", + "byteLength": 308, + "sha256": "13237b557466d2fef5bfbc74e7ac77219b9821a53bc0843dbb5d14db8b04d414" + }, + { + "path": "kernels/13704225487f82c29f80dc5fb81c2c0785cc8837f9919d3b41ed195c45ccb159.wgsl", + "byteLength": 801, + "sha256": "13704225487f82c29f80dc5fb81c2c0785cc8837f9919d3b41ed195c45ccb159" + }, + { + "path": "kernels/13dc73935b9b3b978232043e13babee3877bd53ca572be440de0590dacce8b17.wgsl", + "byteLength": 367, + "sha256": "13dc73935b9b3b978232043e13babee3877bd53ca572be440de0590dacce8b17" + }, + { + "path": "kernels/140ebe12d31f1420a8a159b91ae1773390190f496e06e0e5d7b5351f38245068.wgsl", + "byteLength": 4159, + "sha256": "140ebe12d31f1420a8a159b91ae1773390190f496e06e0e5d7b5351f38245068" + }, + { + "path": "kernels/1545025e0a625ccc73b42ae112c6f9d78a1504c10b759979ae2247984f25f056.wgsl", + "byteLength": 551, + "sha256": "1545025e0a625ccc73b42ae112c6f9d78a1504c10b759979ae2247984f25f056" + }, + { + "path": "kernels/17ec6bdaf98edf7657b74a25036c2bec806ecbb4280f33fff6afd2e0de5ed377.wgsl", + "byteLength": 317, + "sha256": "17ec6bdaf98edf7657b74a25036c2bec806ecbb4280f33fff6afd2e0de5ed377" + }, + { + "path": "kernels/18a0b02a12ebf73203283d267342582d54ba411aeee9cbe21ad89ae890e4cfea.wgsl", + "byteLength": 396, + "sha256": "18a0b02a12ebf73203283d267342582d54ba411aeee9cbe21ad89ae890e4cfea" + }, + { + "path": "kernels/18a66ec0875c456c9defd45d15e6ef0c148e64a1618e2825c7f96eadbbe8303a.wgsl", + "byteLength": 286, + "sha256": "18a66ec0875c456c9defd45d15e6ef0c148e64a1618e2825c7f96eadbbe8303a" + }, + { + "path": "kernels/18b1cef2bae996f56664d9215180e3bfc77b4e514db52fdf9b6c58be51b53edb.wgsl", + "byteLength": 369, + "sha256": "18b1cef2bae996f56664d9215180e3bfc77b4e514db52fdf9b6c58be51b53edb" + }, + { + "path": "kernels/19564c145248f065669be23f5daeeda96e025ee4389bef80983001e83fddb31d.wgsl", + "byteLength": 379, + "sha256": "19564c145248f065669be23f5daeeda96e025ee4389bef80983001e83fddb31d" + }, + { + "path": "kernels/19ed0cd9af407327fd0ed5dc99a7ed397076a54b48372a8f2156bbef0c27b4bb.wgsl", + "byteLength": 2400, + "sha256": "19ed0cd9af407327fd0ed5dc99a7ed397076a54b48372a8f2156bbef0c27b4bb" + }, + { + "path": "kernels/1a73b6fceda28f40bba4ae27a986ffa39842db94fa5903ea5bf689a7e854d4f3.wgsl", + "byteLength": 499, + "sha256": "1a73b6fceda28f40bba4ae27a986ffa39842db94fa5903ea5bf689a7e854d4f3" + }, + { + "path": "kernels/1ad205080cae29142a3ad87343a0cf3ac4945455398293946110d421ce6d515e.wgsl", + "byteLength": 371, + "sha256": "1ad205080cae29142a3ad87343a0cf3ac4945455398293946110d421ce6d515e" + }, + { + "path": "kernels/1b9f4e330debc7235cfaf8f51d00fec575e09aa6116a45ea001e10ff5f09eb8c.wgsl", + "byteLength": 581, + "sha256": "1b9f4e330debc7235cfaf8f51d00fec575e09aa6116a45ea001e10ff5f09eb8c" + }, + { + "path": "kernels/1d0cbb068fe17123e646934bfa1259f19e5db04e45d72a157d3ea4fa48c81aa0.wgsl", + "byteLength": 406, + "sha256": "1d0cbb068fe17123e646934bfa1259f19e5db04e45d72a157d3ea4fa48c81aa0" + }, + { + "path": "kernels/1ea73621b5acbcc2acfe99cb1cefae97247ee2c199f0b0a8574815ea776ca3bb.wgsl", + "byteLength": 758, + "sha256": "1ea73621b5acbcc2acfe99cb1cefae97247ee2c199f0b0a8574815ea776ca3bb" + }, + { + "path": "kernels/20a4dee9cf34730b4ad77bde7921c189235c4da7d54a3dfb0d589f4d5275c755.wgsl", + "byteLength": 386, + "sha256": "20a4dee9cf34730b4ad77bde7921c189235c4da7d54a3dfb0d589f4d5275c755" + }, + { + "path": "kernels/20fb9e0d0bd2aab34b7f69eac259898e68cac4a0d6b0bda5e95c9126a660336d.wgsl", + "byteLength": 395, + "sha256": "20fb9e0d0bd2aab34b7f69eac259898e68cac4a0d6b0bda5e95c9126a660336d" + }, + { + "path": "kernels/2182574f59b7d9e38d74b30540c5781827e7da2de1ba6b00327af0b4cb42379d.wgsl", + "byteLength": 410, + "sha256": "2182574f59b7d9e38d74b30540c5781827e7da2de1ba6b00327af0b4cb42379d" + }, + { + "path": "kernels/222a2645e3e02d0a4063a63ca1b6fa4c89faee6b76905b20de4dd54ab3077ea3.wgsl", + "byteLength": 285, + "sha256": "222a2645e3e02d0a4063a63ca1b6fa4c89faee6b76905b20de4dd54ab3077ea3" + }, + { + "path": "kernels/237458dff084b2aa9ccba5578da3b2a0b062951575364d1464250baca3fdac5a.wgsl", + "byteLength": 310, + "sha256": "237458dff084b2aa9ccba5578da3b2a0b062951575364d1464250baca3fdac5a" + }, + { + "path": "kernels/246ea07912fcd8a9073926e863141111eb4091b52cc980a6eef148beed122fc4.wgsl", + "byteLength": 847, + "sha256": "246ea07912fcd8a9073926e863141111eb4091b52cc980a6eef148beed122fc4" + }, + { + "path": "kernels/24ead95b9223eff51a5b0777dfcdd76264fb7b321d32ef2def41bb79b1c78c41.wgsl", + "byteLength": 2882, + "sha256": "24ead95b9223eff51a5b0777dfcdd76264fb7b321d32ef2def41bb79b1c78c41" + }, + { + "path": "kernels/2505a613f10a5ed1c70a3f80a16dd566da65caa2d7d85083e23f85a30844d63e.wgsl", + "byteLength": 417, + "sha256": "2505a613f10a5ed1c70a3f80a16dd566da65caa2d7d85083e23f85a30844d63e" + }, + { + "path": "kernels/25532abe433506b9b9ba939343500c2c3a46b6acb963e4aefebb913ebea672e0.wgsl", + "byteLength": 801, + "sha256": "25532abe433506b9b9ba939343500c2c3a46b6acb963e4aefebb913ebea672e0" + }, + { + "path": "kernels/26cf6eb3b486d1652247ff130b05ed0e8c8560028eeba59acfc075b976bfdfce.wgsl", + "byteLength": 549, + "sha256": "26cf6eb3b486d1652247ff130b05ed0e8c8560028eeba59acfc075b976bfdfce" + }, + { + "path": "kernels/26e7750c2eb32d9a20e2e2e4094f98aab2a61d2ce78ccf72d48aeaa216c1c805.wgsl", + "byteLength": 1651, + "sha256": "26e7750c2eb32d9a20e2e2e4094f98aab2a61d2ce78ccf72d48aeaa216c1c805" + }, + { + "path": "kernels/2790fbaffce918ef00d053c0f83f62375a0a4ac95aa9ec58cb066b2aee41d18a.wgsl", + "byteLength": 2880, + "sha256": "2790fbaffce918ef00d053c0f83f62375a0a4ac95aa9ec58cb066b2aee41d18a" + }, + { + "path": "kernels/2792ae5841828bd5af938c10096abe385e63bb3ec2a22e850f146739433c12bf.wgsl", + "byteLength": 396, + "sha256": "2792ae5841828bd5af938c10096abe385e63bb3ec2a22e850f146739433c12bf" + }, + { + "path": "kernels/28119aa01122c42bd26ceb37129fe0c95b2a9192163f6dabd90fe058b1e14c54.wgsl", + "byteLength": 311, + "sha256": "28119aa01122c42bd26ceb37129fe0c95b2a9192163f6dabd90fe058b1e14c54" + }, + { + "path": "kernels/2af7517eb26022ada8f8870fd9e1e1ef3da66b9c466336ee18d5295957820b27.wgsl", + "byteLength": 387, + "sha256": "2af7517eb26022ada8f8870fd9e1e1ef3da66b9c466336ee18d5295957820b27" + }, + { + "path": "kernels/2b02ece9784fc350cef18e08c962031f74dbc27c7d1cad3a13dda1cebb84b403.wgsl", + "byteLength": 419, + "sha256": "2b02ece9784fc350cef18e08c962031f74dbc27c7d1cad3a13dda1cebb84b403" + }, + { + "path": "kernels/2b9e4b05ef5623d721dbe56b5812e551efcc6fd833d81064320e86fe94d8c670.wgsl", + "byteLength": 301, + "sha256": "2b9e4b05ef5623d721dbe56b5812e551efcc6fd833d81064320e86fe94d8c670" + }, + { + "path": "kernels/2bdeb3590b1ba05cf6e9c7e8245f8aa552a12dae84f9578c603c9cee081a82d4.wgsl", + "byteLength": 847, + "sha256": "2bdeb3590b1ba05cf6e9c7e8245f8aa552a12dae84f9578c603c9cee081a82d4" + }, + { + "path": "kernels/2c0cca2a7b0198c317e68992e64f3fe9bba80b67204c2695c20c372471c150d3.wgsl", + "byteLength": 473, + "sha256": "2c0cca2a7b0198c317e68992e64f3fe9bba80b67204c2695c20c372471c150d3" + }, + { + "path": "kernels/2c66dcac8fdd3caa9ff1e2441524070c21c24df9526bee44c49e765a8d4c8222.wgsl", + "byteLength": 410, + "sha256": "2c66dcac8fdd3caa9ff1e2441524070c21c24df9526bee44c49e765a8d4c8222" + }, + { + "path": "kernels/2cd4a533d32097a17641196f0cd315d170c587bc2b1c62b42b79d566d6fbf140.wgsl", + "byteLength": 386, + "sha256": "2cd4a533d32097a17641196f0cd315d170c587bc2b1c62b42b79d566d6fbf140" + }, + { + "path": "kernels/2e1ce6ef01198780289fd4a35d8f86b5172595ed189cf931e8444091d49e8d3a.wgsl", + "byteLength": 297, + "sha256": "2e1ce6ef01198780289fd4a35d8f86b5172595ed189cf931e8444091d49e8d3a" + }, + { + "path": "kernels/2eeb54034621ff097879064a60fd4e0dd5d68201e48296ad234413a39579acc8.wgsl", + "byteLength": 409, + "sha256": "2eeb54034621ff097879064a60fd4e0dd5d68201e48296ad234413a39579acc8" + }, + { + "path": "kernels/3087f59456d6581e7cdad1a14086af53281e39d2041a6a93387ba6e1daf5f9cb.wgsl", + "byteLength": 421, + "sha256": "3087f59456d6581e7cdad1a14086af53281e39d2041a6a93387ba6e1daf5f9cb" + }, + { + "path": "kernels/3203e08f2c99fa4848f553739b7115a7c677840344f17b1d4391d6130517f5a7.wgsl", + "byteLength": 285, + "sha256": "3203e08f2c99fa4848f553739b7115a7c677840344f17b1d4391d6130517f5a7" + }, + { + "path": "kernels/32a5027cac5dd969d63fe5d5c88d7c87abb600c43ad1d70e1c56615ea781eff3.wgsl", + "byteLength": 422, + "sha256": "32a5027cac5dd969d63fe5d5c88d7c87abb600c43ad1d70e1c56615ea781eff3" + }, + { + "path": "kernels/32cb7d055e8ecf035e10d05724e64544393bd3916079992a3d8dce427bb14181.wgsl", + "byteLength": 468, + "sha256": "32cb7d055e8ecf035e10d05724e64544393bd3916079992a3d8dce427bb14181" + }, + { + "path": "kernels/33245a8fb16de10d97ccedb17a9b479b3b7024b2b88a26c738a95f94f248fa8d.wgsl", + "byteLength": 1650, + "sha256": "33245a8fb16de10d97ccedb17a9b479b3b7024b2b88a26c738a95f94f248fa8d" + }, + { + "path": "kernels/33e8ec04c66adb4988f562f0f9d3e92d29dfda91a56d0ed62be598c7c737f5ba.wgsl", + "byteLength": 411, + "sha256": "33e8ec04c66adb4988f562f0f9d3e92d29dfda91a56d0ed62be598c7c737f5ba" + }, + { + "path": "kernels/3560fe2bb07bf6fb92598b9f9c006029892f16dcb55b418973ed89b2b5086b1b.wgsl", + "byteLength": 394, + "sha256": "3560fe2bb07bf6fb92598b9f9c006029892f16dcb55b418973ed89b2b5086b1b" + }, + { + "path": "kernels/3595b126ffc5f891b35f356c4b465831a5e0dac1f3e2d68bccafd4a8c6e04c6e.wgsl", + "byteLength": 2401, + "sha256": "3595b126ffc5f891b35f356c4b465831a5e0dac1f3e2d68bccafd4a8c6e04c6e" + }, + { + "path": "kernels/359d61f2ba174e54e2a0920fcf61e84e436fd3eaf7e2832e21fdb24094493667.wgsl", + "byteLength": 553, + "sha256": "359d61f2ba174e54e2a0920fcf61e84e436fd3eaf7e2832e21fdb24094493667" + }, + { + "path": "kernels/35b866864f2f36fad2f64440227cd6088083c96b0ef50192ce71ef159e1d1b11.wgsl", + "byteLength": 853, + "sha256": "35b866864f2f36fad2f64440227cd6088083c96b0ef50192ce71ef159e1d1b11" + }, + { + "path": "kernels/3622ffa2072335a35d6c9db5d284ed92b3fb5ed304acc2c606408063e7e21dcd.wgsl", + "byteLength": 415, + "sha256": "3622ffa2072335a35d6c9db5d284ed92b3fb5ed304acc2c606408063e7e21dcd" + }, + { + "path": "kernels/3669082b9a10903156fc5a35ec21f6dd470e11be7cc903372a6c2d410ed3287a.wgsl", + "byteLength": 1655, + "sha256": "3669082b9a10903156fc5a35ec21f6dd470e11be7cc903372a6c2d410ed3287a" + }, + { + "path": "kernels/3830061b0fc54c85d3d8a783b927c44484b1a3b68b52b8d8a1b980f7553deebf.wgsl", + "byteLength": 406, + "sha256": "3830061b0fc54c85d3d8a783b927c44484b1a3b68b52b8d8a1b980f7553deebf" + }, + { + "path": "kernels/38bd527686bcade9ed19a52788ccd711ca668e76854cc6274c480860fce88ff2.wgsl", + "byteLength": 382, + "sha256": "38bd527686bcade9ed19a52788ccd711ca668e76854cc6274c480860fce88ff2" + }, + { + "path": "kernels/39646bdfafd1ab0cb874474e3f1e9d79b57f10582a1804bc1d3762a492fec851.wgsl", + "byteLength": 413, + "sha256": "39646bdfafd1ab0cb874474e3f1e9d79b57f10582a1804bc1d3762a492fec851" + }, + { + "path": "kernels/39e41393f5850cc4f0b2e8172a3c53c8c7fb874ceb4df2c6f13f9af6128ad7fc.wgsl", + "byteLength": 411, + "sha256": "39e41393f5850cc4f0b2e8172a3c53c8c7fb874ceb4df2c6f13f9af6128ad7fc" + }, + { + "path": "kernels/3a76085983a5330bf07a4166ea4975700403f9d8035a8ef450f7f18b9cf47c66.wgsl", + "byteLength": 417, + "sha256": "3a76085983a5330bf07a4166ea4975700403f9d8035a8ef450f7f18b9cf47c66" + }, + { + "path": "kernels/3b8210d9acf57a3c1cca9e926547520d5994967f27ce92897a15b14137f7da66.wgsl", + "byteLength": 373, + "sha256": "3b8210d9acf57a3c1cca9e926547520d5994967f27ce92897a15b14137f7da66" + }, + { + "path": "kernels/3bb850bda95bf77706a2839616a401b773f9de0428d1b427e61fb04e2c35fe74.wgsl", + "byteLength": 493, + "sha256": "3bb850bda95bf77706a2839616a401b773f9de0428d1b427e61fb04e2c35fe74" + }, + { + "path": "kernels/3caf74924884e14997a7fcbb2625a36e3b8a2bcf92da835bf6f787ddae437cdb.wgsl", + "byteLength": 306, + "sha256": "3caf74924884e14997a7fcbb2625a36e3b8a2bcf92da835bf6f787ddae437cdb" + }, + { + "path": "kernels/3d5b97cfaf8dd0e680b6a9c84e7eca497f9f6e49817d20f1a72dddd7a3303f73.wgsl", + "byteLength": 417, + "sha256": "3d5b97cfaf8dd0e680b6a9c84e7eca497f9f6e49817d20f1a72dddd7a3303f73" + }, + { + "path": "kernels/3daeb9cba5c07ed47ac55e1c2565aa82f7d8e8409037707e7339d1d96d122144.wgsl", + "byteLength": 553, + "sha256": "3daeb9cba5c07ed47ac55e1c2565aa82f7d8e8409037707e7339d1d96d122144" + }, + { + "path": "kernels/3e34409407100d4858c4c109cf62f3eaf2f4c6081166b0ec8679105e6dfbe7fe.wgsl", + "byteLength": 309, + "sha256": "3e34409407100d4858c4c109cf62f3eaf2f4c6081166b0ec8679105e6dfbe7fe" + }, + { + "path": "kernels/3f89d19bd6791657fa702ad00a0517b5f292dbf7d0c196bd5b21c949476d23fd.wgsl", + "byteLength": 497, + "sha256": "3f89d19bd6791657fa702ad00a0517b5f292dbf7d0c196bd5b21c949476d23fd" + }, + { + "path": "kernels/3fa1efae6d90015ba69cb40cef009f49ad7f7a960018fb92a962707deff4f09e.wgsl", + "byteLength": 286, + "sha256": "3fa1efae6d90015ba69cb40cef009f49ad7f7a960018fb92a962707deff4f09e" + }, + { + "path": "kernels/40f115c8647a238bfb3ccb0bb8446bccdc94a0dfadc89111c4920efb2259f41d.wgsl", + "byteLength": 410, + "sha256": "40f115c8647a238bfb3ccb0bb8446bccdc94a0dfadc89111c4920efb2259f41d" + }, + { + "path": "kernels/42c5af4838daf75fff9d4bb9a5df409511c1d6daed617d05eaf033a977503eac.wgsl", + "byteLength": 548, + "sha256": "42c5af4838daf75fff9d4bb9a5df409511c1d6daed617d05eaf033a977503eac" + }, + { + "path": "kernels/4406ab1e6e4b9eeb91ace297320aa05a55cc481e02894a4a74b655b4070ade36.wgsl", + "byteLength": 417, + "sha256": "4406ab1e6e4b9eeb91ace297320aa05a55cc481e02894a4a74b655b4070ade36" + }, + { + "path": "kernels/44745cf68171fb657debd4b4fdd15edcd4d5798e18aedc4314d0cb1249948808.wgsl", + "byteLength": 788, + "sha256": "44745cf68171fb657debd4b4fdd15edcd4d5798e18aedc4314d0cb1249948808" + }, + { + "path": "kernels/449d64f009b19ce6132d44be8e54d36f787f80a024cda115ad1d1c49dda88c7e.wgsl", + "byteLength": 2886, + "sha256": "449d64f009b19ce6132d44be8e54d36f787f80a024cda115ad1d1c49dda88c7e" + }, + { + "path": "kernels/4540d87eaec90c9eb42badfe0abfa70252f26b6e7de4dd31ee6903fe50e96bd1.wgsl", + "byteLength": 377, + "sha256": "4540d87eaec90c9eb42badfe0abfa70252f26b6e7de4dd31ee6903fe50e96bd1" + }, + { + "path": "kernels/45a1fd3ed514f208718651026bf2ee30dda66b02cdd950dc71e88eb6bdac0b10.wgsl", + "byteLength": 365, + "sha256": "45a1fd3ed514f208718651026bf2ee30dda66b02cdd950dc71e88eb6bdac0b10" + }, + { + "path": "kernels/466959b3cf0d274924151bdd80808e8451f9d8c2aac1455a44f26fa6d8b44fd0.wgsl", + "byteLength": 421, + "sha256": "466959b3cf0d274924151bdd80808e8451f9d8c2aac1455a44f26fa6d8b44fd0" + }, + { + "path": "kernels/48608b2b7bfbe0b65d9e2d82a94a76683315421acb1bf168b4baf14a3c139f76.wgsl", + "byteLength": 288, + "sha256": "48608b2b7bfbe0b65d9e2d82a94a76683315421acb1bf168b4baf14a3c139f76" + }, + { + "path": "kernels/4a4eb52af727f11dfbd69b294a8ab3eb5053bd5a2feea3cfdb35ab10bc1a4426.wgsl", + "byteLength": 307, + "sha256": "4a4eb52af727f11dfbd69b294a8ab3eb5053bd5a2feea3cfdb35ab10bc1a4426" + }, + { + "path": "kernels/4b098a370a6c993f2c974bd5afcc00f7e3686a600c458a060c7e7db3193789ba.wgsl", + "byteLength": 394, + "sha256": "4b098a370a6c993f2c974bd5afcc00f7e3686a600c458a060c7e7db3193789ba" + }, + { + "path": "kernels/4b1a7529fd5c57d5d4593d4af58a9a3b545c7d106d18251f6452f8a562b97952.wgsl", + "byteLength": 389, + "sha256": "4b1a7529fd5c57d5d4593d4af58a9a3b545c7d106d18251f6452f8a562b97952" + }, + { + "path": "kernels/4b2b8eb4b08f8e328aa0fa93f9e56b0faf2ff386d3e1dc8dd7e80687a17b3f6c.wgsl", + "byteLength": 1640, + "sha256": "4b2b8eb4b08f8e328aa0fa93f9e56b0faf2ff386d3e1dc8dd7e80687a17b3f6c" + }, + { + "path": "kernels/4be963f9a4bb928764fd0efe02769e220b0e69defb2f8b22ab28e41a90d3fc14.wgsl", + "byteLength": 286, + "sha256": "4be963f9a4bb928764fd0efe02769e220b0e69defb2f8b22ab28e41a90d3fc14" + }, + { + "path": "kernels/4d46494a55ac0b66fdddd47b9422106ac39e0c7d206f01004e13f93a010e1bf5.wgsl", + "byteLength": 549, + "sha256": "4d46494a55ac0b66fdddd47b9422106ac39e0c7d206f01004e13f93a010e1bf5" + }, + { + "path": "kernels/4d8ebffbbf193b18c13a5cc17d286bf5c92c5ba53ca022af78a9151ec1e5b9c0.wgsl", + "byteLength": 413, + "sha256": "4d8ebffbbf193b18c13a5cc17d286bf5c92c5ba53ca022af78a9151ec1e5b9c0" + }, + { + "path": "kernels/4f2c0d08150d4b97d90c244db2d41baca81484c2630dbbd6d586f2d8a4b07b8b.wgsl", + "byteLength": 406, + "sha256": "4f2c0d08150d4b97d90c244db2d41baca81484c2630dbbd6d586f2d8a4b07b8b" + }, + { + "path": "kernels/4f34c5fab43d92ae210831049e156507a840167c927e619d7f4269ccbe772b9c.wgsl", + "byteLength": 2883, + "sha256": "4f34c5fab43d92ae210831049e156507a840167c927e619d7f4269ccbe772b9c" + }, + { + "path": "kernels/4fa24e8f09b07271534341707a7a688af67c7deca1f114bfaeba20a2e066c9f1.wgsl", + "byteLength": 500, + "sha256": "4fa24e8f09b07271534341707a7a688af67c7deca1f114bfaeba20a2e066c9f1" + }, + { + "path": "kernels/4fad29e3e337840e25132f10b3e3d55225f727ae13525ff0b0bdf31e03f09d74.wgsl", + "byteLength": 305, + "sha256": "4fad29e3e337840e25132f10b3e3d55225f727ae13525ff0b0bdf31e03f09d74" + }, + { + "path": "kernels/50535e4c99d9fb4a272d8260a1415f6b38a7ad1025da64e145f230df697d9b73.wgsl", + "byteLength": 330, + "sha256": "50535e4c99d9fb4a272d8260a1415f6b38a7ad1025da64e145f230df697d9b73" + }, + { + "path": "kernels/51fd4d798491c6a80daff4c18b0495926b7f62269dfc3a78a327faa52ba2a759.wgsl", + "byteLength": 307, + "sha256": "51fd4d798491c6a80daff4c18b0495926b7f62269dfc3a78a327faa52ba2a759" + }, + { + "path": "kernels/52210a661e4d5241f53b3b1caf65456e1988ddd663ded8ead63ee7f7c7e3ff57.wgsl", + "byteLength": 402, + "sha256": "52210a661e4d5241f53b3b1caf65456e1988ddd663ded8ead63ee7f7c7e3ff57" + }, + { + "path": "kernels/52b439507af68e969a6e116d3c8ea5338a4cde5a3fc1e97b729512d17ab2f4f9.wgsl", + "byteLength": 305, + "sha256": "52b439507af68e969a6e116d3c8ea5338a4cde5a3fc1e97b729512d17ab2f4f9" + }, + { + "path": "kernels/53cf98d6fc99b90fc54e49ab6dca199d0422fb709435ecdd81c778578970aea7.wgsl", + "byteLength": 2398, + "sha256": "53cf98d6fc99b90fc54e49ab6dca199d0422fb709435ecdd81c778578970aea7" + }, + { + "path": "kernels/545685c68cee20b8414c1308ef693ab61262ff01912d11b532039aeb0aa744f0.wgsl", + "byteLength": 2883, + "sha256": "545685c68cee20b8414c1308ef693ab61262ff01912d11b532039aeb0aa744f0" + }, + { + "path": "kernels/55b9c48ba429daf80bbae0b4737f895b475abdc9ddfdc88ab2f894f133ec2bf9.wgsl", + "byteLength": 326, + "sha256": "55b9c48ba429daf80bbae0b4737f895b475abdc9ddfdc88ab2f894f133ec2bf9" + }, + { + "path": "kernels/56167a7e8fb1c67fa72948a8baa71866d54cc775be83f8cfa75a947ac0f58b12.wgsl", + "byteLength": 288, + "sha256": "56167a7e8fb1c67fa72948a8baa71866d54cc775be83f8cfa75a947ac0f58b12" + }, + { + "path": "kernels/564b62d37d6845f8049f903d4ba35762c607937d8a9644bfe511fbc7bf90dacd.wgsl", + "byteLength": 847, + "sha256": "564b62d37d6845f8049f903d4ba35762c607937d8a9644bfe511fbc7bf90dacd" + }, + { + "path": "kernels/58077eb80a5fa253f535c97c82dc07edd48455a17cc52583aeee41c7d1bbd0b3.wgsl", + "byteLength": 405, + "sha256": "58077eb80a5fa253f535c97c82dc07edd48455a17cc52583aeee41c7d1bbd0b3" + }, + { + "path": "kernels/59b8a018e76aa8aebe394fa4ec05fb821c686b4bca326a00818f625c0b6fbc87.wgsl", + "byteLength": 2404, + "sha256": "59b8a018e76aa8aebe394fa4ec05fb821c686b4bca326a00818f625c0b6fbc87" + }, + { + "path": "kernels/59ea88d691b919af03bbb26f0253decfbc35d74f9661cdd3a08570ae85c313d2.wgsl", + "byteLength": 379, + "sha256": "59ea88d691b919af03bbb26f0253decfbc35d74f9661cdd3a08570ae85c313d2" + }, + { + "path": "kernels/5a3a2ba3e1cb848fbbeeafe66425eae65d9fd196646d15eef291188a8179e044.wgsl", + "byteLength": 849, + "sha256": "5a3a2ba3e1cb848fbbeeafe66425eae65d9fd196646d15eef291188a8179e044" + }, + { + "path": "kernels/5a80240445ca04ae3b84f39595985aa106dbdbb0f34e8d52d89b945237abe3ad.wgsl", + "byteLength": 2404, + "sha256": "5a80240445ca04ae3b84f39595985aa106dbdbb0f34e8d52d89b945237abe3ad" + }, + { + "path": "kernels/5aabb2d12f9b0486434345056b4bd24e4456ed356030141bf18306c0d7524476.wgsl", + "byteLength": 816, + "sha256": "5aabb2d12f9b0486434345056b4bd24e4456ed356030141bf18306c0d7524476" + }, + { + "path": "kernels/5b490e5074446b3ca05ffdd5f79c18e32aa5c23339dd93c75956125f4caba51f.wgsl", + "byteLength": 851, + "sha256": "5b490e5074446b3ca05ffdd5f79c18e32aa5c23339dd93c75956125f4caba51f" + }, + { + "path": "kernels/5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd.wgsl", + "byteLength": 397, + "sha256": "5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd" + }, + { + "path": "kernels/5c6c3ee968c62238f5bc3de377f01cda30ce85578a7892f973ac37397a3baba1.wgsl", + "byteLength": 2404, + "sha256": "5c6c3ee968c62238f5bc3de377f01cda30ce85578a7892f973ac37397a3baba1" + }, + { + "path": "kernels/5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4.wgsl", + "byteLength": 554, + "sha256": "5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4" + }, + { + "path": "kernels/5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51.wgsl", + "byteLength": 556, + "sha256": "5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51" + }, + { + "path": "kernels/5eac5f92aa4d18895369b11adb99ac0d9639d8b615f7240cffe6f6be7046e54a.wgsl", + "byteLength": 845, + "sha256": "5eac5f92aa4d18895369b11adb99ac0d9639d8b615f7240cffe6f6be7046e54a" + }, + { + "path": "kernels/5f57b46016eccc3b50e3685e142b7deadce8f074f124e643e6e7015e2cc27357.wgsl", + "byteLength": 373, + "sha256": "5f57b46016eccc3b50e3685e142b7deadce8f074f124e643e6e7015e2cc27357" + }, + { + "path": "kernels/5f657afde3ab80a1fc4b6739c0b702bc5bd60e52630762e66b210fbb8b42b52a.wgsl", + "byteLength": 403, + "sha256": "5f657afde3ab80a1fc4b6739c0b702bc5bd60e52630762e66b210fbb8b42b52a" + }, + { + "path": "kernels/5f9d7a23bba38f692aefbf2617133c7884ddbe4ea6d985a89a59c1683dcfd6bf.wgsl", + "byteLength": 391, + "sha256": "5f9d7a23bba38f692aefbf2617133c7884ddbe4ea6d985a89a59c1683dcfd6bf" + }, + { + "path": "kernels/5fbfe4534ce5bfff645563250dd536998f537f4d690c4c2fc422723d5af8e3ec.wgsl", + "byteLength": 373, + "sha256": "5fbfe4534ce5bfff645563250dd536998f537f4d690c4c2fc422723d5af8e3ec" + }, + { + "path": "kernels/5fd6e068841f5c054392bef564909dbf086bae9e4030f3625d1143244a08cbbf.wgsl", + "byteLength": 495, + "sha256": "5fd6e068841f5c054392bef564909dbf086bae9e4030f3625d1143244a08cbbf" + }, + { + "path": "kernels/605f51996eef0769d3b456a83f7540262d1761589b55d1fd41fb2b4dd8fa249f.wgsl", + "byteLength": 373, + "sha256": "605f51996eef0769d3b456a83f7540262d1761589b55d1fd41fb2b4dd8fa249f" + }, + { + "path": "kernels/62f30a62c18ed78c9bf37bdc56529accbee2264b9eac931ba0b35a80bb917e7c.wgsl", + "byteLength": 372, + "sha256": "62f30a62c18ed78c9bf37bdc56529accbee2264b9eac931ba0b35a80bb917e7c" + }, + { + "path": "kernels/63396da046b345383e1c7b09aee551d08e4c3c45030ff5c8bb76bbc34bb2abc6.wgsl", + "byteLength": 401, + "sha256": "63396da046b345383e1c7b09aee551d08e4c3c45030ff5c8bb76bbc34bb2abc6" + }, + { + "path": "kernels/64e1fc6b5da91d1e080d9919b88d4d31f53351e09ade25bf005d8b3c411807aa.wgsl", + "byteLength": 2883, + "sha256": "64e1fc6b5da91d1e080d9919b88d4d31f53351e09ade25bf005d8b3c411807aa" + }, + { + "path": "kernels/64f29e6a6e8772f8cfc7449941fd85f70caff7c7e20f316c39b394500e9a8ce1.wgsl", + "byteLength": 319, + "sha256": "64f29e6a6e8772f8cfc7449941fd85f70caff7c7e20f316c39b394500e9a8ce1" + }, + { + "path": "kernels/67816e11d408a6230572433502ace2f9a337285eb623360a1cec493e95add139.wgsl", + "byteLength": 395, + "sha256": "67816e11d408a6230572433502ace2f9a337285eb623360a1cec493e95add139" + }, + { + "path": "kernels/67978e951813ede8016ebf553fb8d3b4ce9e15dd184810544879559208d6b7e1.wgsl", + "byteLength": 322, + "sha256": "67978e951813ede8016ebf553fb8d3b4ce9e15dd184810544879559208d6b7e1" + }, + { + "path": "kernels/691af757595593839af5e5e97ee656472f6e7c7406f57d1d9faae74816d9fc91.wgsl", + "byteLength": 503, + "sha256": "691af757595593839af5e5e97ee656472f6e7c7406f57d1d9faae74816d9fc91" + }, + { + "path": "kernels/69c960fc13daca7f9c1adfe59de570bbd9f993a99fcc7f96de4cfe5441cf8467.wgsl", + "byteLength": 950, + "sha256": "69c960fc13daca7f9c1adfe59de570bbd9f993a99fcc7f96de4cfe5441cf8467" + }, + { + "path": "kernels/6a045508377e47e95d411257071b7ed8f9097fd220c00de6a5167abb548ebe37.wgsl", + "byteLength": 750, + "sha256": "6a045508377e47e95d411257071b7ed8f9097fd220c00de6a5167abb548ebe37" + }, + { + "path": "kernels/6a0a7e63128865cd05d3874c6efe5d8c1b6bf4d46cd858355ea6dc6977c5df56.wgsl", + "byteLength": 2883, + "sha256": "6a0a7e63128865cd05d3874c6efe5d8c1b6bf4d46cd858355ea6dc6977c5df56" + }, + { + "path": "kernels/6a7b2e3778a02c76155d46fa84aeb33f594954e82e09b6b7f2915c0a606eb3f5.wgsl", + "byteLength": 471, + "sha256": "6a7b2e3778a02c76155d46fa84aeb33f594954e82e09b6b7f2915c0a606eb3f5" + }, + { + "path": "kernels/6ae4c7f13978e60e3f4ccd5b8172af88d7dc24cfdb236e51b826f13a03d8cd02.wgsl", + "byteLength": 400, + "sha256": "6ae4c7f13978e60e3f4ccd5b8172af88d7dc24cfdb236e51b826f13a03d8cd02" + }, + { + "path": "kernels/6c57b74ac00a3e385675c024ab180b06a05158dcda1371891249af95792f27fc.wgsl", + "byteLength": 396, + "sha256": "6c57b74ac00a3e385675c024ab180b06a05158dcda1371891249af95792f27fc" + }, + { + "path": "kernels/6caa35fcab56c639d1859e1b090a7e5bf016dd7f33ecd2373c24ab625de16e09.wgsl", + "byteLength": 407, + "sha256": "6caa35fcab56c639d1859e1b090a7e5bf016dd7f33ecd2373c24ab625de16e09" + }, + { + "path": "kernels/6d2014172e3b2089a13c45fa03419aa5fa8792fa945959a054c2a31b5ecf3cc4.wgsl", + "byteLength": 2873, + "sha256": "6d2014172e3b2089a13c45fa03419aa5fa8792fa945959a054c2a31b5ecf3cc4" + }, + { + "path": "kernels/6d748fa04b83886e523f4d9b826e6865f73b31dfe31385b10bd0b9cc9ec4d1db.wgsl", + "byteLength": 607, + "sha256": "6d748fa04b83886e523f4d9b826e6865f73b31dfe31385b10bd0b9cc9ec4d1db" + }, + { + "path": "kernels/6d82b7ed99a04f03fa0b9d241188d9613fa3ce9ff425cf8ee30a7f4ce6ded13d.wgsl", + "byteLength": 407, + "sha256": "6d82b7ed99a04f03fa0b9d241188d9613fa3ce9ff425cf8ee30a7f4ce6ded13d" + }, + { + "path": "kernels/6de6505af6ba3c1c020424d3a99773ff62d2308a2fbf2295ec2ea7e919e4cbb9.wgsl", + "byteLength": 417, + "sha256": "6de6505af6ba3c1c020424d3a99773ff62d2308a2fbf2295ec2ea7e919e4cbb9" + }, + { + "path": "kernels/7002f8fdf09f5124ce2875c3540bce3e77750260556fc1a00a8b13b6c1871c30.wgsl", + "byteLength": 383, + "sha256": "7002f8fdf09f5124ce2875c3540bce3e77750260556fc1a00a8b13b6c1871c30" + }, + { + "path": "kernels/7121b5c223da0b0f28991f55cfed3c3f3390caa0bf65a8e58ae380db281ceb6b.wgsl", + "byteLength": 368, + "sha256": "7121b5c223da0b0f28991f55cfed3c3f3390caa0bf65a8e58ae380db281ceb6b" + }, + { + "path": "kernels/71d38690bcc7fc30f01f1c8fa2f13a38beff889fcb3ff387861bb70038e92129.wgsl", + "byteLength": 370, + "sha256": "71d38690bcc7fc30f01f1c8fa2f13a38beff889fcb3ff387861bb70038e92129" + }, + { + "path": "kernels/71da9dbcb10d6e1b374f1ffdf29339b2db415b37184000c86f71f97b1e44172e.wgsl", + "byteLength": 2404, + "sha256": "71da9dbcb10d6e1b374f1ffdf29339b2db415b37184000c86f71f97b1e44172e" + }, + { + "path": "kernels/720dc88131b6bf06e6b09185aa7d5986eb755dcfa60d0e040cbbf621c8f3f761.wgsl", + "byteLength": 559, + "sha256": "720dc88131b6bf06e6b09185aa7d5986eb755dcfa60d0e040cbbf621c8f3f761" + }, + { + "path": "kernels/72474f821f837da4ebaab4cc925fdac78b707346be174a7c033c4c6518935abc.wgsl", + "byteLength": 406, + "sha256": "72474f821f837da4ebaab4cc925fdac78b707346be174a7c033c4c6518935abc" + }, + { + "path": "kernels/7294da11234f17185d13a5fdd56a89628a08455f57aa41fb9a9a253fd03fe824.wgsl", + "byteLength": 797, + "sha256": "7294da11234f17185d13a5fdd56a89628a08455f57aa41fb9a9a253fd03fe824" + }, + { + "path": "kernels/733b8bc5515900a14d34b3939a10175d25a47b915dd9d016cbe2290ed99ae1f3.wgsl", + "byteLength": 816, + "sha256": "733b8bc5515900a14d34b3939a10175d25a47b915dd9d016cbe2290ed99ae1f3" + }, + { + "path": "kernels/73b861456466f63d096073357cb34eb5f5819861a2961838b6590969f894fa95.wgsl", + "byteLength": 309, + "sha256": "73b861456466f63d096073357cb34eb5f5819861a2961838b6590969f894fa95" + }, + { + "path": "kernels/742db031d819fdf5a756f37e8e824e2dcb2ca3f30efac3ffbd5918181059ae3a.wgsl", + "byteLength": 393, + "sha256": "742db031d819fdf5a756f37e8e824e2dcb2ca3f30efac3ffbd5918181059ae3a" + }, + { + "path": "kernels/7477005621703b342eed39ec3ec47d7f325affa50c5e0d679d4fffe061bb7f6c.wgsl", + "byteLength": 2887, + "sha256": "7477005621703b342eed39ec3ec47d7f325affa50c5e0d679d4fffe061bb7f6c" + }, + { + "path": "kernels/752da00e33abf87b63eba03893a16e7db848f97f1385942d40d8cfb5122d9bd3.wgsl", + "byteLength": 369, + "sha256": "752da00e33abf87b63eba03893a16e7db848f97f1385942d40d8cfb5122d9bd3" + }, + { + "path": "kernels/764403c33cd8994568e068810380cb57e9f2e326dfc09bed63eed1fbed044da1.wgsl", + "byteLength": 311, + "sha256": "764403c33cd8994568e068810380cb57e9f2e326dfc09bed63eed1fbed044da1" + }, + { + "path": "kernels/77f9becbd500abcaf6a8d278cbcb6c7031868ff5bf74f41284940d56894cf9fa.wgsl", + "byteLength": 389, + "sha256": "77f9becbd500abcaf6a8d278cbcb6c7031868ff5bf74f41284940d56894cf9fa" + }, + { + "path": "kernels/786bbebdfaacd0399582fb49c52e752159f05dd74c4c532e9138a7a6c4eef266.wgsl", + "byteLength": 799, + "sha256": "786bbebdfaacd0399582fb49c52e752159f05dd74c4c532e9138a7a6c4eef266" + }, + { + "path": "kernels/7928d1b13d79c16f6c0f9d3130cbdb4193cab6efe3a60b38caa1039688fe56de.wgsl", + "byteLength": 286, + "sha256": "7928d1b13d79c16f6c0f9d3130cbdb4193cab6efe3a60b38caa1039688fe56de" + }, + { + "path": "kernels/793acab25c53175e48dbfd1019e7c5f2bd0176d97e2134d7c290a66cfe702c34.wgsl", + "byteLength": 417, + "sha256": "793acab25c53175e48dbfd1019e7c5f2bd0176d97e2134d7c290a66cfe702c34" + }, + { + "path": "kernels/793b4c977feaf93abb2f6e92796d4971ecf3176f10459317fb7a98b028007c01.wgsl", + "byteLength": 393, + "sha256": "793b4c977feaf93abb2f6e92796d4971ecf3176f10459317fb7a98b028007c01" + }, + { + "path": "kernels/7a2cdb192015ed93da4f95891fbadc45003a1e657f653e9a4d0d69c0900303fe.wgsl", + "byteLength": 803, + "sha256": "7a2cdb192015ed93da4f95891fbadc45003a1e657f653e9a4d0d69c0900303fe" + }, + { + "path": "kernels/7adea2b745b20a2abb96d02a1fca6db5f06f3c5aac850cf8ae1afa6f50868ded.wgsl", + "byteLength": 311, + "sha256": "7adea2b745b20a2abb96d02a1fca6db5f06f3c5aac850cf8ae1afa6f50868ded" + }, + { + "path": "kernels/7b7c42c04ea3c6695ddead641e88b82d8f130015e138fc323eec509b5b56cfa9.wgsl", + "byteLength": 406, + "sha256": "7b7c42c04ea3c6695ddead641e88b82d8f130015e138fc323eec509b5b56cfa9" + }, + { + "path": "kernels/7d6ed9aa41d1b50ecae995ca0fd9e5bdbc20fa769fcf9d1db28d4b664290439d.wgsl", + "byteLength": 797, + "sha256": "7d6ed9aa41d1b50ecae995ca0fd9e5bdbc20fa769fcf9d1db28d4b664290439d" + }, + { + "path": "kernels/7ea4a12734f1206e9c94a060bf6b24732f46685f0c46a78c3c5fbcd64489d8c3.wgsl", + "byteLength": 407, + "sha256": "7ea4a12734f1206e9c94a060bf6b24732f46685f0c46a78c3c5fbcd64489d8c3" + }, + { + "path": "kernels/7f684886a0c031e32c9cf7a4bff880ae692ddc08ddca971ee20d728b4736d0da.wgsl", + "byteLength": 418, + "sha256": "7f684886a0c031e32c9cf7a4bff880ae692ddc08ddca971ee20d728b4736d0da" + }, + { + "path": "kernels/7fe183583b43b627721ba6853b306288d7ceea4b42b630410f47ea9637220a4b.wgsl", + "byteLength": 290, + "sha256": "7fe183583b43b627721ba6853b306288d7ceea4b42b630410f47ea9637220a4b" + }, + { + "path": "kernels/7fed7072c20dc3e66c80b2ac1f737b0e7e70a695e5db34e057f729c945e60ba0.wgsl", + "byteLength": 752, + "sha256": "7fed7072c20dc3e66c80b2ac1f737b0e7e70a695e5db34e057f729c945e60ba0" + }, + { + "path": "kernels/80d22263b082805bc9d4499247f92b7a1a783a3e1cdd9c652d304492a1cfd425.wgsl", + "byteLength": 404, + "sha256": "80d22263b082805bc9d4499247f92b7a1a783a3e1cdd9c652d304492a1cfd425" + }, + { + "path": "kernels/80ea575e71114223b547d927628fbb71c676d57d144193e995e6eb39c5b4c161.wgsl", + "byteLength": 1021, + "sha256": "80ea575e71114223b547d927628fbb71c676d57d144193e995e6eb39c5b4c161" + }, + { + "path": "kernels/816861e23c92e156c1ac01f21e4f6dd1cbfc14978b1be8a5994fb45b0f845cb8.wgsl", + "byteLength": 328, + "sha256": "816861e23c92e156c1ac01f21e4f6dd1cbfc14978b1be8a5994fb45b0f845cb8" + }, + { + "path": "kernels/8256ea6cdc3500306470c0bb2dcdb44ebdd454dafa218ad6a94dd953b9bbe125.wgsl", + "byteLength": 406, + "sha256": "8256ea6cdc3500306470c0bb2dcdb44ebdd454dafa218ad6a94dd953b9bbe125" + }, + { + "path": "kernels/827ffce28b59c5790739e7f9624b4ef6ebf876973f7ba942702dd8872f47fcd5.wgsl", + "byteLength": 328, + "sha256": "827ffce28b59c5790739e7f9624b4ef6ebf876973f7ba942702dd8872f47fcd5" + }, + { + "path": "kernels/82d700d77c249d637b7592f92c488497797a3961ea85b74ad2e50cccef3ef78f.wgsl", + "byteLength": 556, + "sha256": "82d700d77c249d637b7592f92c488497797a3961ea85b74ad2e50cccef3ef78f" + }, + { + "path": "kernels/84101fc314579b90d71da4cca3a2c2cdc2074d96d2861c4b8e38c22cc1903138.wgsl", + "byteLength": 394, + "sha256": "84101fc314579b90d71da4cca3a2c2cdc2074d96d2861c4b8e38c22cc1903138" + }, + { + "path": "kernels/84f24861effe9e2f3b05f98fe6d4e16f4f8204be40a7eeece0668e57060ecc7b.wgsl", + "byteLength": 401, + "sha256": "84f24861effe9e2f3b05f98fe6d4e16f4f8204be40a7eeece0668e57060ecc7b" + }, + { + "path": "kernels/84ff996d084cbc6b8dca21a8f3267cdb1f4c6b9664c24c3002252f05247c4212.wgsl", + "byteLength": 381, + "sha256": "84ff996d084cbc6b8dca21a8f3267cdb1f4c6b9664c24c3002252f05247c4212" + }, + { + "path": "kernels/85964f8bbe5a2e4d430930e1050ea76871f0f2453c3cd4ba020002c0562ca680.wgsl", + "byteLength": 558, + "sha256": "85964f8bbe5a2e4d430930e1050ea76871f0f2453c3cd4ba020002c0562ca680" + }, + { + "path": "kernels/870f571c2825eaa5aa7203a42631ed44e533c50f236974cb4591aa3c73b231a6.wgsl", + "byteLength": 415, + "sha256": "870f571c2825eaa5aa7203a42631ed44e533c50f236974cb4591aa3c73b231a6" + }, + { + "path": "kernels/896006749045a93d89dca7ed7326aa05c5ff29423400569d34ab2256dea6b0e4.wgsl", + "byteLength": 383, + "sha256": "896006749045a93d89dca7ed7326aa05c5ff29423400569d34ab2256dea6b0e4" + }, + { + "path": "kernels/898086c99e03b2cdb78e3e5658c3fff202f1c87d09d8da08659bd1ba85e01b09.wgsl", + "byteLength": 554, + "sha256": "898086c99e03b2cdb78e3e5658c3fff202f1c87d09d8da08659bd1ba85e01b09" + }, + { + "path": "kernels/89f98b79c18e7f4bbbd79cbd8d3e80108d0e1e4407c161d9637b6a88d3fbe06b.wgsl", + "byteLength": 409, + "sha256": "89f98b79c18e7f4bbbd79cbd8d3e80108d0e1e4407c161d9637b6a88d3fbe06b" + }, + { + "path": "kernels/8a08c40f24ef1bf07d71cb1d8ad292e3841c7daf85310f494896d3c4110c9502.wgsl", + "byteLength": 2883, + "sha256": "8a08c40f24ef1bf07d71cb1d8ad292e3841c7daf85310f494896d3c4110c9502" + }, + { + "path": "kernels/8a46c4e24d014fd6af88a3f370c4b6161be7c63b6c30211bd62af3dbd87293a8.wgsl", + "byteLength": 398, + "sha256": "8a46c4e24d014fd6af88a3f370c4b6161be7c63b6c30211bd62af3dbd87293a8" + }, + { + "path": "kernels/8af32f59dfb78c79ac2187ae707f0897b89fb8bb0e3d832e2edac308eefa603c.wgsl", + "byteLength": 408, + "sha256": "8af32f59dfb78c79ac2187ae707f0897b89fb8bb0e3d832e2edac308eefa603c" + }, + { + "path": "kernels/8affc7c0e85127430e406be35ebb5c5354a8dd26ecc4ae9ab6ace80ce6775f46.wgsl", + "byteLength": 565, + "sha256": "8affc7c0e85127430e406be35ebb5c5354a8dd26ecc4ae9ab6ace80ce6775f46" + }, + { + "path": "kernels/8b5e4c9b7889f2bccebf60987b6f5b8c23542c3475cd8d78656dc7ecffd81f8d.wgsl", + "byteLength": 405, + "sha256": "8b5e4c9b7889f2bccebf60987b6f5b8c23542c3475cd8d78656dc7ecffd81f8d" + }, + { + "path": "kernels/8b97708bbec8da40b4b2929ace03c7f08893a30f49652efa7487c745e71be9bb.wgsl", + "byteLength": 2398, + "sha256": "8b97708bbec8da40b4b2929ace03c7f08893a30f49652efa7487c745e71be9bb" + }, + { + "path": "kernels/8c2cc45aff0682e734174141c9fcc5edcdac7925ad6128b062befdba21f8695f.wgsl", + "byteLength": 387, + "sha256": "8c2cc45aff0682e734174141c9fcc5edcdac7925ad6128b062befdba21f8695f" + }, + { + "path": "kernels/8c3a77238461b0ae13318bad504e1e0779f3f47d1782fe0ca78f20112c031146.wgsl", + "byteLength": 399, + "sha256": "8c3a77238461b0ae13318bad504e1e0779f3f47d1782fe0ca78f20112c031146" + }, + { + "path": "kernels/8c92c6f1421c6378452dd1e15eae6d7da76404ac7e9a0b756bace66e6f207d21.wgsl", + "byteLength": 384, + "sha256": "8c92c6f1421c6378452dd1e15eae6d7da76404ac7e9a0b756bace66e6f207d21" + }, + { + "path": "kernels/8cce7bfa491959f6a7b62ae9cb861d12e2f4ff05227918a4d06bd80669f0a539.wgsl", + "byteLength": 372, + "sha256": "8cce7bfa491959f6a7b62ae9cb861d12e2f4ff05227918a4d06bd80669f0a539" + }, + { + "path": "kernels/8d0a37e497bcb37e2d5a1746fba59fd69680ed8eeada4835c5d0eeef840d57ab.wgsl", + "byteLength": 303, + "sha256": "8d0a37e497bcb37e2d5a1746fba59fd69680ed8eeada4835c5d0eeef840d57ab" + }, + { + "path": "kernels/8d2d4993e8058293c7308e58f517619651bbfcfc855acd7e3f5a8cfdfd971dab.wgsl", + "byteLength": 324, + "sha256": "8d2d4993e8058293c7308e58f517619651bbfcfc855acd7e3f5a8cfdfd971dab" + }, + { + "path": "kernels/8d62df48089497dd19fea48680730210decda42b63f69ecdf9688fc4a43efc58.wgsl", + "byteLength": 414, + "sha256": "8d62df48089497dd19fea48680730210decda42b63f69ecdf9688fc4a43efc58" + }, + { + "path": "kernels/8d924efe3620ed999f0cf4e6adc1df91b7def10b99b5ecb839ceaa662b43c82c.wgsl", + "byteLength": 464, + "sha256": "8d924efe3620ed999f0cf4e6adc1df91b7def10b99b5ecb839ceaa662b43c82c" + }, + { + "path": "kernels/8e3d3b82b0e50fa7a86f44f30fe70b1ee226e613ce06b69776f5624efb029235.wgsl", + "byteLength": 853, + "sha256": "8e3d3b82b0e50fa7a86f44f30fe70b1ee226e613ce06b69776f5624efb029235" + }, + { + "path": "kernels/8ee286e06c1271162bea74e14b4bd5b1d66890648217c79435e6b3f1d4181ec8.wgsl", + "byteLength": 403, + "sha256": "8ee286e06c1271162bea74e14b4bd5b1d66890648217c79435e6b3f1d4181ec8" + }, + { + "path": "kernels/90191f3796334008bd2d4eae2d00d4542647c3ad2478df5738b7315b1d548a04.wgsl", + "byteLength": 947, + "sha256": "90191f3796334008bd2d4eae2d00d4542647c3ad2478df5738b7315b1d548a04" + }, + { + "path": "kernels/9044193f1f4724f15ef5fb41040b7fbac5f62fcaea80594737214bf9cd6be41a.wgsl", + "byteLength": 419, + "sha256": "9044193f1f4724f15ef5fb41040b7fbac5f62fcaea80594737214bf9cd6be41a" + }, + { + "path": "kernels/909a6bbb6929b00e7c22b41f4dbef0c2b6726db52a07bf7a860936ff3f55f8c3.wgsl", + "byteLength": 2886, + "sha256": "909a6bbb6929b00e7c22b41f4dbef0c2b6726db52a07bf7a860936ff3f55f8c3" + }, + { + "path": "kernels/9144d827dae4c52b80abb829178a9ed901ce5dbc6702ad94b0b355e8eaad5ea5.wgsl", + "byteLength": 548, + "sha256": "9144d827dae4c52b80abb829178a9ed901ce5dbc6702ad94b0b355e8eaad5ea5" + }, + { + "path": "kernels/928e4759658bc5813ad5b82855d1a8c13e144cdfe50229dfc10b0624d7490858.wgsl", + "byteLength": 563, + "sha256": "928e4759658bc5813ad5b82855d1a8c13e144cdfe50229dfc10b0624d7490858" + }, + { + "path": "kernels/92fdb01bf322561902c496e2cbf707c75ca898d939319f872aae31dce2546b91.wgsl", + "byteLength": 2887, + "sha256": "92fdb01bf322561902c496e2cbf707c75ca898d939319f872aae31dce2546b91" + }, + { + "path": "kernels/939eb5e3ec5862e0f1d8caec99b814ed6b2bb3a41a132f7149a503e8df582e3c.wgsl", + "byteLength": 606, + "sha256": "939eb5e3ec5862e0f1d8caec99b814ed6b2bb3a41a132f7149a503e8df582e3c" + }, + { + "path": "kernels/95a7af5c5db9c9349d53a84534fdbd7783cd428093b21524639ab6dc62f54867.wgsl", + "byteLength": 2400, + "sha256": "95a7af5c5db9c9349d53a84534fdbd7783cd428093b21524639ab6dc62f54867" + }, + { + "path": "kernels/95cba13b595301afbefe20da4a65b93d4d5c5f4a29b9e1d5348d32cb193c6b4b.wgsl", + "byteLength": 372, + "sha256": "95cba13b595301afbefe20da4a65b93d4d5c5f4a29b9e1d5348d32cb193c6b4b" + }, + { + "path": "kernels/9625ca0b071511e5261877fd21627ca354ea0219da86a10887e8054afa15dcfd.wgsl", + "byteLength": 367, + "sha256": "9625ca0b071511e5261877fd21627ca354ea0219da86a10887e8054afa15dcfd" + }, + { + "path": "kernels/9701df2bcd72ed6a0b72dca81006d9fcc2336e0250fbd66cf37d4fd80667358f.wgsl", + "byteLength": 421, + "sha256": "9701df2bcd72ed6a0b72dca81006d9fcc2336e0250fbd66cf37d4fd80667358f" + }, + { + "path": "kernels/970aa8fd65c7e96611a4b6f30cb0b71e24bdaefff0ca117243cab1a5a7e645a9.wgsl", + "byteLength": 286, + "sha256": "970aa8fd65c7e96611a4b6f30cb0b71e24bdaefff0ca117243cab1a5a7e645a9" + }, + { + "path": "kernels/97aa9b5cb2a41dbf920a6c15c61964d33dd0d87990a00183ac4b87c614bc376d.wgsl", + "byteLength": 561, + "sha256": "97aa9b5cb2a41dbf920a6c15c61964d33dd0d87990a00183ac4b87c614bc376d" + }, + { + "path": "kernels/985bb9ad33654b9adbd4a256d626e346556a10dad514692800da8ebd7910f0f0.wgsl", + "byteLength": 362, + "sha256": "985bb9ad33654b9adbd4a256d626e346556a10dad514692800da8ebd7910f0f0" + }, + { + "path": "kernels/987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af.wgsl", + "byteLength": 380, + "sha256": "987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af" + }, + { + "path": "kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.wgsl", + "byteLength": 383, + "sha256": "99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b" + }, + { + "path": "kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl", + "byteLength": 301, + "sha256": "9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42" + }, + { + "path": "kernels/9c8130a4d2f0fee478cb03a285f985c7783f34603a018675e6b22e28bbae0abb.wgsl", + "byteLength": 2397, + "sha256": "9c8130a4d2f0fee478cb03a285f985c7783f34603a018675e6b22e28bbae0abb" + }, + { + "path": "kernels/9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074.wgsl", + "byteLength": 556, + "sha256": "9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074" + }, + { + "path": "kernels/9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0.wgsl", + "byteLength": 383, + "sha256": "9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0" + }, + { + "path": "kernels/9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773.wgsl", + "byteLength": 413, + "sha256": "9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773" + }, + { + "path": "kernels/9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43.wgsl", + "byteLength": 328, + "sha256": "9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43" + }, + { + "path": "kernels/9e92e586bb26ecd87c2080b364abbe2d6761b1f165d4d8bbd0170a88b01626e1.wgsl", + "byteLength": 2877, + "sha256": "9e92e586bb26ecd87c2080b364abbe2d6761b1f165d4d8bbd0170a88b01626e1" + }, + { + "path": "kernels/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl", + "byteLength": 947, + "sha256": "9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791" + }, + { + "path": "kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.wgsl", + "byteLength": 556, + "sha256": "9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec" + }, + { + "path": "kernels/9f5d05eb12c629ebad8edf513c9195f2df8f97198e781b05804110b7feda6400.wgsl", + "byteLength": 2879, + "sha256": "9f5d05eb12c629ebad8edf513c9195f2df8f97198e781b05804110b7feda6400" + }, + { + "path": "kernels/a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6.wgsl", + "byteLength": 387, + "sha256": "a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6" + }, + { + "path": "kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl", + "byteLength": 303, + "sha256": "a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1" + }, + { + "path": "kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl", + "byteLength": 373, + "sha256": "a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb" + }, + { + "path": "kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl", + "byteLength": 373, + "sha256": "a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a" + }, + { + "path": "kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl", + "byteLength": 390, + "sha256": "a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7" + }, + { + "path": "kernels/a278009bfad4d5fb3e44fe3dd3866517a4143ee6da790d52aa62a69eeda0885d.wgsl", + "byteLength": 4155, + "sha256": "a278009bfad4d5fb3e44fe3dd3866517a4143ee6da790d52aa62a69eeda0885d" + }, + { + "path": "kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl", + "byteLength": 286, + "sha256": "a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8" + }, + { + "path": "kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl", + "byteLength": 326, + "sha256": "a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007" + }, + { + "path": "kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl", + "byteLength": 285, + "sha256": "a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef" + }, + { + "path": "kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl", + "byteLength": 326, + "sha256": "a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92" + }, + { + "path": "kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl", + "byteLength": 505, + "sha256": "a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157" + }, + { + "path": "kernels/a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b.wgsl", + "byteLength": 2083, + "sha256": "a7164f69fd1d60db5aebc0d2b43c68e7106872c7a4d3c1e81134736e6c270d5b" + }, + { + "path": "kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl", + "byteLength": 307, + "sha256": "a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b" + }, + { + "path": "kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl", + "byteLength": 373, + "sha256": "a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f" + }, + { + "path": "kernels/a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189.wgsl", + "byteLength": 2394, + "sha256": "a7c8fd0a86506f31fb9b62b5df69df36332f1f08da9790ce077870722d85b189" + }, + { + "path": "kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl", + "byteLength": 575, + "sha256": "a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce" + }, + { + "path": "kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl", + "byteLength": 308, + "sha256": "a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8" + }, + { + "path": "kernels/a99778950c185f009de4f25b85da7a7fbaf72a4b6c6b50f7c40c5a6622edac0b.wgsl", + "byteLength": 799, + "sha256": "a99778950c185f009de4f25b85da7a7fbaf72a4b6c6b50f7c40c5a6622edac0b" + }, + { + "path": "kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl", + "byteLength": 386, + "sha256": "a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986" + }, + { + "path": "kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl", + "byteLength": 369, + "sha256": "a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b" + }, + { + "path": "kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl", + "byteLength": 368, + "sha256": "a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352" + }, + { + "path": "kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl", + "byteLength": 367, + "sha256": "aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382" + }, + { + "path": "kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl", + "byteLength": 326, + "sha256": "abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b" + }, + { + "path": "kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl", + "byteLength": 391, + "sha256": "ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c" + }, + { + "path": "kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl", + "byteLength": 402, + "sha256": "ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57" + }, + { + "path": "kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl", + "byteLength": 307, + "sha256": "adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c" + }, + { + "path": "kernels/adfb7a2d806c49340ad05dc718ec8e48351f8da53f76d1375fb33bbba6a4a2b6.wgsl", + "byteLength": 1656, + "sha256": "adfb7a2d806c49340ad05dc718ec8e48351f8da53f76d1375fb33bbba6a4a2b6" + }, + { + "path": "kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl", + "byteLength": 551, + "sha256": "ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c" + }, + { + "path": "kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl", + "byteLength": 415, + "sha256": "b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26" + }, + { + "path": "kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl", + "byteLength": 390, + "sha256": "b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33" + }, + { + "path": "kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl", + "byteLength": 387, + "sha256": "b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e" + }, + { + "path": "kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl", + "byteLength": 400, + "sha256": "b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2" + }, + { + "path": "kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl", + "byteLength": 380, + "sha256": "b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28" + }, + { + "path": "kernels/b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07.wgsl", + "byteLength": 2083, + "sha256": "b33421e28f67810f175bec3a1705a3e9ad96d2010c3329e93476f8964ff3de07" + }, + { + "path": "kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl", + "byteLength": 556, + "sha256": "b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea" + }, + { + "path": "kernels/b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9.wgsl", + "byteLength": 1017, + "sha256": "b44895294a35fd06948d21f6d4c53f7daa28386437f8e19488befb3b41e193b9" + }, + { + "path": "kernels/b4981e05a9fd9f813ac9438423df9c2971fac80f408cebd8578b5da4246c6482.wgsl", + "byteLength": 1651, + "sha256": "b4981e05a9fd9f813ac9438423df9c2971fac80f408cebd8578b5da4246c6482" + }, + { + "path": "kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl", + "byteLength": 390, + "sha256": "b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab" + }, + { + "path": "kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl", + "byteLength": 405, + "sha256": "b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857" + }, + { + "path": "kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl", + "byteLength": 326, + "sha256": "b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49" + }, + { + "path": "kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl", + "byteLength": 421, + "sha256": "bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6" + }, + { + "path": "kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl", + "byteLength": 373, + "sha256": "bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00" + }, + { + "path": "kernels/bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566.wgsl", + "byteLength": 851, + "sha256": "bc3debb5b2d1630349d983f26929555c7a91b4c38435f2c464c6c66a52b9c566" + }, + { + "path": "kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl", + "byteLength": 401, + "sha256": "bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469" + }, + { + "path": "kernels/bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39.wgsl", + "byteLength": 2404, + "sha256": "bd6381fa811422353933b25724497c0c188434d81e3d5e9f1a33c35bbebe6d39" + }, + { + "path": "kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl", + "byteLength": 416, + "sha256": "bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658" + }, + { + "path": "kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl", + "byteLength": 383, + "sha256": "bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759" + }, + { + "path": "kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl", + "byteLength": 556, + "sha256": "bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60" + }, + { + "path": "kernels/bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39.wgsl", + "byteLength": 1025, + "sha256": "bef5f6c8b48be4a0ecba85dcd4db622fd9c6bab0faa36f780a7ded694bbfde39" + }, + { + "path": "kernels/bf3904bed5701c349b7a05b3595c1ca9779c0f97ccb4f55288f659edcba1d4a1.wgsl", + "byteLength": 799, + "sha256": "bf3904bed5701c349b7a05b3595c1ca9779c0f97ccb4f55288f659edcba1d4a1" + }, + { + "path": "kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl", + "byteLength": 383, + "sha256": "c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258" + }, + { + "path": "kernels/c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129.wgsl", + "byteLength": 2400, + "sha256": "c06015b611037644dcc962d0518f6361870a8cde1282844ae4b57686ce0c1129" + }, + { + "path": "kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl", + "byteLength": 307, + "sha256": "c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0" + }, + { + "path": "kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl", + "byteLength": 459, + "sha256": "c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33" + }, + { + "path": "kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl", + "byteLength": 381, + "sha256": "c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a" + }, + { + "path": "kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl", + "byteLength": 387, + "sha256": "c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3" + }, + { + "path": "kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl", + "byteLength": 315, + "sha256": "c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276" + }, + { + "path": "kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl", + "byteLength": 288, + "sha256": "c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb" + }, + { + "path": "kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl", + "byteLength": 385, + "sha256": "c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e" + }, + { + "path": "kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl", + "byteLength": 414, + "sha256": "c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae" + }, + { + "path": "kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl", + "byteLength": 851, + "sha256": "c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4" + }, + { + "path": "kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl", + "byteLength": 385, + "sha256": "c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933" + }, + { + "path": "kernels/c4ca94e74e0371d07134a1bb1a87124635c2e269c334ddaed7428b5e6ac56dea.wgsl", + "byteLength": 2877, + "sha256": "c4ca94e74e0371d07134a1bb1a87124635c2e269c334ddaed7428b5e6ac56dea" + }, + { + "path": "kernels/c6fea77f6311ccf6eef6061338d5de46f7bd66317a5a8448d52c3cfd72f6c541.wgsl", + "byteLength": 1025, + "sha256": "c6fea77f6311ccf6eef6061338d5de46f7bd66317a5a8448d52c3cfd72f6c541" + }, + { + "path": "kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl", + "byteLength": 378, + "sha256": "c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21" + }, + { + "path": "kernels/c88b874fddadcd945a36268210eaf56eeebe0fe8eb15a05e5eaead67f062d23d.wgsl", + "byteLength": 2401, + "sha256": "c88b874fddadcd945a36268210eaf56eeebe0fe8eb15a05e5eaead67f062d23d" + }, + { + "path": "kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl", + "byteLength": 307, + "sha256": "c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525" + }, + { + "path": "kernels/c9dce107dfa3160c552e0381c1859565c3e7e014e76b9a5c9845a7aa9979866a.wgsl", + "byteLength": 377, + "sha256": "c9dce107dfa3160c552e0381c1859565c3e7e014e76b9a5c9845a7aa9979866a" + }, + { + "path": "kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl", + "byteLength": 311, + "sha256": "ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197" + }, + { + "path": "kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl", + "byteLength": 573, + "sha256": "cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738" + }, + { + "path": "kernels/ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688.wgsl", + "byteLength": 603, + "sha256": "ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688" + }, + { + "path": "kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl", + "byteLength": 419, + "sha256": "cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37" + }, + { + "path": "kernels/cdc19273b8bfec26295a9cdd705792e257689c14c37018465721fc274ceb0159.wgsl", + "byteLength": 2883, + "sha256": "cdc19273b8bfec26295a9cdd705792e257689c14c37018465721fc274ceb0159" + }, + { + "path": "kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl", + "byteLength": 408, + "sha256": "d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9" + }, + { + "path": "kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl", + "byteLength": 390, + "sha256": "d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957" + }, + { + "path": "kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl", + "byteLength": 375, + "sha256": "d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96" + }, + { + "path": "kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl", + "byteLength": 288, + "sha256": "d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8" + }, + { + "path": "kernels/d6a2b88f3aca2d1841d2dfa2766cc4583b87071dc8b9c1290e860b28de7790be.wgsl", + "byteLength": 2400, + "sha256": "d6a2b88f3aca2d1841d2dfa2766cc4583b87071dc8b9c1290e860b28de7790be" + }, + { + "path": "kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl", + "byteLength": 378, + "sha256": "d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e" + }, + { + "path": "kernels/d89f0e701f3fd0dfdd794055dea8b45e81d4a197648b46c1764ae568734a994a.wgsl", + "byteLength": 2404, + "sha256": "d89f0e701f3fd0dfdd794055dea8b45e81d4a197648b46c1764ae568734a994a" + }, + { + "path": "kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl", + "byteLength": 309, + "sha256": "d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3" + }, + { + "path": "kernels/d9ab25f0ef4248028d7dab1e782d0756dfc664cc90794d13644bd91106541608.wgsl", + "byteLength": 4159, + "sha256": "d9ab25f0ef4248028d7dab1e782d0756dfc664cc90794d13644bd91106541608" + }, + { + "path": "kernels/da37c092a03f4f2394848d5e7a53718ea5f9357ad43b277d0945fedbd21efefd.wgsl", + "byteLength": 2404, + "sha256": "da37c092a03f4f2394848d5e7a53718ea5f9357ad43b277d0945fedbd21efefd" + }, + { + "path": "kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl", + "byteLength": 288, + "sha256": "da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de" + }, + { + "path": "kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl", + "byteLength": 286, + "sha256": "dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291" + }, + { + "path": "kernels/dca2d13eceb7f90047efadbc587b69a46d46f8254f2b8cdd94d09a5fe1b042e5.wgsl", + "byteLength": 790, + "sha256": "dca2d13eceb7f90047efadbc587b69a46d46f8254f2b8cdd94d09a5fe1b042e5" + }, + { + "path": "kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl", + "byteLength": 582, + "sha256": "dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603" + }, + { + "path": "kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl", + "byteLength": 365, + "sha256": "de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e" + }, + { + "path": "kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl", + "byteLength": 315, + "sha256": "de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9" + }, + { + "path": "kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl", + "byteLength": 373, + "sha256": "deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f" + }, + { + "path": "kernels/debf9022e52fbf078668ff0a4b2548d3ff1dc14ad3f77dc985b02ea121104208.wgsl", + "byteLength": 792, + "sha256": "debf9022e52fbf078668ff0a4b2548d3ff1dc14ad3f77dc985b02ea121104208" + }, + { + "path": "kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl", + "byteLength": 367, + "sha256": "deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390" + }, + { + "path": "kernels/dfc212b0c2108c9670cf748f1267f8da7586d36ff80208cbbcbe2f7023d2faca.wgsl", + "byteLength": 1646, + "sha256": "dfc212b0c2108c9670cf748f1267f8da7586d36ff80208cbbcbe2f7023d2faca" + }, + { + "path": "kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl", + "byteLength": 377, + "sha256": "e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169" + }, + { + "path": "kernels/e12d48dbab3f0507f5ea8b34dc59c3769b6b7baedd4e9a77f70e0bdf15261ffa.wgsl", + "byteLength": 2879, + "sha256": "e12d48dbab3f0507f5ea8b34dc59c3769b6b7baedd4e9a77f70e0bdf15261ffa" + }, + { + "path": "kernels/e14fe3c24ffb28ca7b4a2da41e18b6d53164bda6a4a61ac36f0c14c3787d422c.wgsl", + "byteLength": 801, + "sha256": "e14fe3c24ffb28ca7b4a2da41e18b6d53164bda6a4a61ac36f0c14c3787d422c" + }, + { + "path": "kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl", + "byteLength": 419, + "sha256": "e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7" + }, + { + "path": "kernels/e1a249dce7a17d3c8504f99f72c8bdd539676dfd8fc7efe939ddb9348d423084.wgsl", + "byteLength": 1025, + "sha256": "e1a249dce7a17d3c8504f99f72c8bdd539676dfd8fc7efe939ddb9348d423084" + }, + { + "path": "kernels/e1e6ea1e6e881f1dba4becc0b879a788d63dc69731a323566db88e6029d5bbb5.wgsl", + "byteLength": 2404, + "sha256": "e1e6ea1e6e881f1dba4becc0b879a788d63dc69731a323566db88e6029d5bbb5" + }, + { + "path": "kernels/e206c8544ab8da09affbd41cbcc21ae7a03e8f25607e3e7b473db7b65b904023.wgsl", + "byteLength": 799, + "sha256": "e206c8544ab8da09affbd41cbcc21ae7a03e8f25607e3e7b473db7b65b904023" + }, + { + "path": "kernels/e26328df0e65bd3b1aa31d12ed34e71b1b4b309d708bd58badcabad803bca34a.wgsl", + "byteLength": 415, + "sha256": "e26328df0e65bd3b1aa31d12ed34e71b1b4b309d708bd58badcabad803bca34a" + }, + { + "path": "kernels/e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00.wgsl", + "byteLength": 610, + "sha256": "e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00" + }, + { + "path": "kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl", + "byteLength": 408, + "sha256": "e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4" + }, + { + "path": "kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl", + "byteLength": 411, + "sha256": "e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d" + }, + { + "path": "kernels/e5ef3162a83551a46be3dfc18436f093a96819f90fcbfb74c725fad0cc569311.wgsl", + "byteLength": 1656, + "sha256": "e5ef3162a83551a46be3dfc18436f093a96819f90fcbfb74c725fad0cc569311" + }, + { + "path": "kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl", + "byteLength": 385, + "sha256": "e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66" + }, + { + "path": "kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl", + "byteLength": 383, + "sha256": "e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130" + }, + { + "path": "kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl", + "byteLength": 459, + "sha256": "e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20" + }, + { + "path": "kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl", + "byteLength": 299, + "sha256": "e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d" + }, + { + "path": "kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl", + "byteLength": 286, + "sha256": "e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2" + }, + { + "path": "kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl", + "byteLength": 413, + "sha256": "e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d" + }, + { + "path": "kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl", + "byteLength": 949, + "sha256": "eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553" + }, + { + "path": "kernels/ebdeb8028a8c090b91a5a326b788e4eee2347105662f1fd698ad4579d3a7c7ea.wgsl", + "byteLength": 2879, + "sha256": "ebdeb8028a8c090b91a5a326b788e4eee2347105662f1fd698ad4579d3a7c7ea" + }, + { + "path": "kernels/ec40e0e7453f12aae9b1c49863914d6673508049ce3302f9a5c377e698ce612c.wgsl", + "byteLength": 788, + "sha256": "ec40e0e7453f12aae9b1c49863914d6673508049ce3302f9a5c377e698ce612c" + }, + { + "path": "kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl", + "byteLength": 307, + "sha256": "edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1" + }, + { + "path": "kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl", + "byteLength": 410, + "sha256": "eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38" + }, + { + "path": "kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl", + "byteLength": 849, + "sha256": "ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8" + }, + { + "path": "kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl", + "byteLength": 374, + "sha256": "efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b" + }, + { + "path": "kernels/efed95690af6454644068b55831d23936cd1add6dce94521596e8f31c250b901.wgsl", + "byteLength": 2882, + "sha256": "efed95690af6454644068b55831d23936cd1add6dce94521596e8f31c250b901" + }, + { + "path": "kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl", + "byteLength": 322, + "sha256": "f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76" + }, + { + "path": "kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl", + "byteLength": 561, + "sha256": "f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0" + }, + { + "path": "kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl", + "byteLength": 408, + "sha256": "f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537" + }, + { + "path": "kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl", + "byteLength": 394, + "sha256": "f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7" + }, + { + "path": "kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl", + "byteLength": 308, + "sha256": "f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658" + }, + { + "path": "kernels/f5b2ba528c9d245492ad94b337e8cafcc65deeb4a5e7975a55ca79cbfe0a29d4.wgsl", + "byteLength": 4155, + "sha256": "f5b2ba528c9d245492ad94b337e8cafcc65deeb4a5e7975a55ca79cbfe0a29d4" + }, + { + "path": "kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl", + "byteLength": 371, + "sha256": "f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66" + }, + { + "path": "kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl", + "byteLength": 312, + "sha256": "f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690" + }, + { + "path": "kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl", + "byteLength": 378, + "sha256": "f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050" + }, + { + "path": "kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl", + "byteLength": 381, + "sha256": "f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039" + }, + { + "path": "kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl", + "byteLength": 390, + "sha256": "f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964" + }, + { + "path": "kernels/f90d949c070eec5a0b623db13ea76c181e22fdf7154c1a892100fb68c130ff16.wgsl", + "byteLength": 803, + "sha256": "f90d949c070eec5a0b623db13ea76c181e22fdf7154c1a892100fb68c130ff16" + }, + { + "path": "kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl", + "byteLength": 408, + "sha256": "f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d" + }, + { + "path": "kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl", + "byteLength": 845, + "sha256": "f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19" + }, + { + "path": "kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl", + "byteLength": 396, + "sha256": "fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6" + }, + { + "path": "kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl", + "byteLength": 371, + "sha256": "fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953" + }, + { + "path": "kernels/fb074a5f1f543fbb6d69f4f5130b3b7444731cb8fd9e8d2c70ccbf7075039a70.wgsl", + "byteLength": 2880, + "sha256": "fb074a5f1f543fbb6d69f4f5130b3b7444731cb8fd9e8d2c70ccbf7075039a70" + }, + { + "path": "kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl", + "byteLength": 374, + "sha256": "fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb" + }, + { + "path": "kernels/fc1528dcecd7c2d55cc9c6c9311eaab089186426807f1ff67ac1e26d382e408a.wgsl", + "byteLength": 2886, + "sha256": "fc1528dcecd7c2d55cc9c6c9311eaab089186426807f1ff67ac1e26d382e408a" + }, + { + "path": "kernels/ff8c888cc0b5126b58de66db908ff04f71ad7b1c622703b63bbfc31e74b260b4.wgsl", + "byteLength": 2886, + "sha256": "ff8c888cc0b5126b58de66db908ff04f71ad7b1c622703b63bbfc31e74b260b4" + } + ], + "metadata": { + "repository": "Qwen/Qwen3.5-2B", + "revision": "15852e8c16360a2fea060d615a32b45270f8a8fc", + "architecture": "qwen3_5", + "modalities": [ + "text" + ], + "license": "apache-2.0", + "sourceWeights": [ + { + "path": "model.safetensors-00001-of-00001.safetensors", + "sha256": "aa33250c4fc64891ddfaba3a314fd9542ea371843c387178b425fbcc5ed680b1" + } + ], + "profile": "fp32-int8-g32-mixed-5379f71f-int8-vocab", + "prefill": "queued-incremental", + "checkpointCertified": false, + "fusion": true, + "quantizationSelection": { + "include": [], + "exclude": [ + "p_model_model_language_model_layers_10_mlp_up_proj_weight", + "p_model_model_language_model_layers_15_self_attn_o_proj_weight", + "p_model_model_language_model_layers_[6-9]_*" + ] + }, + "vocabularyQuantization": { + "tensors": [ + "p_model_model_language_model_embed_tokens_weight" + ], + "scheme": "symmetric-int8", + "groupSize": 32 + } + }, + "validation": { + "checkpointCertified": false, + "hardware": [] + }, + "generation": { + "contextLength": 4096, + "inputIds": "input_ids", + "positionIds": "position_ids", + "attentionMask": "attention_mask", + "logits": "linear_186", + "eosTokenIds": [ + 248044 + ], + "tokenizer": "tokenizer/tokenizer.json", + "tokenizerConfig": "tokenizer/tokenizer_config.json", + "chatTemplate": "tokenizer/chat_template.jinja", + "prefillEntrypoints": { + "4": "prefill-4", + "16": "prefill-16", + "64": "prefill-64" + }, + "prefillDefault": true + } +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/LICENSE b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f938136e3adacfd92be087f6e113b5d6d97f678f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2026 Alibaba Cloud + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/config.json b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/config.json new file mode 100644 index 0000000000000000000000000000000000000000..d30a15be1bbfd610f58ad80f1fbeb6778f58a80f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/config.json @@ -0,0 +1,96 @@ +{ + "architectures": [ + "Qwen3_5ForConditionalGeneration" + ], + "image_token_id": 248056, + "model_type": "qwen3_5", + "text_config": { + "attention_bias": false, + "attention_dropout": 0.0, + "attn_output_gate": true, + "dtype": "bfloat16", + "eos_token_id": 248044, + "full_attention_interval": 4, + "head_dim": 256, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 6144, + "layer_types": [ + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention", + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention", + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention", + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention", + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention", + "linear_attention", + "linear_attention", + "linear_attention", + "full_attention" + ], + "linear_conv_kernel_dim": 4, + "linear_key_head_dim": 128, + "linear_num_key_heads": 16, + "linear_num_value_heads": 16, + "linear_value_head_dim": 128, + "max_position_embeddings": 262144, + "mlp_only_layers": [], + "model_type": "qwen3_5_text", + "mtp_num_hidden_layers": 1, + "mtp_use_dedicated_embeddings": false, + "num_attention_heads": 8, + "num_hidden_layers": 24, + "num_key_value_heads": 2, + "rms_norm_eps": 1e-06, + "tie_word_embeddings": true, + "use_cache": true, + "vocab_size": 248320, + "mamba_ssm_dtype": "float32", + "rope_parameters": { + "mrope_interleaved": true, + "mrope_section": [ + 11, + 11, + 10 + ], + "rope_type": "default", + "rope_theta": 10000000, + "partial_rotary_factor": 0.25 + } + }, + "tie_word_embeddings": true, + "transformers_version": "4.57.0.dev0", + "video_token_id": 248057, + "vision_config": { + "deepstack_visual_indexes": [], + "depth": 24, + "hidden_act": "gelu_pytorch_tanh", + "hidden_size": 1024, + "in_channels": 3, + "initializer_range": 0.02, + "intermediate_size": 4096, + "model_type": "qwen3_5", + "num_heads": 16, + "num_position_embeddings": 2304, + "out_hidden_size": 2048, + "patch_size": 16, + "spatial_merge_size": 2, + "temporal_patch_size": 2 + }, + "vision_end_token_id": 248054, + "vision_start_token_id": 248053 +} \ No newline at end of file diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/provenance.json b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/provenance.json new file mode 100644 index 0000000000000000000000000000000000000000..bd55bbf10d67cc58ce3615adcf96ca766aedd5a3 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/source/provenance.json @@ -0,0 +1,10 @@ +{ + "repository": "Qwen/Qwen3.5-2B", + "revision": "15852e8c16360a2fea060d615a32b45270f8a8fc", + "architecture": "qwen3_5", + "modalities": [ + "text", + "image" + ], + "license": "apache-2.0" +} diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/chat_template.jinja b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/chat_template.jinja new file mode 100644 index 0000000000000000000000000000000000000000..0ef09f214eaa6d9bca297988afc1454b5827b2c7 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/chat_template.jinja @@ -0,0 +1,154 @@ +{%- set image_count = namespace(value=0) %} +{%- set video_count = namespace(value=0) %} +{%- macro render_content(content, do_vision_count, is_system_content=false) %} + {%- if content is string %} + {{- content }} + {%- elif content is iterable and content is not mapping %} + {%- for item in content %} + {%- if 'image' in item or 'image_url' in item or item.type == 'image' %} + {%- if is_system_content %} + {{- raise_exception('System message cannot contain images.') }} + {%- endif %} + {%- if do_vision_count %} + {%- set image_count.value = image_count.value + 1 %} + {%- endif %} + {%- if add_vision_id %} + {{- 'Picture ' ~ image_count.value ~ ': ' }} + {%- endif %} + {{- '<|vision_start|><|image_pad|><|vision_end|>' }} + {%- elif 'video' in item or item.type == 'video' %} + {%- if is_system_content %} + {{- raise_exception('System message cannot contain videos.') }} + {%- endif %} + {%- if do_vision_count %} + {%- set video_count.value = video_count.value + 1 %} + {%- endif %} + {%- if add_vision_id %} + {{- 'Video ' ~ video_count.value ~ ': ' }} + {%- endif %} + {{- '<|vision_start|><|video_pad|><|vision_end|>' }} + {%- elif 'text' in item %} + {{- item.text }} + {%- else %} + {{- raise_exception('Unexpected item type in content.') }} + {%- endif %} + {%- endfor %} + {%- elif content is none or content is undefined %} + {{- '' }} + {%- else %} + {{- raise_exception('Unexpected content type.') }} + {%- endif %} +{%- endmacro %} +{%- if not messages %} + {{- raise_exception('No messages provided.') }} +{%- endif %} +{%- if tools and tools is iterable and tools is not mapping %} + {{- '<|im_start|>system\n' }} + {{- "# Tools\n\nYou have access to the following functions:\n\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n" }} + {{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n\n\n\nvalue_1\n\n\nThis is the value for the second parameter\nthat can span\nmultiple lines\n\n\n\n\n\nReminder:\n- Function calls MUST follow the specified format: an inner block must be nested within XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n' }} + {%- if messages[0].role == 'system' %} + {%- set content = render_content(messages[0].content, false, true)|trim %} + {%- if content %} + {{- '\n\n' + content }} + {%- endif %} + {%- endif %} + {{- '<|im_end|>\n' }} +{%- else %} + {%- if messages[0].role == 'system' %} + {%- set content = render_content(messages[0].content, false, true)|trim %} + {{- '<|im_start|>system\n' + content + '<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} +{%- for message in messages[::-1] %} + {%- set index = (messages|length - 1) - loop.index0 %} + {%- if ns.multi_step_tool and message.role == "user" %} + {%- set content = render_content(message.content, false)|trim %} + {%- if not(content.startswith('') and content.endswith('')) %} + {%- set ns.multi_step_tool = false %} + {%- set ns.last_query_index = index %} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if ns.multi_step_tool %} + {{- raise_exception('No user query found in messages.') }} +{%- endif %} +{%- for message in messages %} + {%- set content = render_content(message.content, true)|trim %} + {%- if message.role == "system" %} + {%- if not loop.first %} + {{- raise_exception('System message must be at the beginning.') }} + {%- endif %} + {%- elif message.role == "user" %} + {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {%- set reasoning_content = '' %} + {%- if message.reasoning_content is string %} + {%- set reasoning_content = message.reasoning_content %} + {%- else %} + {%- if '' in content %} + {%- set reasoning_content = content.split('')[0].rstrip('\n').split('')[-1].lstrip('\n') %} + {%- set content = content.split('')[-1].lstrip('\n') %} + {%- endif %} + {%- endif %} + {%- set reasoning_content = reasoning_content|trim %} + {%- if loop.index0 > ns.last_query_index %} + {{- '<|im_start|>' + message.role + '\n\n' + reasoning_content + '\n\n\n' + content }} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {%- if loop.first %} + {%- if content|trim %} + {{- '\n\n\n\n' }} + {%- else %} + {{- '\n\n' }} + {%- endif %} + {%- else %} + {{- '\n\n\n' }} + {%- endif %} + {%- if tool_call.arguments is defined %} + {%- for args_name, args_value in tool_call.arguments|items %} + {{- '\n' }} + {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %} + {{- args_value }} + {{- '\n\n' }} + {%- endfor %} + {%- endif %} + {{- '\n' }} + {%- endfor %} + {%- endif %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if loop.previtem and loop.previtem.role != "tool" %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- content }} + {{- '\n' }} + {%- if not loop.last and loop.nextitem.role != "tool" %} + {{- '<|im_end|>\n' }} + {%- elif loop.last %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- else %} + {{- raise_exception('Unexpected message role.') }} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} + {%- if enable_thinking is defined and enable_thinking is true %} + {{- '\n' }} + {%- else %} + {{- '\n\n\n\n' }} + {%- endif %} +{%- endif %} \ No newline at end of file diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer.json b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer.json new file mode 100644 index 0000000000000000000000000000000000000000..a73a846725794819aa6e1c9e97d8dc9671c2006d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f9e4d4901a92b997e463c1f46055088b6cca5ca61a6522d1b9f64c4bb81cb42 +size 12807982 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer_config.json b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer_config.json new file mode 100644 index 0000000000000000000000000000000000000000..fae3ce993e07c092ad024dde45e592379fde91bb --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/tokenizer/tokenizer_config.json @@ -0,0 +1,305 @@ +{ + "add_prefix_space": false, + "added_tokens_decoder": { + "248044": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248045": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248046": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248047": { + "content": "<|object_ref_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248048": { + "content": "<|object_ref_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248049": { + "content": "<|box_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248050": { + "content": "<|box_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248051": { + "content": "<|quad_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248052": { + "content": "<|quad_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248053": { + "content": "<|vision_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248054": { + "content": "<|vision_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248055": { + "content": "<|vision_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248056": { + "content": "<|image_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248057": { + "content": "<|video_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248058": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248059": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248060": { + "content": "<|fim_prefix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248061": { + "content": "<|fim_middle|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248062": { + "content": "<|fim_suffix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248063": { + "content": "<|fim_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248064": { + "content": "<|repo_name|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248065": { + "content": "<|file_sep|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248066": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248067": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248068": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248069": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "248070": { + "content": "<|audio_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248071": { + "content": "<|audio_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248072": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248073": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248074": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248075": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "248076": { + "content": "<|audio_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "bos_token": null, + "chat_template": "{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- macro render_content(content, do_vision_count, is_system_content=false) %}\n {%- if content is string %}\n {{- content }}\n {%- elif content is iterable and content is not mapping %}\n {%- for item in content %}\n {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain images.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Picture ' ~ image_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|image_pad|><|vision_end|>' }}\n {%- elif 'video' in item or item.type == 'video' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain videos.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Video ' ~ video_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|video_pad|><|vision_end|>' }}\n {%- elif 'text' in item %}\n {{- item.text }}\n {%- else %}\n {{- raise_exception('Unexpected item type in content.') }}\n {%- endif %}\n {%- endfor %}\n {%- elif content is none or content is undefined %}\n {{- '' }}\n {%- else %}\n {{- raise_exception('Unexpected content type.') }}\n {%- endif %}\n{%- endmacro %}\n{%- if not messages %}\n {{- raise_exception('No messages provided.') }}\n{%- endif %}\n{%- if tools and tools is iterable and tools is not mapping %}\n {{- '<|im_start|>system\\n' }}\n {{- \"# Tools\\n\\nYou have access to the following functions:\\n\\n\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n\" }}\n {{- '\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\\n\\n\\n\\n\\nvalue_1\\n\\n\\nThis is the value for the second parameter\\nthat can span\\nmultiple lines\\n\\n\\n\\n\\n\\nReminder:\\n- Function calls MUST follow the specified format: an inner block must be nested within XML tags\\n- Required parameters MUST be specified\\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\\n' }}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '\\n\\n' + content }}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {{- '<|im_start|>system\\n' + content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" %}\n {%- set content = render_content(message.content, false)|trim %}\n {%- if not(content.startswith('') and content.endswith('')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if ns.multi_step_tool %}\n {{- raise_exception('No user query found in messages.') }}\n{%- endif %}\n{%- for message in messages %}\n {%- set content = render_content(message.content, true)|trim %}\n {%- if message.role == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n {%- elif message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '' in content %}\n {%- set reasoning_content = content.split('')[0].rstrip('\\n').split('')[-1].lstrip('\\n') %}\n {%- set content = content.split('')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n {%- if loop.index0 > ns.last_query_index %}\n {{- '<|im_start|>' + message.role + '\\n\\n' + reasoning_content + '\\n\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\\n\\n\\n\\n' }}\n {%- else %}\n {{- '\\n\\n' }}\n {%- endif %}\n {%- else %}\n {{- '\\n\\n\\n' }}\n {%- endif %}\n {%- if tool_call.arguments is defined %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '\\n' }}\n {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}\n {{- args_value }}\n {{- '\\n\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.previtem and loop.previtem.role != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n\\n' }}\n {{- content }}\n {{- '\\n' }}\n {%- if not loop.last and loop.nextitem.role != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- elif loop.last %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- else %}\n {{- raise_exception('Unexpected message role.') }}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is true %}\n {{- '\\n' }}\n {%- else %}\n {{- '\\n\\n\\n\\n' }}\n {%- endif %}\n{%- endif %}", + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "model_max_length": 262144, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null, + "add_bos_token": false, + "pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+", + "extra_special_tokens": { + "audio_bos_token": "<|audio_start|>", + "audio_eos_token": "<|audio_end|>", + "audio_token": "<|audio_pad|>", + "image_token": "<|image_pad|>", + "video_token": "<|video_pad|>", + "vision_bos_token": "<|vision_start|>", + "vision_eos_token": "<|vision_end|>" + } +} \ No newline at end of file diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00015.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00015.bin new file mode 100644 index 0000000000000000000000000000000000000000..17d7da399afc3b0e1a911ba5e32c544e4e60090d --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00015.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e03e9ea691d0b5ceeb2fe8b5be66d5c093e844e9a9c66419d39b5896b4e01319 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00016.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00016.bin new file mode 100644 index 0000000000000000000000000000000000000000..b840bcae07d34f5b55b31d79944243888abd33cd --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00016.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe8254c59393a562809ecd57c8aa80b009fc6ebe2eadc434582a4f2747eaeb65 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00017.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00017.bin new file mode 100644 index 0000000000000000000000000000000000000000..d3ec4af2dcf9000321a3058470a862621e152625 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00017.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57148cd4031dbb9e4c797bec29e94bce34196bd99cc466caf4f473994c3cfb37 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00018.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00018.bin new file mode 100644 index 0000000000000000000000000000000000000000..1471835022e84bc4cd50eefc594d6e2a4e4b90ff --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00018.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4de09f17f8c15e27c06eaaf2e69885efd837192a5d14a0d5a99c93d516faf5f +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00019.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00019.bin new file mode 100644 index 0000000000000000000000000000000000000000..dcf76babc4bbc458b93d2741d2181cfb8c3c573f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00019.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76dda70376dfa5539aa9adf093bbe00f1c91b9b621c314764d334a162f7d103b +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00020.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00020.bin new file mode 100644 index 0000000000000000000000000000000000000000..2dbd577e7010ce767897e4f736a40cad1c4152d3 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00020.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d585e393d7d2dd232c285c7a519a03b19e1c0a0129e06c04ed1e6268f088f18 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00021.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00021.bin new file mode 100644 index 0000000000000000000000000000000000000000..90c8134e70e2086f797e9bb4b986d26efd82bb5c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00021.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d0578c2f668e7b97b576197d92105ba63b4ee06ca9363a30508b3087775cf46 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00022.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00022.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f927c37858bd70b23b648bbb7c5113bb6ee1409 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00022.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f11ca7d1a280e5627b7bb7e961cf8b7adb91a84ee4bf5b9e2b40648ee0ab96f +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00023.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00023.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf562688a742ade7e8fac76f54ec860561b8eec2 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00023.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f2b45c74f25a5aa754f28c6707543ae6cc64a24ae224e97e2f031b8abb1fb46 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00024.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00024.bin new file mode 100644 index 0000000000000000000000000000000000000000..06f33d8c0f08d667ee5dfd3848804aeaea3d79a1 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00024.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06e05a9ae0b7739858bd6ba82e560d6b98e59b3c775a1ebe7ced85b3dca920e2 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00025.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00025.bin new file mode 100644 index 0000000000000000000000000000000000000000..4498f9c5e980bd353ba21005a96772f6e7b87c9a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00025.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6973ab4cc1a83eed9fd60a7e60b9b4540efefc8dcf46c928d24b87d489e40df5 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00026.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00026.bin new file mode 100644 index 0000000000000000000000000000000000000000..eeb74e177443363b7e59a198d26ec3da5fa2f498 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00026.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4d0ff4c94c7e872161c91bb7538f671139de85667445640bfa32e6e9d996712 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00027.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00027.bin new file mode 100644 index 0000000000000000000000000000000000000000..12e0776462d37d5779f1698a09e2917785d1b847 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00027.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9227bb0235cc5fbf51cc8b4ad0e40917aa1ebe5ff0baee6f0932ba367ce0eca4 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00028.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00028.bin new file mode 100644 index 0000000000000000000000000000000000000000..34b41f9ddedeefde5a46aec272eaa5c5af7a6d5b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00028.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fdb586782269da3797cfa5256982fea8693a8ce2c22c11352e713c5b153b09e +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00029.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00029.bin new file mode 100644 index 0000000000000000000000000000000000000000..77146ad55b1631f2a3724c735950790736db3e30 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00029.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2122c2db66c80ab6754718b22bf35881954fd7e544cb7e67e7945085cea0abd7 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00030.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00030.bin new file mode 100644 index 0000000000000000000000000000000000000000..c1d34f4e1675d03a614cd082c3781167aac50bba --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00030.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c13cf1342293971b9e2a70be5314e414360fb01bc52b1cc4c129d0331aa68db3 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00031.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00031.bin new file mode 100644 index 0000000000000000000000000000000000000000..ba025f40111257d7054fe1564cd3ce2d030cff29 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00031.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f494ab8796ea4a4241003f88496a9c22073bea4a85a5adfd8e21ab564314960 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00032.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00032.bin new file mode 100644 index 0000000000000000000000000000000000000000..86fefb2ca4130deae345b854ec0cfb892e86c64f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00032.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94201ff6b6f5dee1bdb77b4e0f1de9ad16a6d4e31f15f1f8c4e4c17156f2b179 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00033.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00033.bin new file mode 100644 index 0000000000000000000000000000000000000000..64a130a82259cbdd9afced0d642d584b09f82c6a --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00033.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15a27ad130cb0d315f11a4feded61e04acd0bf352bc91960fb04c44115cfa60a +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00034.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00034.bin new file mode 100644 index 0000000000000000000000000000000000000000..2af07bbb775dc1639ae429c92b9a080f51f9c342 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00034.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4859bf12e4dff5964a77ba1ef2490c3523d9d6d8807a6b55e826b0fe82fead40 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00035.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00035.bin new file mode 100644 index 0000000000000000000000000000000000000000..6be33060417ff19ce0ef9ac56da13a407f9aa95f --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00035.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee5e44efb6ed9c950d6efcb79a909a293925fb23daef592cd2b0a3838306a456 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00036.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00036.bin new file mode 100644 index 0000000000000000000000000000000000000000..5d43f6c7cf8e8414e87e443b7ad566d7debc9c5b --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00036.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:549f6be19eb4423c0245f87d83e22d5df197eecdeda091fbd0affd28464e4dc7 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00037.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00037.bin new file mode 100644 index 0000000000000000000000000000000000000000..b21e45819ee6455262ce9fc4b4039e940f1700e4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00037.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06244125bf0574b1058d00e16835283e2f0b35372becd033a675f8a940fd28e6 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00038.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00038.bin new file mode 100644 index 0000000000000000000000000000000000000000..f0f217b22c16f4b6c34fcf9c0134ab8c3794f07c --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00038.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d85347997090fd46cf2a16752708e9fa57a6840e209f4eb220f782a50f9532d +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00039.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00039.bin new file mode 100644 index 0000000000000000000000000000000000000000..50eeacfeb9fbd1af2547324efbd88100ffff3361 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00039.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a51ee44b5b713e30b717a91b140e13c1009a20eca34ddd95115cceb5de4b2f +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00040.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00040.bin new file mode 100644 index 0000000000000000000000000000000000000000..a8c6355df766dcc355f45fd6dcbb53eac35dfa58 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00040.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e057236f17edfbaac13388c5572fa8d1c2a787cfef781a7788fd6e26117fc9 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00041.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00041.bin new file mode 100644 index 0000000000000000000000000000000000000000..d9bbe7b670e82cfdbf295515518e12e5cb44d2c4 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/00041.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b0fb39a2d33001b2629c905567bac2dfc9fc2597a0d3585ceba31e96233434b +size 27024768 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-000.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-000.bin new file mode 100644 index 0000000000000000000000000000000000000000..cde12639d21d7f32c4a6e699272ea324bb45e8a1 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-000.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:377fd59265a5d2aa4042271079707df0c6279151e55b6c42e85884d653293d59 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-001.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-001.bin new file mode 100644 index 0000000000000000000000000000000000000000..13ba67cf3dbc01b4f39ffa4a33f759730fcde5d9 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-001.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f81ce411620fbde23b8d39f217fb9166868898f3f076384b4bfb711afb024cc6 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-002.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-002.bin new file mode 100644 index 0000000000000000000000000000000000000000..2aa0fc00bf4312a94b478e7678418201851c23e5 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-002.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0161d977e69be487af3517dc1340d3c70e216cb09abd750413390575f352d75 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-003.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-003.bin new file mode 100644 index 0000000000000000000000000000000000000000..4beb06c4ab492f959774eb5466d80ead4022d368 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-003.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dad5e340e009fad70452f37f5bfbea024172054b7e6b74037b55ab200bf9e67 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-004.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-004.bin new file mode 100644 index 0000000000000000000000000000000000000000..b9db6c4be298976b5cd6248ced767b989f833671 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-004.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7551a97a3e0de11cc8c1e7121c61905d41445425788e7a761db8516fd46c31c +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-005.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-005.bin new file mode 100644 index 0000000000000000000000000000000000000000..8c1d4132c553fdca1c949c9f54576936e4539cbf --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-005.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b458c88a0470f80ddf3237dafaa176381c48ce7167800bc36a247020623d3b92 +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-006.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-006.bin new file mode 100644 index 0000000000000000000000000000000000000000..4796bc81aeb0176a14ac288e483275f6d4293242 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-006.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:264ce13dbc95d528d1b1a86b025d543445b3006c3ac93769a4dd7afa83ad62bb +size 67108864 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-007.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-007.bin new file mode 100644 index 0000000000000000000000000000000000000000..d02a2eb8fcad8bfb195b46cecac72ac427f07a69 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-007.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5207098eb86685114c19309a64aa9e8ab6ab10a840d65d7db38626a02ba3e277 +size 38797312 diff --git a/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-scales-000.bin b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-scales-000.bin new file mode 100644 index 0000000000000000000000000000000000000000..381f1b6aa836642dff8e631864ab319a1c25c851 --- /dev/null +++ b/qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v6/weights/int8-422da3921400-scales-000.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:996aac5b374e2494bf4533ae0e18c5a9f31b529d757d6ad61d6eb142cc6163ba +size 63569920