diff --git a/.gitattributes b/.gitattributes index 6d393b446cc4a3ecb16b23d5810294517d9cc291..1216004892029a952713dcd80602e04819015e80 100644 --- a/.gitattributes +++ b/.gitattributes @@ -66,3 +66,4 @@ qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v3/graph.json fi qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v3/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text qwen35-08b-fp32-8k-token-major-home-v4/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/graph.json filter=lfs diff=lfs merge=lfs -text +qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..12d890f4a402b0675a5fd2b6d98f661c3f315dd5 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.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(-x); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bef42a5c9cf3a75556610ba3eee2eac25cf19401 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.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[1u * 512u + ((i / 512u) % 1u) * 512u + ((i / 32u) % 16u) * 32u + ((i / 1u) % 32u) * 1u]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58181f1b0116d2180192b51cc8e05ae53f00587d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.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 / 16u) % 6144u) * 1u + ((i / 1u) % 16u) * 6144u]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5466706ae8a51fb919a0c6e3bdc851986df7c3b3 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.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 + 4096u) * 1u]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a27baed9f1bab1d547213060cfb98f64b59479a2b7d7e41486ce8d7e7c1888d8.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a27baed9f1bab1d547213060cfb98f64b59479a2b7d7e41486ce8d7e7c1888d8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b0cf8eba7008602b137d344fb72876e9637ecb76 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a27baed9f1bab1d547213060cfb98f64b59479a2b7d7e41486ce8d7e7c1888d8.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 * 248320u; +if (i >= 248320u) { return; } +let coord = (i / 1u) % 248320u; +if (coord >= 0u && coord < 131072u) { out[i] = f32(b0[(i / 248320u) * 131072u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 131072u && coord < 248320u) { out[i] = f32(b1[(i / 248320u) * 117248u + (coord - 131072u) * 1u + i % 1u]); } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a3b7ba18c0aa6c84088bfae203f30b202cf1cedc --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.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 >= 12u) { return; } +out[i] = f32(b0[i]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0f992f99ce37f07be233993c8dabc7fe235ba666 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.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(1.0 / (1.0 + exp(-x))); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c0eaa7ea6d730c603c8ce3193ea9e00a3ec74433 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.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 >= 1u) { return; } +out[i] = i32(b0[i]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a3dcb26b08c4e2c0b11e188a362984db75cae2d09ed11e1029d69576b99ed9ac.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a3dcb26b08c4e2c0b11e188a362984db75cae2d09ed11e1029d69576b99ed9ac.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..da84804a4a2ec0c5cef4e946ac5000db8e7e46af --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a3dcb26b08c4e2c0b11e188a362984db75cae2d09ed11e1029d69576b99ed9ac.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 1024u; +if (i >= 1024u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 131072 || token >= 248320) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 131072) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a405c3a6203b40db5812e5299cee829b88a6cee8742a177b8e6bf0395ed52d89.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a405c3a6203b40db5812e5299cee829b88a6cee8742a177b8e6bf0395ed52d89.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..417ddd26b417ee7faf5a658bafa269b974a0bac0 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a405c3a6203b40db5812e5299cee829b88a6cee8742a177b8e6bf0395ed52d89.wgsl @@ -0,0 +1,83 @@ +@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; +@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]); } + workgroupBarrier(); + var running_max = -3.4028234663852886e38; + var running_sum = 0.0; + var acc: array; + for (var start = 0u; start < 4096u; start += 1024u) { + let count = min(1024u, 4096u - 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3ae9e0043808929344cd1e40bf60a2dc532aac06 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..94caaa605cd85dfadbdb72f49366b2f40ac3ddcf --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl @@ -0,0 +1,44 @@ +@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 partial: array; +var delta: f32; +@compute @workgroup_size(128) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let column = group.x; + let head = group.y; + let batch_index = group.z; + let lane = local.x; + var recurrent = 0.0; + if (lane < 128u) { recurrent = f32(b5[((batch_index * 16u + head) * 128u + lane) * 128u + column]); } + for (var token = 0u; token < 64u; token++) { + recurrent *= exp(f32(b3[(batch_index * 64u + token) * 16u + head])); + partial[lane] = 0.0; + if (lane < 128u) { partial[lane] = recurrent * f32(b1[((batch_index * 64u + token) * 16u + head) * 128u + lane]); } + workgroupBarrier(); + for (var stride = 64u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { delta = (f32(b2[((batch_index * 64u + token) * 16u + head) * 128u + column]) - partial[0]) * f32(b4[(batch_index * 64u + token) * 16u + head]); } + workgroupBarrier(); + if (lane < 128u) { recurrent += f32(b1[((batch_index * 64u + token) * 16u + head) * 128u + lane]) * delta; } + partial[lane] = 0.0; + if (lane < 128u) { + partial[lane] = recurrent * f32(b0[((batch_index * 64u + token) * 16u + head) * 128u + lane]) * 0.08838834764831845; + } + workgroupBarrier(); + for (var stride = 64u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[((batch_index * 16u + head) * 192u + 128u + token) * 128u + column] = f32(partial[0]); } + workgroupBarrier(); + } + if (lane < 128u) { out[((batch_index * 16u + head) * 192u + lane) * 128u + column] = f32(recurrent); } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..aa456f658303b9267eb9faab7425cd740bbdc6f5 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8f7e080e8cee8c2acabacf51697ca01fe402a237 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58aa0b8cdce7083ab78ef1d07209c0fb7453bfd4 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a411756a9239877ab739c80010eb78b97e1cc130 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a442553393b20f2c68a57efbb6d0eccae8d1c425 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..70a57f24ff695b932429f61024d4f9a7cf194254 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4bd4cd7da7a46d9f8234fcb621a58a1e37822d4c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..44a1dd646db06ca3b9e95fa43d9ecf152f916a44 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2a2a259f750aef9c48507b8fa223d1c4de2f1364 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..197ac86366a010949ab6555925b7746073f2838b --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.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 * 65536u; +if (i >= 65536u) { return; } +out[i] = f32(b0[i]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0e63cebe9c685e72f2ef3807fe8a83b8853e6dd9 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..74186e66e6477562a7428f1d974871861d33807f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4493ec84a6a3ecaad780645eb74fd1900795ba99 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f6c7872687b7bdd3f9a0ce5853f90ec21d96e2d3 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/adfbba60ade7143599d7de0faa4904afc1400ccc3cf84602f22a2fb004d0398e.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/adfbba60ade7143599d7de0faa4904afc1400ccc3cf84602f22a2fb004d0398e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..98839f8f01a1b224a0b122e46e13bbfb21d38dd5 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/adfbba60ade7143599d7de0faa4904afc1400ccc3cf84602f22a2fb004d0398e.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 4u + row) * 1024u + 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 < 131072u && first < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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 < 131072u) { + let i = (batch * 4u + out_row) * 131072u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..48686d13bb0682a3b49a3239768a42f4ae4217d8 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..149a4ba7b993cd3c7a5ae3d437265ae0e1001e0e --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b06d10513b70659dd70c40974ccc40867e6c17dacc4d4f5c131f6d99c728138d.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b06d10513b70659dd70c40974ccc40867e6c17dacc4d4f5c131f6d99c728138d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..10049f8fd38c33af08fce1fe6cf8db99da91e4d9 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b06d10513b70659dd70c40974ccc40867e6c17dacc4d4f5c131f6d99c728138d.wgsl @@ -0,0 +1,41 @@ +@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 / 1024u; + let col = index % 1024u; + let word = b0[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 32u + col / 32u]; +} + +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 * 65535u; + if (i >= 131072u) { return; } + let lane = local.x; + let row = i % 131072u; + var acc = 0.0; + for (var w = lane; w < 256u; w += 64u) { + let word = b0[row * 256u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 1024u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 131072u) * 1024u + col]); + } + } + acc += part * f32(b1[row * 32u + first / 32u]); + } + 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..59029583047b1c87c1e71eb358d7b73fbc8adba5 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..54526e84e0f57f0b27c2e0d57273b25cde83790f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9b18092deac8f9ecf759c438a10098e2899a4448 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839.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]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..d7c92bd3f3a7e5b1883a4c8b38d5e18114b7fd53 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4d8a5bb75deb878ba50367abeb2220352b270284 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6b99413ee370aa1076606344bd7a730d9634394d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b441eef0119fbc7cc4c3757e12f57cffdeeac0bbed3285b5757f7b9a20feb669.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b441eef0119fbc7cc4c3757e12f57cffdeeac0bbed3285b5757f7b9a20feb669.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fc822b77bf9b39304d2238caf8d2c5b95029a2d7 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b441eef0119fbc7cc4c3757e12f57cffdeeac0bbed3285b5757f7b9a20feb669.wgsl @@ -0,0 +1,41 @@ +@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 / 1024u; + let col = index % 1024u; + let word = b0[row * 128u + col / 8u]; + let code = i32((word >> ((col % 8u) * 4u)) & 15u) - 8; + return f32(code) * b1[row * 32u + col / 32u]; +} + +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 * 3584u; + if (i >= 3584u) { return; } + let lane = local.x; + let row = i % 3584u; + var acc = 0.0; + for (var w = lane; w < 128u; w += 64u) { + let word = b0[row * 128u + w]; + let first = w * 8u; + var part = 0.0; + for (var e = 0u; e < 8u; e++) { + let col = first + e; + if (col < 1024u) { + let code = i32((word >> (e * 4u)) & 15u) - 8; + part += f32(code) * f32(b2[(i / 3584u) * 1024u + col]); + } + } + acc += part * f32(b1[row * 32u + first / 32u]); + } + 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a5d1a988399067b52e6658a8d39dcbfac3d81a20 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9977e082147cbcb3bb693d292b2bdfcee26bb38a --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..174ea30cc2482fd8884ac2284af35d964b934cbf --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb3e27e020bc22a0c8c21a5f9910a0a26b73ace5f68d9d49d1e4d67d53232060.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb3e27e020bc22a0c8c21a5f9910a0a26b73ace5f68d9d49d1e4d67d53232060.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4407f0f01c45c8d1abfefa6a45fb3601c6f39623 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb3e27e020bc22a0c8c21a5f9910a0a26b73ace5f68d9d49d1e4d67d53232060.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 < 1024u && 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 < 1024u) { + let i = (batch * 4u + out_row) * 1024u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e3d4966600c9fa703e8af8c55e751691948715a --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..70d42d4c763bcca299e524c1695c1ae352353cd9 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7b4dd957fd1c7e8dcb9f85dae6fcf264becc9365 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1eaf48755f6c89edfa173b16d7f022444d1cc0d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a6362c1ba2be5818f23846f039d679fea5bafbf3 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4d0f8a39c69d540e4ebe14901bb8411835e15afb --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cb1e79634a79e0cdf98a873e21b34a8285f58367 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bb8b3676ab0dfbc0c5c78d28f96387bc3a721046 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0c6c020c365e592254d9a01952f5a009adc5a22f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2d80755364a4fee024c589b10f9f00932c251576 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ab5764fc85cf04731216d5178e63dfc02d07826a --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa4df64a06b41dc3305ec748ea504d435a19aa23 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa9bac520b006ea9afd50beaa3b3f67aa0df0eef --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e167ce6a7ce9917f434844c31163e81a8ec4800 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..68bb70490bf5d2d463fb8fe40f5bec228d3c516f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22bcefa0ff08fd3a5375ea57e17ff7f0cda1d768 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7e12c353c29523774d93254e8dc9f119ce04b4fb --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c5a289d1fb6564db68cc05de03941dff72def270e328ba8fb520e5dd0efb075f.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c5a289d1fb6564db68cc05de03941dff72def270e328ba8fb520e5dd0efb075f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..91ce39eb665d5028710ddc34f534bbeaac57b3be --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c5a289d1fb6564db68cc05de03941dff72def270e328ba8fb520e5dd0efb075f.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 128u + col / 8u]; + let code = i32((word >> ((col % 8u) * 4u)) & 15u) - 8; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 64u + row) * 1024u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 128u) { + let n_local = lane / 2u; + let word_local = lane % 2u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 8u; + var word = 0u; + var scale = 0.0; + if (n_index < 3584u && first < 1024u) { + word = b1[n_index * 128u + first / 8u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 8u; e++) { + let code = i32((word >> (e * 4u)) & 15u) - 8; + var value = 0.0; + if (first + e < 1024u) { value = f32(code) * scale; } + tile_b[word_local * 8u + 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 < 3584u) { + let i = (batch * 64u + out_row) * 3584u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c5b7564d87c89606da1cba30e05e401e4fb8c83957e779a694d2ec2c472d88ad.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c5b7564d87c89606da1cba30e05e401e4fb8c83957e779a694d2ec2c472d88ad.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cdb616b4ae8911e79b5094a4f464cca7003692ef --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c5b7564d87c89606da1cba30e05e401e4fb8c83957e779a694d2ec2c472d88ad.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 64u + row) * 1024u + 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 < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c7c966b2f9c54a16d0078728edc1f2a7f79265fed388a815a0d52bcd73d1e0f6.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c7c966b2f9c54a16d0078728edc1f2a7f79265fed388a815a0d52bcd73d1e0f6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..39fa47f25d8e9247c1219230f44e40fb3534699e --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c7c966b2f9c54a16d0078728edc1f2a7f79265fed388a815a0d52bcd73d1e0f6.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 16u + row) * 1024u + 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 < 131072u && first < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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 < 131072u) { + let i = (batch * 16u + out_row) * 131072u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..19ed701e6f3435af2e4cac80f2299fec71288328 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6bbc472bea9c8d96ae70e94b1ca3e146cd081981 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4dcc7277e51d99d41da8a357860b649d314d34d9 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c.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 * 4096u; +if (i >= 4096u) { return; } +out[i] = f32(f32(b0[i]) + (f32(b1[i]) * 1.0)); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a23bfb9bcccaa79b5dac185105bff8ca820bb74d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cbf056e5ee69b636a923375457724714030fc0904a6691c0d5658c1ee676c4c5.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cbf056e5ee69b636a923375457724714030fc0904a6691c0d5658c1ee676c4c5.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..38df1af4940ffcd6fb4d726861c8abb1a47c9005 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cbf056e5ee69b636a923375457724714030fc0904a6691c0d5658c1ee676c4c5.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + col / 32u]; +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 1024u; +if (i >= 1024u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 0 || token >= 131072) { out[i] = f32(0.0); return; } +out[i] = f32(dequant_1(u32(token - 0) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f99a31a5530ee04c3f3573c324dd7c6471dc1049 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ccb303d2d38ef10c1cf514f01ec2fa3b2541734aca8a34b3e8bb8d71d03a6688.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..228b4bbd0824c9c80c477855a3d00e3274aa4588 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..09fcea174bf26710815b865219fd6f9b01ee9aa1 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d0651e139bbc689d5d2ec68fb44d306820ef5d2a08443d6a2fb17774c3d8b6e1.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d0651e139bbc689d5d2ec68fb44d306820ef5d2a08443d6a2fb17774c3d8b6e1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cc3cdae243d5ad0e9c5a43994ff753540a5c8d8e --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d0651e139bbc689d5d2ec68fb44d306820ef5d2a08443d6a2fb17774c3d8b6e1.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 16u + row) * 1024u + 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 < 6144u && first < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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 < 6144u) { + let i = (batch * 16u + out_row) * 6144u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1885827206d969e4d30ba0cbea1254ed34899aa --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2ed956d555ce10ac3e0cfb4ddb36ebd66e887258 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d1e9766c981b6c437331275b2afdfc74e0789005b52c2015839fc2394961da1b.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d1e9766c981b6c437331275b2afdfc74e0789005b52c2015839fc2394961da1b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5f9bf0d2bec1d53cd434ffca9f2daa37e572048f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d1e9766c981b6c437331275b2afdfc74e0789005b52c2015839fc2394961da1b.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 64u + row) * 1024u + 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 < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a2aecdb17ed7acc593c2fb1336efc680b5b06fe2 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8dc4e37b9ab18460e2948a94be384c7507b4a40b --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d832c24052111d597bdc3083ad7c394b782dcbd0acca81497b365e6a4df4fab1.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d832c24052111d597bdc3083ad7c394b782dcbd0acca81497b365e6a4df4fab1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..08412e526be676e31d09a923a2b95fb67921111c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d832c24052111d597bdc3083ad7c394b782dcbd0acca81497b365e6a4df4fab1.wgsl @@ -0,0 +1,41 @@ +@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 / 1024u; + let col = index % 1024u; + let word = b0[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 32u + col / 32u]; +} + +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; + let row = i % 16u; + var acc = 0.0; + for (var w = lane; w < 256u; w += 64u) { + let word = b0[row * 256u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 1024u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 16u) * 1024u + col]); + } + } + acc += part * f32(b1[row * 32u + first / 32u]); + } + 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..953be222dbeeda53732439dbfe62aa874ef12d4f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2b2fd35974b2d0fe841a8a268a0226630737a60e --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b9628d2da46062848c07bc2e3b01760e87d55275 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.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 * 64u; + if (row >= 64u) { return; } + let lane = local.x; + if (lane == 0u) { + var total = 0.0; + for (var j = 0u; j < 1024u; j++) { + let v = f32(b0[row * 1024u + j]); + total += v * v; + } + factor = inverseSqrt(total / 1024.0 + 1e-06); + } + workgroupBarrier(); + for (var p = lane; p < 1024u; p += 64u) { + let i = row * 1024u + p; + out[i] = f32(f32(b0[row * 1024u + p]) * factor * (f32(b1[p]) + 1.0)); + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d98c84cc12e2f8f4416252bb1d11dcb956262e8d672051da1e5c567f9671ab90.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d98c84cc12e2f8f4416252bb1d11dcb956262e8d672051da1e5c567f9671ab90.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1070dc0876111d35b16b6ed268e062c1aeda603 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/d98c84cc12e2f8f4416252bb1d11dcb956262e8d672051da1e5c567f9671ab90.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 128u + col / 8u]; + let code = i32((word >> ((col % 8u) * 4u)) & 15u) - 8; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 16u + row) * 1024u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 128u) { + let n_local = lane / 2u; + let word_local = lane % 2u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 8u; + var word = 0u; + var scale = 0.0; + if (n_index < 3584u && first < 1024u) { + word = b1[n_index * 128u + first / 8u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 8u; e++) { + let code = i32((word >> (e * 4u)) & 15u) - 8; + var value = 0.0; + if (first + e < 1024u) { value = f32(code) * scale; } + tile_b[word_local * 8u + 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 < 3584u) { + let i = (batch * 16u + out_row) * 3584u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..499822f6fd09e951de9b6f6961f497b337bb638b --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0e13dfcb4085c03a943bab386ba2afe5e2a6133c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dc7a17f9b66a1d32baac0c09a575e7044a67a86f2c22f8dda0998302827c2449.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dc7a17f9b66a1d32baac0c09a575e7044a67a86f2c22f8dda0998302827c2449.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6145cfd5dc8bb98fdce1f2f1de1c2d427488e8ce --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dc7a17f9b66a1d32baac0c09a575e7044a67a86f2c22f8dda0998302827c2449.wgsl @@ -0,0 +1,83 @@ +@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; +@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]); } + workgroupBarrier(); + var running_max = -3.4028234663852886e38; + var running_sum = 0.0; + var acc: array; + for (var start = 0u; start < 4096u; start += 1024u) { + let count = min(1024u, 4096u - 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ea5b4f2a12f5be394f09aff8d9d7d412604cad2b --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..684e67f205ed8e5d2b379a1b312f0339ea744c07 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4f2bf7e4c7efd7610ae86a151b04332e7a137cb4 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2373549cc794fa4438a3c1e3ac3320d217d2de1c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..edaf6eca29e64fa2e4a563af4eaf9fe76bfb99b7 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5bc58ca8a83e46e3403c1f4ea7a6fd95358ac3d0 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6e0d70a003b0ae9ebc255496a061f374428e3953 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e369b5c120d84bfebbc35e3da096c33e55d20a607aecd5d82da5de4c95176e00.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ea5b4de02c46ed92269369bebfaf9e012b9aa48d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2eb119d2449221b9b8bace6cfb92a13e33a3c95c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3d2f9b253a6b9d0335cd3b020fa078163eb347a6 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1cca9e30814dd2231912899d446310b2c59b8009 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e70d8911b42f5114d78ff9ad3b9e6ffb97fbc487a1b9a73c5cbbc3fe8665f666.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e70d8911b42f5114d78ff9ad3b9e6ffb97fbc487a1b9a73c5cbbc3fe8665f666.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa3233c9f690ed394f56c34c781121595c85b484 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e70d8911b42f5114d78ff9ad3b9e6ffb97fbc487a1b9a73c5cbbc3fe8665f666.wgsl @@ -0,0 +1,83 @@ +@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; +@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 / 1u; + let row = group.x % 1u; + let kv_head = head / 4u; + for (var d = lane; d < 256u; d += 64u) { q_row[d] = f32(b0[(head * 1u + row) * 256u + d]); } + workgroupBarrier(); + var running_max = -3.4028234663852886e38; + var running_sum = 0.0; + var acc: array; + for (var start = 0u; start < 4096u; start += 1024u) { + let count = min(1024u, 4096u - 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 * 1u + row) * 256u + d; + out[i] = f32(acc[c] / running_sum); + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..46d7c7b355ee64e20cfeead625b246a385c60d9b --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c061788bda0478004560218a522ad6db46d1c40e --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9737295d6a724ac96efb6c84473f524d0f8dcb5f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f47eaba34fc23b6975aa31bc0c00044a984a7861 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22f89afc566d4ca07eaa1dbc2cd6483d7a06aa71 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa04fd0adecdb9f18898bad16cb516ccdf4bf468 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7dd035a2b7b4ce728303f33a2f815174cbedc865 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7b1a3f0dff8b91f244bd9f20ffde6873033a24df --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f3e0c0c3178577855935a47c94b1fbace824ff39 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284.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 * 16384u; +if (i >= 16384u) { return; } +out[i] = f32(b0[i]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e7ff2c1c7d2a5c72bbf52908e3a4a89766434990 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..71fee4a974a4ef03d91dd3ce0680762c347a9577 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3.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(b0[((i / 16u) % 1u) * 16u + ((i / 1u) % 16u) * 1u + 0u * 1u]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..63d1ffd2bc103e1a26f56ca1d5c9ff8519c692ac --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8ea3a882fbad7969825ed46025244690e2dd7b52 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2.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]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..15382fc197ef648b58ce80bf82efcabed936514c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..514e64a95d7576a978b5e3abc375ffb22297bc66 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b2f14ad5c01e9efb2e5f7424d8124543f564a86d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ce3525f2123ee5d4f25f699881ad39286c38f693 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f4da95f36c7aa6394d358a8d33a33ebeb3e404dbe56ddb554bad895ac538e5ad.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f4da95f36c7aa6394d358a8d33a33ebeb3e404dbe56ddb554bad895ac538e5ad.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c50bb760eec2f554e00aa25a86edeaab205b5f63 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f4da95f36c7aa6394d358a8d33a33ebeb3e404dbe56ddb554bad895ac538e5ad.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 128u + col / 8u]; + let code = i32((word >> ((col % 8u) * 4u)) & 15u) - 8; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 4u + row) * 1024u + col])); } + tile_a[m_local][flat % 16u] = value; + } + if (lane < 128u) { + let n_local = lane / 2u; + let word_local = lane % 2u; + let n_index = tile_n + n_local; + let first = k0 + word_local * 8u; + var word = 0u; + var scale = 0.0; + if (n_index < 3584u && first < 1024u) { + word = b1[n_index * 128u + first / 8u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 8u; e++) { + let code = i32((word >> (e * 4u)) & 15u) - 8; + var value = 0.0; + if (first + e < 1024u) { value = f32(code) * scale; } + tile_b[word_local * 8u + 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 < 3584u) { + let i = (batch * 4u + out_row) * 3584u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..92790934326cbc014348566d54624e3d2d8a85c1 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..011b9989a7cfd50ed05b4fbde19f90b64aa84b20 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e61151db275d2deac9f983bd165d506d746f384 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1fe067e9574b327c21206e0e5535bc398f54ff1b --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f7f0ee18ecdc712d36e487eef201cb442f28f824e5b6fac7e4d16cb6b7debec4.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f7f0ee18ecdc712d36e487eef201cb442f28f824e5b6fac7e4d16cb6b7debec4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..acb704b6798e2756ebd6bc6ebb6e4392ca61ced7 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f7f0ee18ecdc712d36e487eef201cb442f28f824e5b6fac7e4d16cb6b7debec4.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 4u + row) * 1024u + 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 < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58968344810b5ec1eb718ef062079a8fd93b02a0 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2.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) * 6144u + ((i / 1u) % 6144u) * 1u + ((i / 1u) % 1u) * 6144u]); +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..410788b08c259098da3f2a160cb88a04812a90f1 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9e09a0405b65767fdf150265f0573fa5737b5356 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cf15e04cdeba75c873e80fc764f945a9f56b3a48 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c9ea63d0ef2a33525ebd5156d578b4ceaf2ede3f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6f74d6d41b23067fa00cf713cb503945fad5fe53 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..247b70d7c24a44a2a389531aeedf176cc171389c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fc10d5764b524325b318d227d4c41e446eff8ca7999ed1b9c6c97e3da9a639b4.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fc10d5764b524325b318d227d4c41e446eff8ca7999ed1b9c6c97e3da9a639b4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3855c27e9f0c4fb81f53e8e78ab653cabc1de5bf --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fc10d5764b524325b318d227d4c41e446eff8ca7999ed1b9c6c97e3da9a639b4.wgsl @@ -0,0 +1,41 @@ +@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 / 1024u; + let col = index % 1024u; + let word = b0[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 32u + col / 32u]; +} + +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; + let row = i % 2048u; + var acc = 0.0; + for (var w = lane; w < 256u; w += 64u) { + let word = b0[row * 256u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 1024u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 2048u) * 1024u + col]); + } + } + acc += part * f32(b1[row * 32u + first / 32u]); + } + 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fc4f8cdb9fc2c13aab57c9c9d3eece502a0bbd579e123aaa9cb3e005cfa269cc.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fc4f8cdb9fc2c13aab57c9c9d3eece502a0bbd579e123aaa9cb3e005cfa269cc.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c4ea663a467a66c83356eafd008858b412364728 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fc4f8cdb9fc2c13aab57c9c9d3eece502a0bbd579e123aaa9cb3e005cfa269cc.wgsl @@ -0,0 +1,41 @@ +@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 / 1024u; + let col = index % 1024u; + let word = b0[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b1[row * 32u + col / 32u]; +} + +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 * 65535u; + if (i >= 117248u) { return; } + let lane = local.x; + let row = i % 117248u; + var acc = 0.0; + for (var w = lane; w < 256u; w += 64u) { + let word = b0[row * 256u + w]; + let first = w * 4u; + var part = 0.0; + for (var e = 0u; e < 4u; e++) { + let col = first + e; + if (col < 1024u) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + part += f32(code) * f32(b2[(i / 117248u) * 1024u + col]); + } + } + acc += part * f32(b1[row * 32u + first / 32u]); + } + 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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fcedaa0e15a5e700f580cd6605b1796a47d852dc3f3ef4ebf713f7b7292ae791.wgsl b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fcedaa0e15a5e700f580cd6605b1796a47d852dc3f3ef4ebf713f7b7292ae791.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6acc2820eef226cae1a808c2c526e87d6c5a155d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/kernels/fcedaa0e15a5e700f580cd6605b1796a47d852dc3f3ef4ebf713f7b7292ae791.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 / 1024u; + let col = index % 1024u; + let word = b1[row * 256u + col / 4u]; + let code = i32((word >> ((col % 4u) * 8u)) & 255u) - 128; + return f32(code) * b2[row * 32u + 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 < 1024u; 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 < 1024u) { value = f32(f32(b0[(batch * 16u + row) * 1024u + 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 < 1024u) { + word = b1[n_index * 256u + first / 4u]; + scale = f32(b2[n_index * 32u + first / 32u]); + } + for (var e = 0u; e < 4u; e++) { + let code = i32((word >> (e * 8u)) & 255u) - 128; + var value = 0.0; + if (first + e < 1024u) { 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 < 16u) { + let i = (batch * 16u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/manifest.json b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..5d8f862bf03f044a7c2f935ddb2dd31134d2d7b0 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/manifest.json @@ -0,0 +1,2095 @@ +{ + "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/00007.bin", + "byteLength": 67108864, + "sha256": "c765ad66cc9e9f26b8b921c5a61f3aa36e2a740b81bbac0cbe813f96075fb57c" + }, + { + "path": "weights/00008.bin", + "byteLength": 67108864, + "sha256": "d3f3ff4c52997a67383ac679ae5b827301352b62dad3dc97097455e43f56c7de" + }, + { + "path": "weights/00009.bin", + "byteLength": 67108864, + "sha256": "4bfcdb177dbcda8d626c6acfebc72b3737ee8b8d76e73d597eb7ed83f279527c" + }, + { + "path": "weights/00010.bin", + "byteLength": 67108864, + "sha256": "b599c4ee8a48be5a7b7cb01b1657423e75c38b99d6e2cec2585ad762b5a24706" + }, + { + "path": "weights/00011.bin", + "byteLength": 67108864, + "sha256": "b737a3500cc281ebdbb44c68f1dc5890e74aaa3b6174478634b7be6f3169e419" + }, + { + "path": "weights/00012.bin", + "byteLength": 67108864, + "sha256": "88972e38c465df219d6106dae3b13687a0ff4e5531c31adea820389d430cc430" + }, + { + "path": "weights/00013.bin", + "byteLength": 65834368, + "sha256": "e389659aec6112cd3015df1d2d022283c6398d51216212de6082bb2842c77e3a" + }, + { + "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": 2907, + "sha256": "b90b86f35c8e6925ef74ee04d0e758f0a845c83a42089ad82bbaa948de9b4204" + }, + { + "path": "source/LICENSE", + "byteLength": 11544, + "sha256": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a" + }, + { + "path": "source/provenance.json", + "byteLength": 201, + "sha256": "cc031c3b7563aac8d5663b31e2f4fc36eff716921d0770718de26f43d2d883c5" + }, + { + "path": "weights/int8-422da3921400-000.bin", + "byteLength": 67108864, + "sha256": "4b6af03570cf4c61f65953360a05c8f7765613d74265500d98a7831576ef4b2a" + }, + { + "path": "weights/int8-422da3921400-001.bin", + "byteLength": 67108864, + "sha256": "232751bd9d377a51463c145bd4d92cfa746da6dddd9c9744b3b858918b0bb532" + }, + { + "path": "weights/int8-422da3921400-002.bin", + "byteLength": 67108864, + "sha256": "692200be8018bd74c3d7a1800a09c3c0bc35e484c9ffd14c2b50b3e44fc4b64d" + }, + { + "path": "weights/int8-422da3921400-003.bin", + "byteLength": 52953088, + "sha256": "bce8b67108d9d864876d0e43191d8b800612d8f0fc97d00686a2466c5527db01" + }, + { + "path": "weights/int8-422da3921400-scales-000.bin", + "byteLength": 31784960, + "sha256": "f17d095ab28362beae6d3852f3a434b8a47f052f358228b61e76b994e1e806ac" + }, + { + "path": "entrypoints/prefill-16.json", + "byteLength": 8240396, + "sha256": "9caef363c01b21988b18374ec03d3535c5b5175a9e9390211899a495ade361c6" + }, + { + "path": "entrypoints/prefill-4.json", + "byteLength": 8236892, + "sha256": "c90b68e093074310aabbb3e910b47dd984259994f8caa7a435de257b1747b466" + }, + { + "path": "entrypoints/prefill-64.json", + "byteLength": 8242028, + "sha256": "4909287c8563cd8ddd9cf4789552c8d16b5abae5577f0e7f321cd3e09469d7c5" + }, + { + "path": "graph.json", + "byteLength": 10675239, + "sha256": "751143c1b7470df13cdb04a6dce00541c405b703d0934ee84d20a7ed339bf931" + }, + { + "path": "kernels/004c06d76ce77979b63fe4450df54986355fd10cd2ef62adae86780e49e4a4a7.wgsl", + "byteLength": 375, + "sha256": "004c06d76ce77979b63fe4450df54986355fd10cd2ef62adae86780e49e4a4a7" + }, + { + "path": "kernels/0112d93bb1aa347d8887ce1b95610a1a21fc8450ff8f59bcd37747fa6bf6fa52.wgsl", + "byteLength": 373, + "sha256": "0112d93bb1aa347d8887ce1b95610a1a21fc8450ff8f59bcd37747fa6bf6fa52" + }, + { + "path": "kernels/0151a813c4a92adeb44f0e3b6108c77b29804118b588c9025805f724fce839b4.wgsl", + "byteLength": 849, + "sha256": "0151a813c4a92adeb44f0e3b6108c77b29804118b588c9025805f724fce839b4" + }, + { + "path": "kernels/0153b6b641515b31ea2980613978c809e225435001b48fbec69afa520251a7af.wgsl", + "byteLength": 2885, + "sha256": "0153b6b641515b31ea2980613978c809e225435001b48fbec69afa520251a7af" + }, + { + "path": "kernels/026b53c4ecb0527a45fbd6020a725ad4d0ea2ea28c8cfa0a56e19cb0c1ad08ea.wgsl", + "byteLength": 598, + "sha256": "026b53c4ecb0527a45fbd6020a725ad4d0ea2ea28c8cfa0a56e19cb0c1ad08ea" + }, + { + "path": "kernels/0337d8a473b6e485bd383533df7d373dbbfe7a5f3a982424004560b7213fbaa3.wgsl", + "byteLength": 499, + "sha256": "0337d8a473b6e485bd383533df7d373dbbfe7a5f3a982424004560b7213fbaa3" + }, + { + "path": "kernels/04f26661cc9ac73bb7f39f66b76c4be31ee8774e094eeb41ed7d677e1b1d3fa9.wgsl", + "byteLength": 368, + "sha256": "04f26661cc9ac73bb7f39f66b76c4be31ee8774e094eeb41ed7d677e1b1d3fa9" + }, + { + "path": "kernels/04f5cb70141e507d48bd44a76bfdf264a404a706e8a012502dce5a22ee75bab0.wgsl", + "byteLength": 371, + "sha256": "04f5cb70141e507d48bd44a76bfdf264a404a706e8a012502dce5a22ee75bab0" + }, + { + "path": "kernels/053386c9a33cc1c62378ebe3b3614c6b9ee662d6004a1f27bc616653e62cc24b.wgsl", + "byteLength": 2883, + "sha256": "053386c9a33cc1c62378ebe3b3614c6b9ee662d6004a1f27bc616653e62cc24b" + }, + { + "path": "kernels/0554a443ecf6ead32fd2d58178b9ce3c592c89a09b3f63fa509ee947323bb497.wgsl", + "byteLength": 399, + "sha256": "0554a443ecf6ead32fd2d58178b9ce3c592c89a09b3f63fa509ee947323bb497" + }, + { + "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/0e5468583a1ba929483119c50d4be42a58aed4dde1e15cc231908ed7543d0b71.wgsl", + "byteLength": 288, + "sha256": "0e5468583a1ba929483119c50d4be42a58aed4dde1e15cc231908ed7543d0b71" + }, + { + "path": "kernels/0ef8fd3c2fe267549e7de4eb9a074d2ada8e80c91ce2f9c9c4d6b24d17742821.wgsl", + "byteLength": 2883, + "sha256": "0ef8fd3c2fe267549e7de4eb9a074d2ada8e80c91ce2f9c9c4d6b24d17742821" + }, + { + "path": "kernels/0f466ed2664d77386f48afd19d8ab2734312bfd4f5f4d5b063d801a0b0a97cd9.wgsl", + "byteLength": 396, + "sha256": "0f466ed2664d77386f48afd19d8ab2734312bfd4f5f4d5b063d801a0b0a97cd9" + }, + { + "path": "kernels/0f943f386d2f37a8e56b4285b26e1c093c2f2fa2a5ce81cc43c44cc9bb0137f5.wgsl", + "byteLength": 386, + "sha256": "0f943f386d2f37a8e56b4285b26e1c093c2f2fa2a5ce81cc43c44cc9bb0137f5" + }, + { + "path": "kernels/0fbc9484ef8ca703ced4ffd123f1ae733c44556b6cb160ee803b820ff5ec867d.wgsl", + "byteLength": 411, + "sha256": "0fbc9484ef8ca703ced4ffd123f1ae733c44556b6cb160ee803b820ff5ec867d" + }, + { + "path": "kernels/11a92e9cba6bfc381c98c5127db137639d6c87f1cb220459880ead039dc81256.wgsl", + "byteLength": 363, + "sha256": "11a92e9cba6bfc381c98c5127db137639d6c87f1cb220459880ead039dc81256" + }, + { + "path": "kernels/121285fc94b4a9f873c60a1d6e0de9d764286607718405fd18288e7ff419c483.wgsl", + "byteLength": 381, + "sha256": "121285fc94b4a9f873c60a1d6e0de9d764286607718405fd18288e7ff419c483" + }, + { + "path": "kernels/12155d86d776e73f23d3bff0268c60dccb54c209ee9ee3a8cfd227ec4aa5b6df.wgsl", + "byteLength": 290, + "sha256": "12155d86d776e73f23d3bff0268c60dccb54c209ee9ee3a8cfd227ec4aa5b6df" + }, + { + "path": "kernels/1255847146b31732939e573cdb26c483358c1ce07f987bd8c3d3d69ae8c7e141.wgsl", + "byteLength": 380, + "sha256": "1255847146b31732939e573cdb26c483358c1ce07f987bd8c3d3d69ae8c7e141" + }, + { + "path": "kernels/13237b557466d2fef5bfbc74e7ac77219b9821a53bc0843dbb5d14db8b04d414.wgsl", + "byteLength": 308, + "sha256": "13237b557466d2fef5bfbc74e7ac77219b9821a53bc0843dbb5d14db8b04d414" + }, + { + "path": "kernels/1326034f3abab37629cd88f869d1b0bafcde724f85c07904b54feaaf71d89c62.wgsl", + "byteLength": 2298, + "sha256": "1326034f3abab37629cd88f869d1b0bafcde724f85c07904b54feaaf71d89c62" + }, + { + "path": "kernels/13dc73935b9b3b978232043e13babee3877bd53ca572be440de0590dacce8b17.wgsl", + "byteLength": 367, + "sha256": "13dc73935b9b3b978232043e13babee3877bd53ca572be440de0590dacce8b17" + }, + { + "path": "kernels/149c3fdb542967fc038109de3f2b7b2fbee1a6f594baffe28f6f16bafb84d355.wgsl", + "byteLength": 851, + "sha256": "149c3fdb542967fc038109de3f2b7b2fbee1a6f594baffe28f6f16bafb84d355" + }, + { + "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/1a73b6fceda28f40bba4ae27a986ffa39842db94fa5903ea5bf689a7e854d4f3.wgsl", + "byteLength": 499, + "sha256": "1a73b6fceda28f40bba4ae27a986ffa39842db94fa5903ea5bf689a7e854d4f3" + }, + { + "path": "kernels/1ad205080cae29142a3ad87343a0cf3ac4945455398293946110d421ce6d515e.wgsl", + "byteLength": 371, + "sha256": "1ad205080cae29142a3ad87343a0cf3ac4945455398293946110d421ce6d515e" + }, + { + "path": "kernels/1b9f4e330debc7235cfaf8f51d00fec575e09aa6116a45ea001e10ff5f09eb8c.wgsl", + "byteLength": 581, + "sha256": "1b9f4e330debc7235cfaf8f51d00fec575e09aa6116a45ea001e10ff5f09eb8c" + }, + { + "path": "kernels/1c441e95ec3ce8fee9348560af48191844baf402715f575940a0d4eb394c82d2.wgsl", + "byteLength": 2879, + "sha256": "1c441e95ec3ce8fee9348560af48191844baf402715f575940a0d4eb394c82d2" + }, + { + "path": "kernels/1d0cbb068fe17123e646934bfa1259f19e5db04e45d72a157d3ea4fa48c81aa0.wgsl", + "byteLength": 406, + "sha256": "1d0cbb068fe17123e646934bfa1259f19e5db04e45d72a157d3ea4fa48c81aa0" + }, + { + "path": "kernels/1d7df24388934e162899442d3cc6c6576791aac9f1a5dff86766d840f08fd46e.wgsl", + "byteLength": 417, + "sha256": "1d7df24388934e162899442d3cc6c6576791aac9f1a5dff86766d840f08fd46e" + }, + { + "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/234987ec68497956ea7aef8e3f44c8a73dbe4c1519165d123946bedbb4d18e26.wgsl", + "byteLength": 380, + "sha256": "234987ec68497956ea7aef8e3f44c8a73dbe4c1519165d123946bedbb4d18e26" + }, + { + "path": "kernels/237458dff084b2aa9ccba5578da3b2a0b062951575364d1464250baca3fdac5a.wgsl", + "byteLength": 310, + "sha256": "237458dff084b2aa9ccba5578da3b2a0b062951575364d1464250baca3fdac5a" + }, + { + "path": "kernels/246ea07912fcd8a9073926e863141111eb4091b52cc980a6eef148beed122fc4.wgsl", + "byteLength": 847, + "sha256": "246ea07912fcd8a9073926e863141111eb4091b52cc980a6eef148beed122fc4" + }, + { + "path": "kernels/2606a3e23e0b2e53b86130675899c7dd99329dfab67e9164020c77872dbed134.wgsl", + "byteLength": 2880, + "sha256": "2606a3e23e0b2e53b86130675899c7dd99329dfab67e9164020c77872dbed134" + }, + { + "path": "kernels/26cf6eb3b486d1652247ff130b05ed0e8c8560028eeba59acfc075b976bfdfce.wgsl", + "byteLength": 549, + "sha256": "26cf6eb3b486d1652247ff130b05ed0e8c8560028eeba59acfc075b976bfdfce" + }, + { + "path": "kernels/2711a4a396071f4e99303d01d4854ccaa37a445f4b718ebd7b61cf1c37e56b48.wgsl", + "byteLength": 355, + "sha256": "2711a4a396071f4e99303d01d4854ccaa37a445f4b718ebd7b61cf1c37e56b48" + }, + { + "path": "kernels/2792ae5841828bd5af938c10096abe385e63bb3ec2a22e850f146739433c12bf.wgsl", + "byteLength": 396, + "sha256": "2792ae5841828bd5af938c10096abe385e63bb3ec2a22e850f146739433c12bf" + }, + { + "path": "kernels/28119aa01122c42bd26ceb37129fe0c95b2a9192163f6dabd90fe058b1e14c54.wgsl", + "byteLength": 311, + "sha256": "28119aa01122c42bd26ceb37129fe0c95b2a9192163f6dabd90fe058b1e14c54" + }, + { + "path": "kernels/28b69aba1aba878089e1293d59fce422e76487f62cda6ef45c4a1f25cb733f3b.wgsl", + "byteLength": 375, + "sha256": "28b69aba1aba878089e1293d59fce422e76487f62cda6ef45c4a1f25cb733f3b" + }, + { + "path": "kernels/298177ad7e9a723effb24a46b184be65a866cf82d9f4d7aa20f2533536af0ede.wgsl", + "byteLength": 1523, + "sha256": "298177ad7e9a723effb24a46b184be65a866cf82d9f4d7aa20f2533536af0ede" + }, + { + "path": "kernels/2af7517eb26022ada8f8870fd9e1e1ef3da66b9c466336ee18d5295957820b27.wgsl", + "byteLength": 387, + "sha256": "2af7517eb26022ada8f8870fd9e1e1ef3da66b9c466336ee18d5295957820b27" + }, + { + "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/2dd29b61b039fcdd7fbc3c94f629b24b6f81aa5b9923098837597359b295e40d.wgsl", + "byteLength": 396, + "sha256": "2dd29b61b039fcdd7fbc3c94f629b24b6f81aa5b9923098837597359b295e40d" + }, + { + "path": "kernels/2e1ce6ef01198780289fd4a35d8f86b5172595ed189cf931e8444091d49e8d3a.wgsl", + "byteLength": 297, + "sha256": "2e1ce6ef01198780289fd4a35d8f86b5172595ed189cf931e8444091d49e8d3a" + }, + { + "path": "kernels/2ed0344f526ea256cc4b9261d44a1223b139d0294a07ee072107dc85fa6a4e0f.wgsl", + "byteLength": 801, + "sha256": "2ed0344f526ea256cc4b9261d44a1223b139d0294a07ee072107dc85fa6a4e0f" + }, + { + "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/327049da924fdfe946e25d5d7e2cd46c6f5d3e801e1e42df106c86077a5354e9.wgsl", + "byteLength": 791, + "sha256": "327049da924fdfe946e25d5d7e2cd46c6f5d3e801e1e42df106c86077a5354e9" + }, + { + "path": "kernels/32a5027cac5dd969d63fe5d5c88d7c87abb600c43ad1d70e1c56615ea781eff3.wgsl", + "byteLength": 422, + "sha256": "32a5027cac5dd969d63fe5d5c88d7c87abb600c43ad1d70e1c56615ea781eff3" + }, + { + "path": "kernels/32cb7d055e8ecf035e10d05724e64544393bd3916079992a3d8dce427bb14181.wgsl", + "byteLength": 468, + "sha256": "32cb7d055e8ecf035e10d05724e64544393bd3916079992a3d8dce427bb14181" + }, + { + "path": "kernels/33e8ec04c66adb4988f562f0f9d3e92d29dfda91a56d0ed62be598c7c737f5ba.wgsl", + "byteLength": 411, + "sha256": "33e8ec04c66adb4988f562f0f9d3e92d29dfda91a56d0ed62be598c7c737f5ba" + }, + { + "path": "kernels/3560fe2bb07bf6fb92598b9f9c006029892f16dcb55b418973ed89b2b5086b1b.wgsl", + "byteLength": 394, + "sha256": "3560fe2bb07bf6fb92598b9f9c006029892f16dcb55b418973ed89b2b5086b1b" + }, + { + "path": "kernels/359d61f2ba174e54e2a0920fcf61e84e436fd3eaf7e2832e21fdb24094493667.wgsl", + "byteLength": 553, + "sha256": "359d61f2ba174e54e2a0920fcf61e84e436fd3eaf7e2832e21fdb24094493667" + }, + { + "path": "kernels/3622ffa2072335a35d6c9db5d284ed92b3fb5ed304acc2c606408063e7e21dcd.wgsl", + "byteLength": 415, + "sha256": "3622ffa2072335a35d6c9db5d284ed92b3fb5ed304acc2c606408063e7e21dcd" + }, + { + "path": "kernels/3830061b0fc54c85d3d8a783b927c44484b1a3b68b52b8d8a1b980f7553deebf.wgsl", + "byteLength": 406, + "sha256": "3830061b0fc54c85d3d8a783b927c44484b1a3b68b52b8d8a1b980f7553deebf" + }, + { + "path": "kernels/38bd527686bcade9ed19a52788ccd711ca668e76854cc6274c480860fce88ff2.wgsl", + "byteLength": 382, + "sha256": "38bd527686bcade9ed19a52788ccd711ca668e76854cc6274c480860fce88ff2" + }, + { + "path": "kernels/393ad588d895f6825ccbd78f2e7a2ed539c98ba3c715b93ee7fde02852c9a431.wgsl", + "byteLength": 2873, + "sha256": "393ad588d895f6825ccbd78f2e7a2ed539c98ba3c715b93ee7fde02852c9a431" + }, + { + "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/3ccea71019f9d226cfc687279041c91e410c3d732768eac1ca126bdf13ed599b.wgsl", + "byteLength": 1523, + "sha256": "3ccea71019f9d226cfc687279041c91e410c3d732768eac1ca126bdf13ed599b" + }, + { + "path": "kernels/3daeb9cba5c07ed47ac55e1c2565aa82f7d8e8409037707e7339d1d96d122144.wgsl", + "byteLength": 553, + "sha256": "3daeb9cba5c07ed47ac55e1c2565aa82f7d8e8409037707e7339d1d96d122144" + }, + { + "path": "kernels/3e34409407100d4858c4c109cf62f3eaf2f4c6081166b0ec8679105e6dfbe7fe.wgsl", + "byteLength": 309, + "sha256": "3e34409407100d4858c4c109cf62f3eaf2f4c6081166b0ec8679105e6dfbe7fe" + }, + { + "path": "kernels/3ea275cc11d4d81274b1987190ff6d57c804ff9a5f7fed7dee8c61b19a4c100b.wgsl", + "byteLength": 853, + "sha256": "3ea275cc11d4d81274b1987190ff6d57c804ff9a5f7fed7dee8c61b19a4c100b" + }, + { + "path": "kernels/3eef2865950af58196f0e6e4eaef47123acfcbd576a636f5278aad5a998e4ba6.wgsl", + "byteLength": 789, + "sha256": "3eef2865950af58196f0e6e4eaef47123acfcbd576a636f5278aad5a998e4ba6" + }, + { + "path": "kernels/3f89d19bd6791657fa702ad00a0517b5f292dbf7d0c196bd5b21c949476d23fd.wgsl", + "byteLength": 497, + "sha256": "3f89d19bd6791657fa702ad00a0517b5f292dbf7d0c196bd5b21c949476d23fd" + }, + { + "path": "kernels/3fa1efae6d90015ba69cb40cef009f49ad7f7a960018fb92a962707deff4f09e.wgsl", + "byteLength": 286, + "sha256": "3fa1efae6d90015ba69cb40cef009f49ad7f7a960018fb92a962707deff4f09e" + }, + { + "path": "kernels/3fe93f80860ec8279a77e1dea55c00d6fe2bd81cb9d0c03624b80e9a999ec449.wgsl", + "byteLength": 2889, + "sha256": "3fe93f80860ec8279a77e1dea55c00d6fe2bd81cb9d0c03624b80e9a999ec449" + }, + { + "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/4540d87eaec90c9eb42badfe0abfa70252f26b6e7de4dd31ee6903fe50e96bd1.wgsl", + "byteLength": 377, + "sha256": "4540d87eaec90c9eb42badfe0abfa70252f26b6e7de4dd31ee6903fe50e96bd1" + }, + { + "path": "kernels/4578388c366b893f08776e9d2e3ae0ff07f38b085d53c738c8d623c263debce8.wgsl", + "byteLength": 1519, + "sha256": "4578388c366b893f08776e9d2e3ae0ff07f38b085d53c738c8d623c263debce8" + }, + { + "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/4ac112c035a1a4a2f5deae66fac0969000c4666730c2d7b15cb15a157ea0e9b8.wgsl", + "byteLength": 395, + "sha256": "4ac112c035a1a4a2f5deae66fac0969000c4666730c2d7b15cb15a157ea0e9b8" + }, + { + "path": "kernels/4b098a370a6c993f2c974bd5afcc00f7e3686a600c458a060c7e7db3193789ba.wgsl", + "byteLength": 394, + "sha256": "4b098a370a6c993f2c974bd5afcc00f7e3686a600c458a060c7e7db3193789ba" + }, + { + "path": "kernels/4b1a7529fd5c57d5d4593d4af58a9a3b545c7d106d18251f6452f8a562b97952.wgsl", + "byteLength": 389, + "sha256": "4b1a7529fd5c57d5d4593d4af58a9a3b545c7d106d18251f6452f8a562b97952" + }, + { + "path": "kernels/4be963f9a4bb928764fd0efe02769e220b0e69defb2f8b22ab28e41a90d3fc14.wgsl", + "byteLength": 286, + "sha256": "4be963f9a4bb928764fd0efe02769e220b0e69defb2f8b22ab28e41a90d3fc14" + }, + { + "path": "kernels/4d05b472f8cb3485606d782585e1061973f1391d129fb765f9cb0f38c5fbb433.wgsl", + "byteLength": 2305, + "sha256": "4d05b472f8cb3485606d782585e1061973f1391d129fb765f9cb0f38c5fbb433" + }, + { + "path": "kernels/4d3e5f3a99a6c8c9dba5de30be4302f1e442f91d097437e825df97017e389a42.wgsl", + "byteLength": 367, + "sha256": "4d3e5f3a99a6c8c9dba5de30be4302f1e442f91d097437e825df97017e389a42" + }, + { + "path": "kernels/4d46494a55ac0b66fdddd47b9422106ac39e0c7d206f01004e13f93a010e1bf5.wgsl", + "byteLength": 549, + "sha256": "4d46494a55ac0b66fdddd47b9422106ac39e0c7d206f01004e13f93a010e1bf5" + }, + { + "path": "kernels/4d8ebffbbf193b18c13a5cc17d286bf5c92c5ba53ca022af78a9151ec1e5b9c0.wgsl", + "byteLength": 413, + "sha256": "4d8ebffbbf193b18c13a5cc17d286bf5c92c5ba53ca022af78a9151ec1e5b9c0" + }, + { + "path": "kernels/4ee97e3392700b35c4f59a2b5a3321b23902632cbd6cb2860356f5d97a4352e6.wgsl", + "byteLength": 2877, + "sha256": "4ee97e3392700b35c4f59a2b5a3321b23902632cbd6cb2860356f5d97a4352e6" + }, + { + "path": "kernels/4f2c0d08150d4b97d90c244db2d41baca81484c2630dbbd6d586f2d8a4b07b8b.wgsl", + "byteLength": 406, + "sha256": "4f2c0d08150d4b97d90c244db2d41baca81484c2630dbbd6d586f2d8a4b07b8b" + }, + { + "path": "kernels/4f48f08a8aeb51cc47a10db076a46522807d3b5d35952c9718ce1c1cd760681f.wgsl", + "byteLength": 415, + "sha256": "4f48f08a8aeb51cc47a10db076a46522807d3b5d35952c9718ce1c1cd760681f" + }, + { + "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/50715d2ad1a5d4d5e5e40173773053f693b103c3f381cb315119af2e78415c86.wgsl", + "byteLength": 3564, + "sha256": "50715d2ad1a5d4d5e5e40173773053f693b103c3f381cb315119af2e78415c86" + }, + { + "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/52d3bb12383ee340fde52b8eead6439f4e4de22278dbdc95434bd8048872f3b8.wgsl", + "byteLength": 2876, + "sha256": "52d3bb12383ee340fde52b8eead6439f4e4de22278dbdc95434bd8048872f3b8" + }, + { + "path": "kernels/53d6eb0b5e6d49bfd3bb9fd1b781e13317adf528e047da2416e95f5a3a13b1b4.wgsl", + "byteLength": 381, + "sha256": "53d6eb0b5e6d49bfd3bb9fd1b781e13317adf528e047da2416e95f5a3a13b1b4" + }, + { + "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/59ea88d691b919af03bbb26f0253decfbc35d74f9661cdd3a08570ae85c313d2.wgsl", + "byteLength": 379, + "sha256": "59ea88d691b919af03bbb26f0253decfbc35d74f9661cdd3a08570ae85c313d2" + }, + { + "path": "kernels/5a3a2ba3e1cb848fbbeeafe66425eae65d9fd196646d15eef291188a8179e044.wgsl", + "byteLength": 849, + "sha256": "5a3a2ba3e1cb848fbbeeafe66425eae65d9fd196646d15eef291188a8179e044" + }, + { + "path": "kernels/5aa3725287640d289322ab469bd924bd7797f1cef28920ed4526783877c3cf6b.wgsl", + "byteLength": 373, + "sha256": "5aa3725287640d289322ab469bd924bd7797f1cef28920ed4526783877c3cf6b" + }, + { + "path": "kernels/5aabb2d12f9b0486434345056b4bd24e4456ed356030141bf18306c0d7524476.wgsl", + "byteLength": 816, + "sha256": "5aabb2d12f9b0486434345056b4bd24e4456ed356030141bf18306c0d7524476" + }, + { + "path": "kernels/5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd.wgsl", + "byteLength": 397, + "sha256": "5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd" + }, + { + "path": "kernels/5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4.wgsl", + "byteLength": 554, + "sha256": "5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4" + }, + { + "path": "kernels/5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51.wgsl", + "byteLength": 556, + "sha256": "5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51" + }, + { + "path": "kernels/5d9d7481aa990be4ce6dfc374e1eeaaa3dc8369ede6ed91a58e7129a1e1f05d2.wgsl", + "byteLength": 1523, + "sha256": "5d9d7481aa990be4ce6dfc374e1eeaaa3dc8369ede6ed91a58e7129a1e1f05d2" + }, + { + "path": "kernels/5eac5f92aa4d18895369b11adb99ac0d9639d8b615f7240cffe6f6be7046e54a.wgsl", + "byteLength": 845, + "sha256": "5eac5f92aa4d18895369b11adb99ac0d9639d8b615f7240cffe6f6be7046e54a" + }, + { + "path": "kernels/5f4403d78557e88e66d71eb5e53746cc07449a7c421b57eda4f093a09a68a99a.wgsl", + "byteLength": 290, + "sha256": "5f4403d78557e88e66d71eb5e53746cc07449a7c421b57eda4f093a09a68a99a" + }, + { + "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/6415def2a3f493f401b2577e38c7c41f0adabe06129c5b8058c744b2f93c4c91.wgsl", + "byteLength": 419, + "sha256": "6415def2a3f493f401b2577e38c7c41f0adabe06129c5b8058c744b2f93c4c91" + }, + { + "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/68280baeb493df7bb5708bb14e293795de69aa952e67eb39bf9d9379e5738cb2.wgsl", + "byteLength": 2879, + "sha256": "68280baeb493df7bb5708bb14e293795de69aa952e67eb39bf9d9379e5738cb2" + }, + { + "path": "kernels/691af757595593839af5e5e97ee656472f6e7c7406f57d1d9faae74816d9fc91.wgsl", + "byteLength": 503, + "sha256": "691af757595593839af5e5e97ee656472f6e7c7406f57d1d9faae74816d9fc91" + }, + { + "path": "kernels/6a045508377e47e95d411257071b7ed8f9097fd220c00de6a5167abb548ebe37.wgsl", + "byteLength": 750, + "sha256": "6a045508377e47e95d411257071b7ed8f9097fd220c00de6a5167abb548ebe37" + }, + { + "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/6d748fa04b83886e523f4d9b826e6865f73b31dfe31385b10bd0b9cc9ec4d1db.wgsl", + "byteLength": 607, + "sha256": "6d748fa04b83886e523f4d9b826e6865f73b31dfe31385b10bd0b9cc9ec4d1db" + }, + { + "path": "kernels/6d82b7ed99a04f03fa0b9d241188d9613fa3ce9ff425cf8ee30a7f4ce6ded13d.wgsl", + "byteLength": 407, + "sha256": "6d82b7ed99a04f03fa0b9d241188d9613fa3ce9ff425cf8ee30a7f4ce6ded13d" + }, + { + "path": "kernels/6de6505af6ba3c1c020424d3a99773ff62d2308a2fbf2295ec2ea7e919e4cbb9.wgsl", + "byteLength": 417, + "sha256": "6de6505af6ba3c1c020424d3a99773ff62d2308a2fbf2295ec2ea7e919e4cbb9" + }, + { + "path": "kernels/6e269d73b3570c239593daa679cd223a0239676cec4099b4f3bf46c25b7d6d18.wgsl", + "byteLength": 1519, + "sha256": "6e269d73b3570c239593daa679cd223a0239676cec4099b4f3bf46c25b7d6d18" + }, + { + "path": "kernels/7002f8fdf09f5124ce2875c3540bce3e77750260556fc1a00a8b13b6c1871c30.wgsl", + "byteLength": 383, + "sha256": "7002f8fdf09f5124ce2875c3540bce3e77750260556fc1a00a8b13b6c1871c30" + }, + { + "path": "kernels/7121b5c223da0b0f28991f55cfed3c3f3390caa0bf65a8e58ae380db281ceb6b.wgsl", + "byteLength": 368, + "sha256": "7121b5c223da0b0f28991f55cfed3c3f3390caa0bf65a8e58ae380db281ceb6b" + }, + { + "path": "kernels/7194f0a413c1d8c6013b45b42b129c0a7557141a31bf3f08946fa1dfd1071393.wgsl", + "byteLength": 851, + "sha256": "7194f0a413c1d8c6013b45b42b129c0a7557141a31bf3f08946fa1dfd1071393" + }, + { + "path": "kernels/71d38690bcc7fc30f01f1c8fa2f13a38beff889fcb3ff387861bb70038e92129.wgsl", + "byteLength": 370, + "sha256": "71d38690bcc7fc30f01f1c8fa2f13a38beff889fcb3ff387861bb70038e92129" + }, + { + "path": "kernels/720dc88131b6bf06e6b09185aa7d5986eb755dcfa60d0e040cbbf621c8f3f761.wgsl", + "byteLength": 559, + "sha256": "720dc88131b6bf06e6b09185aa7d5986eb755dcfa60d0e040cbbf621c8f3f761" + }, + { + "path": "kernels/72474f821f837da4ebaab4cc925fdac78b707346be174a7c033c4c6518935abc.wgsl", + "byteLength": 406, + "sha256": "72474f821f837da4ebaab4cc925fdac78b707346be174a7c033c4c6518935abc" + }, + { + "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/752da00e33abf87b63eba03893a16e7db848f97f1385942d40d8cfb5122d9bd3.wgsl", + "byteLength": 369, + "sha256": "752da00e33abf87b63eba03893a16e7db848f97f1385942d40d8cfb5122d9bd3" + }, + { + "path": "kernels/7559e04808def8b214f2be42df9b8309e743b79b51bb6c0b9260cb3284c92c05.wgsl", + "byteLength": 2889, + "sha256": "7559e04808def8b214f2be42df9b8309e743b79b51bb6c0b9260cb3284c92c05" + }, + { + "path": "kernels/75984e187047e6f3dd279f8af2f7b4f6360b3afcac502b9324df6f3025cd1fd5.wgsl", + "byteLength": 599, + "sha256": "75984e187047e6f3dd279f8af2f7b4f6360b3afcac502b9324df6f3025cd1fd5" + }, + { + "path": "kernels/764403c33cd8994568e068810380cb57e9f2e326dfc09bed63eed1fbed044da1.wgsl", + "byteLength": 311, + "sha256": "764403c33cd8994568e068810380cb57e9f2e326dfc09bed63eed1fbed044da1" + }, + { + "path": "kernels/77f9becbd500abcaf6a8d278cbcb6c7031868ff5bf74f41284940d56894cf9fa.wgsl", + "byteLength": 389, + "sha256": "77f9becbd500abcaf6a8d278cbcb6c7031868ff5bf74f41284940d56894cf9fa" + }, + { + "path": "kernels/781d08cc08a9e49246e543d15b3d95775985fd130f5536c36bac80b33d2b86da.wgsl", + "byteLength": 596, + "sha256": "781d08cc08a9e49246e543d15b3d95775985fd130f5536c36bac80b33d2b86da" + }, + { + "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/7adea2b745b20a2abb96d02a1fca6db5f06f3c5aac850cf8ae1afa6f50868ded.wgsl", + "byteLength": 311, + "sha256": "7adea2b745b20a2abb96d02a1fca6db5f06f3c5aac850cf8ae1afa6f50868ded" + }, + { + "path": "kernels/7b7c42c04ea3c6695ddead641e88b82d8f130015e138fc323eec509b5b56cfa9.wgsl", + "byteLength": 406, + "sha256": "7b7c42c04ea3c6695ddead641e88b82d8f130015e138fc323eec509b5b56cfa9" + }, + { + "path": "kernels/7dfc17a30d9796026977dc65bedef251d9b2b5fc7eea0ebee019ad956226a513.wgsl", + "byteLength": 791, + "sha256": "7dfc17a30d9796026977dc65bedef251d9b2b5fc7eea0ebee019ad956226a513" + }, + { + "path": "kernels/7ea4a12734f1206e9c94a060bf6b24732f46685f0c46a78c3c5fbcd64489d8c3.wgsl", + "byteLength": 407, + "sha256": "7ea4a12734f1206e9c94a060bf6b24732f46685f0c46a78c3c5fbcd64489d8c3" + }, + { + "path": "kernels/7f684886a0c031e32c9cf7a4bff880ae692ddc08ddca971ee20d728b4736d0da.wgsl", + "byteLength": 418, + "sha256": "7f684886a0c031e32c9cf7a4bff880ae692ddc08ddca971ee20d728b4736d0da" + }, + { + "path": "kernels/7f87f0acf51d47032a0dd2dea23e5b1da98f677efa19a65e3b207e7a1b9c7c2a.wgsl", + "byteLength": 2879, + "sha256": "7f87f0acf51d47032a0dd2dea23e5b1da98f677efa19a65e3b207e7a1b9c7c2a" + }, + { + "path": "kernels/7fe183583b43b627721ba6853b306288d7ceea4b42b630410f47ea9637220a4b.wgsl", + "byteLength": 290, + "sha256": "7fe183583b43b627721ba6853b306288d7ceea4b42b630410f47ea9637220a4b" + }, + { + "path": "kernels/7fed7072c20dc3e66c80b2ac1f737b0e7e70a695e5db34e057f729c945e60ba0.wgsl", + "byteLength": 752, + "sha256": "7fed7072c20dc3e66c80b2ac1f737b0e7e70a695e5db34e057f729c945e60ba0" + }, + { + "path": "kernels/8044521fb0a89ed8229d56e4981fe85952cec449657de285bc32b4951518ca1a.wgsl", + "byteLength": 2883, + "sha256": "8044521fb0a89ed8229d56e4981fe85952cec449657de285bc32b4951518ca1a" + }, + { + "path": "kernels/80d22263b082805bc9d4499247f92b7a1a783a3e1cdd9c652d304492a1cfd425.wgsl", + "byteLength": 404, + "sha256": "80d22263b082805bc9d4499247f92b7a1a783a3e1cdd9c652d304492a1cfd425" + }, + { + "path": "kernels/816861e23c92e156c1ac01f21e4f6dd1cbfc14978b1be8a5994fb45b0f845cb8.wgsl", + "byteLength": 328, + "sha256": "816861e23c92e156c1ac01f21e4f6dd1cbfc14978b1be8a5994fb45b0f845cb8" + }, + { + "path": "kernels/8239cfa752a60160251d979de4a5a3e2816d2f6af5094252d1a898e423ad5c46.wgsl", + "byteLength": 801, + "sha256": "8239cfa752a60160251d979de4a5a3e2816d2f6af5094252d1a898e423ad5c46" + }, + { + "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/863a50c159a82b2128b5eb2b6d5dddfaed1ee5eb643fdd266345be9e0edcaaf9.wgsl", + "byteLength": 2875, + "sha256": "863a50c159a82b2128b5eb2b6d5dddfaed1ee5eb643fdd266345be9e0edcaaf9" + }, + { + "path": "kernels/866d9f04c73b553ee9e71b5d4d57644ebb265137bb0c3faada3a72d0807f7065.wgsl", + "byteLength": 2879, + "sha256": "866d9f04c73b553ee9e71b5d4d57644ebb265137bb0c3faada3a72d0807f7065" + }, + { + "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/8a46c4e24d014fd6af88a3f370c4b6161be7c63b6c30211bd62af3dbd87293a8.wgsl", + "byteLength": 398, + "sha256": "8a46c4e24d014fd6af88a3f370c4b6161be7c63b6c30211bd62af3dbd87293a8" + }, + { + "path": "kernels/8af32f59dfb78c79ac2187ae707f0897b89fb8bb0e3d832e2edac308eefa603c.wgsl", + "byteLength": 408, + "sha256": "8af32f59dfb78c79ac2187ae707f0897b89fb8bb0e3d832e2edac308eefa603c" + }, + { + "path": "kernels/8affc7c0e85127430e406be35ebb5c5354a8dd26ecc4ae9ab6ace80ce6775f46.wgsl", + "byteLength": 565, + "sha256": "8affc7c0e85127430e406be35ebb5c5354a8dd26ecc4ae9ab6ace80ce6775f46" + }, + { + "path": "kernels/8b540ef0dbe320e8ccc513d0b118e62c6d25dff607a62b8d9de03d1a393a0a5c.wgsl", + "byteLength": 2883, + "sha256": "8b540ef0dbe320e8ccc513d0b118e62c6d25dff607a62b8d9de03d1a393a0a5c" + }, + { + "path": "kernels/8b5e4c9b7889f2bccebf60987b6f5b8c23542c3475cd8d78656dc7ecffd81f8d.wgsl", + "byteLength": 405, + "sha256": "8b5e4c9b7889f2bccebf60987b6f5b8c23542c3475cd8d78656dc7ecffd81f8d" + }, + { + "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/8edd8a2bae8f26ae570c97da27c254da93d6b2df00784f505002f97830f806b3.wgsl", + "byteLength": 292, + "sha256": "8edd8a2bae8f26ae570c97da27c254da93d6b2df00784f505002f97830f806b3" + }, + { + "path": "kernels/8ee286e06c1271162bea74e14b4bd5b1d66890648217c79435e6b3f1d4181ec8.wgsl", + "byteLength": 403, + "sha256": "8ee286e06c1271162bea74e14b4bd5b1d66890648217c79435e6b3f1d4181ec8" + }, + { + "path": "kernels/8f5b5e0b47fdcb6184ffec1c7d8ab07fdda7fad7e2333ca9e5bc36c5f90f85c6.wgsl", + "byteLength": 2883, + "sha256": "8f5b5e0b47fdcb6184ffec1c7d8ab07fdda7fad7e2333ca9e5bc36c5f90f85c6" + }, + { + "path": "kernels/9044193f1f4724f15ef5fb41040b7fbac5f62fcaea80594737214bf9cd6be41a.wgsl", + "byteLength": 419, + "sha256": "9044193f1f4724f15ef5fb41040b7fbac5f62fcaea80594737214bf9cd6be41a" + }, + { + "path": "kernels/9144d827dae4c52b80abb829178a9ed901ce5dbc6702ad94b0b355e8eaad5ea5.wgsl", + "byteLength": 548, + "sha256": "9144d827dae4c52b80abb829178a9ed901ce5dbc6702ad94b0b355e8eaad5ea5" + }, + { + "path": "kernels/928e4759658bc5813ad5b82855d1a8c13e144cdfe50229dfc10b0624d7490858.wgsl", + "byteLength": 563, + "sha256": "928e4759658bc5813ad5b82855d1a8c13e144cdfe50229dfc10b0624d7490858" + }, + { + "path": "kernels/92d96e9c7fd228d99d89b4db14a742e99e230931d81fa6c3b7fa1caf8d4a1aa4.wgsl", + "byteLength": 417, + "sha256": "92d96e9c7fd228d99d89b4db14a742e99e230931d81fa6c3b7fa1caf8d4a1aa4" + }, + { + "path": "kernels/939eb5e3ec5862e0f1d8caec99b814ed6b2bb3a41a132f7149a503e8df582e3c.wgsl", + "byteLength": 606, + "sha256": "939eb5e3ec5862e0f1d8caec99b814ed6b2bb3a41a132f7149a503e8df582e3c" + }, + { + "path": "kernels/947f5cc8b3f87e1a0d4d322d9d9e71e2ed16ce6e1f7c91118678c164dc1c8752.wgsl", + "byteLength": 381, + "sha256": "947f5cc8b3f87e1a0d4d322d9d9e71e2ed16ce6e1f7c91118678c164dc1c8752" + }, + { + "path": "kernels/95addfdb139df33bb3d5c05859412434d318cee0340560537dce4d56a05e159c.wgsl", + "byteLength": 395, + "sha256": "95addfdb139df33bb3d5c05859412434d318cee0340560537dce4d56a05e159c" + }, + { + "path": "kernels/95cba13b595301afbefe20da4a65b93d4d5c5f4a29b9e1d5348d32cb193c6b4b.wgsl", + "byteLength": 372, + "sha256": "95cba13b595301afbefe20da4a65b93d4d5c5f4a29b9e1d5348d32cb193c6b4b" + }, + { + "path": "kernels/9625ca0b071511e5261877fd21627ca354ea0219da86a10887e8054afa15dcfd.wgsl", + "byteLength": 367, + "sha256": "9625ca0b071511e5261877fd21627ca354ea0219da86a10887e8054afa15dcfd" + }, + { + "path": "kernels/96924710cde2ae782e03138b4399e2ed2406f8b37c31401f5a79af528c2193fd.wgsl", + "byteLength": 799, + "sha256": "96924710cde2ae782e03138b4399e2ed2406f8b37c31401f5a79af528c2193fd" + }, + { + "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/9af812cf7d1d31828c41aac6e5c1b9a55ca5cd015f8658d06bb078a5872becfb.wgsl", + "byteLength": 2883, + "sha256": "9af812cf7d1d31828c41aac6e5c1b9a55ca5cd015f8658d06bb078a5872becfb" + }, + { + "path": "kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl", + "byteLength": 301, + "sha256": "9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42" + }, + { + "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/9d9666074828f92b63a676348da9d7bb80e5a03213f1bc88f4dd8607e8a26711.wgsl", + "byteLength": 2889, + "sha256": "9d9666074828f92b63a676348da9d7bb80e5a03213f1bc88f4dd8607e8a26711" + }, + { + "path": "kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.wgsl", + "byteLength": 556, + "sha256": "9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec" + }, + { + "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/a27baed9f1bab1d547213060cfb98f64b59479a2b7d7e41486ce8d7e7c1888d8.wgsl", + "byteLength": 596, + "sha256": "a27baed9f1bab1d547213060cfb98f64b59479a2b7d7e41486ce8d7e7c1888d8" + }, + { + "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/a3dcb26b08c4e2c0b11e188a362984db75cae2d09ed11e1029d69576b99ed9ac.wgsl", + "byteLength": 799, + "sha256": "a3dcb26b08c4e2c0b11e188a362984db75cae2d09ed11e1029d69576b99ed9ac" + }, + { + "path": "kernels/a405c3a6203b40db5812e5299cee829b88a6cee8742a177b8e6bf0395ed52d89.wgsl", + "byteLength": 3564, + "sha256": "a405c3a6203b40db5812e5299cee829b88a6cee8742a177b8e6bf0395ed52d89" + }, + { + "path": "kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl", + "byteLength": 326, + "sha256": "a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92" + }, + { + "path": "kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl", + "byteLength": 2305, + "sha256": "a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856" + }, + { + "path": "kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl", + "byteLength": 505, + "sha256": "a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157" + }, + { + "path": "kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl", + "byteLength": 307, + "sha256": "a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b" + }, + { + "path": "kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl", + "byteLength": 373, + "sha256": "a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f" + }, + { + "path": "kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl", + "byteLength": 575, + "sha256": "a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce" + }, + { + "path": "kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl", + "byteLength": 308, + "sha256": "a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8" + }, + { + "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/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl", + "byteLength": 292, + "sha256": "aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510" + }, + { + "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/adfbba60ade7143599d7de0faa4904afc1400ccc3cf84602f22a2fb004d0398e.wgsl", + "byteLength": 2885, + "sha256": "adfbba60ade7143599d7de0faa4904afc1400ccc3cf84602f22a2fb004d0398e" + }, + { + "path": "kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl", + "byteLength": 551, + "sha256": "ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c" + }, + { + "path": "kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl", + "byteLength": 415, + "sha256": "b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26" + }, + { + "path": "kernels/b06d10513b70659dd70c40974ccc40867e6c17dacc4d4f5c131f6d99c728138d.wgsl", + "byteLength": 1530, + "sha256": "b06d10513b70659dd70c40974ccc40867e6c17dacc4d4f5c131f6d99c728138d" + }, + { + "path": "kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl", + "byteLength": 390, + "sha256": "b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33" + }, + { + "path": "kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl", + "byteLength": 387, + "sha256": "b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e" + }, + { + "path": "kernels/b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839.wgsl", + "byteLength": 290, + "sha256": "b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839" + }, + { + "path": "kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl", + "byteLength": 400, + "sha256": "b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2" + }, + { + "path": "kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl", + "byteLength": 380, + "sha256": "b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28" + }, + { + "path": "kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl", + "byteLength": 556, + "sha256": "b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea" + }, + { + "path": "kernels/b441eef0119fbc7cc4c3757e12f57cffdeeac0bbed3285b5757f7b9a20feb669.wgsl", + "byteLength": 1517, + "sha256": "b441eef0119fbc7cc4c3757e12f57cffdeeac0bbed3285b5757f7b9a20feb669" + }, + { + "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/bb3e27e020bc22a0c8c21a5f9910a0a26b73ace5f68d9d49d1e4d67d53232060.wgsl", + "byteLength": 2879, + "sha256": "bb3e27e020bc22a0c8c21a5f9910a0a26b73ace5f68d9d49d1e4d67d53232060" + }, + { + "path": "kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl", + "byteLength": 421, + "sha256": "bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6" + }, + { + "path": "kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl", + "byteLength": 373, + "sha256": "bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00" + }, + { + "path": "kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl", + "byteLength": 401, + "sha256": "bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469" + }, + { + "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/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl", + "byteLength": 383, + "sha256": "c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258" + }, + { + "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/c5a289d1fb6564db68cc05de03941dff72def270e328ba8fb520e5dd0efb075f.wgsl", + "byteLength": 2877, + "sha256": "c5a289d1fb6564db68cc05de03941dff72def270e328ba8fb520e5dd0efb075f" + }, + { + "path": "kernels/c5b7564d87c89606da1cba30e05e401e4fb8c83957e779a694d2ec2c472d88ad.wgsl", + "byteLength": 2880, + "sha256": "c5b7564d87c89606da1cba30e05e401e4fb8c83957e779a694d2ec2c472d88ad" + }, + { + "path": "kernels/c7c966b2f9c54a16d0078728edc1f2a7f79265fed388a815a0d52bcd73d1e0f6.wgsl", + "byteLength": 2889, + "sha256": "c7c966b2f9c54a16d0078728edc1f2a7f79265fed388a815a0d52bcd73d1e0f6" + }, + { + "path": "kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl", + "byteLength": 378, + "sha256": "c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21" + }, + { + "path": "kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl", + "byteLength": 307, + "sha256": "c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525" + }, + { + "path": "kernels/c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c.wgsl", + "byteLength": 373, + "sha256": "c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c" + }, + { + "path": "kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl", + "byteLength": 311, + "sha256": "ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197" + }, + { + "path": "kernels/cbf056e5ee69b636a923375457724714030fc0904a6691c0d5658c1ee676c4c5.wgsl", + "byteLength": 789, + "sha256": "cbf056e5ee69b636a923375457724714030fc0904a6691c0d5658c1ee676c4c5" + }, + { + "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/d0651e139bbc689d5d2ec68fb44d306820ef5d2a08443d6a2fb17774c3d8b6e1.wgsl", + "byteLength": 2883, + "sha256": "d0651e139bbc689d5d2ec68fb44d306820ef5d2a08443d6a2fb17774c3d8b6e1" + }, + { + "path": "kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl", + "byteLength": 408, + "sha256": "d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9" + }, + { + "path": "kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl", + "byteLength": 390, + "sha256": "d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957" + }, + { + "path": "kernels/d1e9766c981b6c437331275b2afdfc74e0789005b52c2015839fc2394961da1b.wgsl", + "byteLength": 2883, + "sha256": "d1e9766c981b6c437331275b2afdfc74e0789005b52c2015839fc2394961da1b" + }, + { + "path": "kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl", + "byteLength": 375, + "sha256": "d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96" + }, + { + "path": "kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl", + "byteLength": 288, + "sha256": "d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8" + }, + { + "path": "kernels/d832c24052111d597bdc3083ad7c394b782dcbd0acca81497b365e6a4df4fab1.wgsl", + "byteLength": 1515, + "sha256": "d832c24052111d597bdc3083ad7c394b782dcbd0acca81497b365e6a4df4fab1" + }, + { + "path": "kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl", + "byteLength": 378, + "sha256": "d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e" + }, + { + "path": "kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl", + "byteLength": 309, + "sha256": "d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3" + }, + { + "path": "kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.wgsl", + "byteLength": 853, + "sha256": "d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e" + }, + { + "path": "kernels/d98c84cc12e2f8f4416252bb1d11dcb956262e8d672051da1e5c567f9671ab90.wgsl", + "byteLength": 2877, + "sha256": "d98c84cc12e2f8f4416252bb1d11dcb956262e8d672051da1e5c567f9671ab90" + }, + { + "path": "kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl", + "byteLength": 288, + "sha256": "da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de" + }, + { + "path": "kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl", + "byteLength": 286, + "sha256": "dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291" + }, + { + "path": "kernels/dc7a17f9b66a1d32baac0c09a575e7044a67a86f2c22f8dda0998302827c2449.wgsl", + "byteLength": 3560, + "sha256": "dc7a17f9b66a1d32baac0c09a575e7044a67a86f2c22f8dda0998302827c2449" + }, + { + "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/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl", + "byteLength": 367, + "sha256": "deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390" + }, + { + "path": "kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl", + "byteLength": 377, + "sha256": "e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169" + }, + { + "path": "kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl", + "byteLength": 419, + "sha256": "e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7" + }, + { + "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/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl", + "byteLength": 385, + "sha256": "e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66" + }, + { + "path": "kernels/e70d8911b42f5114d78ff9ad3b9e6ffb97fbc487a1b9a73c5cbbc3fe8665f666.wgsl", + "byteLength": 3560, + "sha256": "e70d8911b42f5114d78ff9ad3b9e6ffb97fbc487a1b9a73c5cbbc3fe8665f666" + }, + { + "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/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl", + "byteLength": 307, + "sha256": "edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1" + }, + { + "path": "kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl", + "byteLength": 410, + "sha256": "eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38" + }, + { + "path": "kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl", + "byteLength": 849, + "sha256": "ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8" + }, + { + "path": "kernels/ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284.wgsl", + "byteLength": 292, + "sha256": "ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284" + }, + { + "path": "kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl", + "byteLength": 374, + "sha256": "efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b" + }, + { + "path": "kernels/f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3.wgsl", + "byteLength": 341, + "sha256": "f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3" + }, + { + "path": "kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl", + "byteLength": 322, + "sha256": "f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76" + }, + { + "path": "kernels/f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2.wgsl", + "byteLength": 294, + "sha256": "f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2" + }, + { + "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/f4da95f36c7aa6394d358a8d33a33ebeb3e404dbe56ddb554bad895ac538e5ad.wgsl", + "byteLength": 2873, + "sha256": "f4da95f36c7aa6394d358a8d33a33ebeb3e404dbe56ddb554bad895ac538e5ad" + }, + { + "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/f7f0ee18ecdc712d36e487eef201cb442f28f824e5b6fac7e4d16cb6b7debec4.wgsl", + "byteLength": 2879, + "sha256": "f7f0ee18ecdc712d36e487eef201cb442f28f824e5b6fac7e4d16cb6b7debec4" + }, + { + "path": "kernels/f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2.wgsl", + "byteLength": 367, + "sha256": "f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2" + }, + { + "path": "kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl", + "byteLength": 390, + "sha256": "f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964" + }, + { + "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/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl", + "byteLength": 374, + "sha256": "fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb" + }, + { + "path": "kernels/fc10d5764b524325b318d227d4c41e446eff8ca7999ed1b9c6c97e3da9a639b4.wgsl", + "byteLength": 1523, + "sha256": "fc10d5764b524325b318d227d4c41e446eff8ca7999ed1b9c6c97e3da9a639b4" + }, + { + "path": "kernels/fc4f8cdb9fc2c13aab57c9c9d3eece502a0bbd579e123aaa9cb3e005cfa269cc.wgsl", + "byteLength": 1530, + "sha256": "fc4f8cdb9fc2c13aab57c9c9d3eece502a0bbd579e123aaa9cb3e005cfa269cc" + }, + { + "path": "kernels/fcedaa0e15a5e700f580cd6605b1796a47d852dc3f3ef4ebf713f7b7292ae791.wgsl", + "byteLength": 2877, + "sha256": "fcedaa0e15a5e700f580cd6605b1796a47d852dc3f3ef4ebf713f7b7292ae791" + } + ], + "metadata": { + "repository": "Qwen/Qwen3.5-0.8B", + "revision": "2fc06364715b967f1860aea9cf38778875588b17", + "architecture": "qwen3_5", + "modalities": [ + "text" + ], + "license": "apache-2.0", + "sourceWeights": [ + { + "path": "model.safetensors-00001-of-00001.safetensors", + "sha256": "04b1c301231dd422b8860db31311ab2721511346a32cb1e079c4c4e5f1fe4696" + } + ], + "profile": "fp32-int8-g32-int4-g32-gptq-mixed-b5b110c3-int8-vocab", + "prefill": "queued-incremental", + "checkpointCertified": false, + "fusion": true, + "quantizationSelection": { + "include": [], + "exclude": [] + }, + "quantizationTiers": [ + { + "scheme": "int4", + "method": "gptq", + "groupSize": 32, + "include": [ + "*_mlp_*" + ], + "exclude": [] + } + ], + "quantizationCalibration": { + "methods": [ + "gptq" + ], + "prompts": "artifacts/fixtures/qwen35-quantization-prompts.json", + "sha256": "0ca90afbabe4a38093604c36384ebefcddc5a660135c641e5ec0dda7708f8e04", + "cases": [ + { + "id": "arithmetic", + "tokens": 19 + }, + { + "id": "english-list", + "tokens": 21 + }, + { + "id": "korean-explanation", + "tokens": 25 + }, + { + "id": "translation", + "tokens": 29 + }, + { + "id": "code", + "tokens": 25 + }, + { + "id": "structured-output", + "tokens": 28 + } + ] + }, + "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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/LICENSE b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f938136e3adacfd92be087f6e113b5d6d97f678f --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/config.json b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/config.json new file mode 100644 index 0000000000000000000000000000000000000000..715f0448b9d38103211f0ad88bbb4d6e4f4be8c9 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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": 1024, + "initializer_range": 0.02, + "intermediate_size": 3584, + "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": 12, + "hidden_act": "gelu_pytorch_tanh", + "hidden_size": 768, + "in_channels": 3, + "initializer_range": 0.02, + "intermediate_size": 3072, + "model_type": "qwen3_5", + "num_heads": 12, + "num_position_embeddings": 2304, + "out_hidden_size": 1024, + "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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/provenance.json b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/provenance.json new file mode 100644 index 0000000000000000000000000000000000000000..6b5a8add65c7ba0efb165c5fe3f96c6ceaf7628d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/source/provenance.json @@ -0,0 +1,10 @@ +{ + "repository": "Qwen/Qwen3.5-0.8B", + "revision": "2fc06364715b967f1860aea9cf38778875588b17", + "architecture": "qwen3_5", + "modalities": [ + "text", + "image" + ], + "license": "apache-2.0" +} diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/chat_template.jinja b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/chat_template.jinja new file mode 100644 index 0000000000000000000000000000000000000000..0ef09f214eaa6d9bca297988afc1454b5827b2c7 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/tokenizer.json b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/tokenizer.json new file mode 100644 index 0000000000000000000000000000000000000000..a73a846725794819aa6e1c9e97d8dc9671c2006d --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f9e4d4901a92b997e463c1f46055088b6cca5ca61a6522d1b9f64c4bb81cb42 +size 12807982 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/tokenizer_config.json b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/tokenizer/tokenizer_config.json new file mode 100644 index 0000000000000000000000000000000000000000..fae3ce993e07c092ad024dde45e592379fde91bb --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/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-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00007.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00007.bin new file mode 100644 index 0000000000000000000000000000000000000000..84d730ac6d806820c168a752312dcd97a6dc5958 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00007.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c765ad66cc9e9f26b8b921c5a61f3aa36e2a740b81bbac0cbe813f96075fb57c +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00008.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00008.bin new file mode 100644 index 0000000000000000000000000000000000000000..c424e1d2c6cb8c894128ebd75c892aa762e1ae8c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00008.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3f3ff4c52997a67383ac679ae5b827301352b62dad3dc97097455e43f56c7de +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00009.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00009.bin new file mode 100644 index 0000000000000000000000000000000000000000..a91bb7241b9e373393ccf3127b67a99dd965a3e2 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00009.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bfcdb177dbcda8d626c6acfebc72b3737ee8b8d76e73d597eb7ed83f279527c +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00010.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00010.bin new file mode 100644 index 0000000000000000000000000000000000000000..b666991e738d2d97d1c6c125c230d63a46ceb930 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00010.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b599c4ee8a48be5a7b7cb01b1657423e75c38b99d6e2cec2585ad762b5a24706 +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00011.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00011.bin new file mode 100644 index 0000000000000000000000000000000000000000..778ac4ce674e9f435bfe257d66bf4e2a7fe678a9 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00011.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b737a3500cc281ebdbb44c68f1dc5890e74aaa3b6174478634b7be6f3169e419 +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00012.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00012.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4796846e22f4194c3f1529f240da99e6ef7e14c --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00012.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88972e38c465df219d6106dae3b13687a0ff4e5531c31adea820389d430cc430 +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00013.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00013.bin new file mode 100644 index 0000000000000000000000000000000000000000..9451adc1d79de093217e5b6eaf036fa33a0c36f2 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/00013.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e389659aec6112cd3015df1d2d022283c6398d51216212de6082bb2842c77e3a +size 65834368 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-000.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-000.bin new file mode 100644 index 0000000000000000000000000000000000000000..023da5af0cd0ae2d827ebb429231e88db4958af2 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-000.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b6af03570cf4c61f65953360a05c8f7765613d74265500d98a7831576ef4b2a +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-001.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-001.bin new file mode 100644 index 0000000000000000000000000000000000000000..2baf71392e2ccac89b83660601eeec00c0d80d03 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-001.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232751bd9d377a51463c145bd4d92cfa746da6dddd9c9744b3b858918b0bb532 +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-002.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-002.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8d38adc8ab2759e388e4a98d76b89ebfc124c11 --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-002.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:692200be8018bd74c3d7a1800a09c3c0bc35e484c9ffd14c2b50b3e44fc4b64d +size 67108864 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-003.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-003.bin new file mode 100644 index 0000000000000000000000000000000000000000..9f71c2b62f2ce37e8e307ce37f9c1897c6c0750e --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-003.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bce8b67108d9d864876d0e43191d8b800612d8f0fc97d00686a2466c5527db01 +size 52953088 diff --git a/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-scales-000.bin b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-scales-000.bin new file mode 100644 index 0000000000000000000000000000000000000000..3ff16401a5de2a38b0dfd412246f4b4d33ee63ee --- /dev/null +++ b/qwen35-08b-fp32-int8-attn-int4-mlp-gptq-home-token-major-v2-v4/weights/int8-422da3921400-scales-000.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f17d095ab28362beae6d3852f3a434b8a47f052f358228b61e76b994e1e806ac +size 31784960