diff --git a/.gitattributes b/.gitattributes index 7b13ff807483ddb97407ce9d707cfe065cdf195b..bed5673a4bec8b599706a7610ef3cf292bbb89bb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -64,3 +64,4 @@ qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v3/graph.js qwen35-2b-fp32-int8-g32-exclude-l6-l9-l10up-l15o-home-token-major-v2-v3/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text qwen35-2b-multimodal-fp32-three-grid-state-alias-token-major-v2-v3/graph.json filter=lfs diff=lfs merge=lfs -text 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 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6f5a0294909820e1048e6c135334639bd4ca22df --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/987d27946334b53b3006cdca1a7158b13a27e01e688047aeafc4b029761b80af.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) * 49152u + ((i / 4u) % 6144u) * 8u + (((i / 1u) % 4u) * 1u + 4u) * 1u]); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/98be6b15c9649126fa3946261a44c493de5269e0c73845bb6538cafa79ad5be2.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/98be6b15c9649126fa3946261a44c493de5269e0c73845bb6538cafa79ad5be2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..d27eed8fd3f4e0136a56de47f583624af4e1a530 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/98be6b15c9649126fa3946261a44c493de5269e0c73845bb6538cafa79ad5be2.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 6144u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 6144u) { + let i = (batch * 16u + out_row) * 6144u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6f17903f98ea03f7ed94043a81020110ebe8f203 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.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) * 122880u + ((i / 4u) % 6144u) * 20u + (((i / 1u) % 4u) * 1u + 16u) * 1u]); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ede227a38b1e2608dc62d7a93b0d68ad2fb653fb --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.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 * 1024u; +if (i >= 1024u) { return; } +out[i] = f32(f32(b0[i]) * 1.0); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..13405594381416c66f9cd854eba9470db47d0cfd --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 16384u; +if (i >= 16384u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 131072 || token >= 196608) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 131072) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8e61a84c02865b15e4ec97518145656d5f9a41c3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 4096u; +if (i >= 4096u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 65536 || token >= 131072) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 65536) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e2476989d2a095c8f6a2ba2e76b53b82c3749282 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9cd8236a30e65989f2ed9c7afcfcf2369b6036ade2a7d81c8e203c2789178074.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 * 417792u; +if (i >= 417792u) { return; } +let coord = (i / 1u) % 68u; +if (coord >= 0u && coord < 4u) { out[i] = f32(b0[(i / 68u) * 4u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 4u && coord < 68u) { out[i] = f32(b1[(i / 68u) * 64u + (coord - 4u) * 1u + i % 1u]); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c743049812f0cdac4cac58f95aedc18a7838dbae --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d12ba7fd89692e99bb291808c5a80ffd5b95478671dde2c936fc3deb8383fa0.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 * 1024u; +if (i >= 1024u) { return; } +let x = f32(b0[i]); +if (x * 1.0 > 20.0) { out[i] = f32(x); return; } +out[i] = f32(log(1.0 + exp(x * 1.0)) / 1.0); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..433c8d99687959f0d2fba22eeee39545cf88e8ca --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d3d7b777701cd320ca11358e554e1019fb041ee4d765e66071c215242906773.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) * 65536u + ((i / 2048u) % 16u) * 4096u + ((i / 256u) % 8u) * 512u + (((i / 1u) % 256u) * 1u + 0u) * 1u]); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..90bdc06efe0122917f683fbb8817bcab407c17a3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9d504391a987c7be7ccfbb7972c27cf54cd62730c19cbe7949fee2ea059f0c43.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 * 122880u; +if (i >= 122880u) { return; } +let x = f32(b0[i]); +out[i] = f32(x / (1.0 + exp(-x))); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..928d1ad581850d91a2b178bed4f5d3f5e81e28b1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl @@ -0,0 +1,16 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 248320u; +if (i >= 248320u) { return; } +let coord = (i / 1u) % 248320u; +if (coord >= 0u && coord < 65536u) { out[i] = f32(b0[(i / 248320u) * 65536u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 65536u && coord < 131072u) { out[i] = f32(b1[(i / 248320u) * 65536u + (coord - 65536u) * 1u + i % 1u]); } +if (coord >= 131072u && coord < 196608u) { out[i] = f32(b2[(i / 248320u) * 65536u + (coord - 131072u) * 1u + i % 1u]); } +if (coord >= 196608u && coord < 248320u) { out[i] = f32(b3[(i / 248320u) * 51712u + (coord - 196608u) * 1u + i % 1u]); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..31bd75024f015a30070af10901b1b0aa5f0a0a89 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/9f040facf0594804dba5b0f10f53b11b7223a1e1705896f95a8f95aa0fff5eec.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 >= 1u && coord < 34u && (coord - 1u) % 3u == 0u) { out[i] = f32(b0[((i / 2048u) % 1u) * 704u + ((i / 32u) % 64u) * 11u + ((((i / 1u) % 32u) - 1u) / 3u) * 1u]); } else { out[i] = f32(b1[i]); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..870c26ddb7eaf8dd8335f56cb6a8270f187dcb59 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a16a539c1a662c846d6c661e572b0b8e19335f9ef41742f784d738bcfd3cd7a6.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 * 393216u; +if (i >= 393216u) { return; } +out[i] = f32(b0[((i / 393216u) % 1u) * 417792u + ((i / 64u) % 6144u) * 68u + (((i / 1u) % 64u) * 1u + 4u) * 1u]); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a1a974f6d8d51fd7c3496ede0966af303ad9f0c0c9ee44cf93ec962d2b0e87e1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..12d890f4a402b0675a5fd2b6d98f661c3f315dd5 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a1cf6b03baf18d389f0a2b95440c17125a8ecc1e633568de985d42cac6e0d1cb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bef42a5c9cf3a75556610ba3eee2eac25cf19401 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a21c6a35532bc26ccfc46df22f98e1592e3b285e3800544c032edf39425bde1a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58181f1b0116d2180192b51cc8e05ae53f00587d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a24673da4fae6d1c49aa143f8425996b2d036db7b0341987dab330c78ead91d7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5466706ae8a51fb919a0c6e3bdc851986df7c3b3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a2767b8d5878ef73ac0fa8645b6d08aaed7c012f11d64487a9f4951a8ef6f6c8.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a2767b8d5878ef73ac0fa8645b6d08aaed7c012f11d64487a9f4951a8ef6f6c8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e0dd0a684feeb600a9e1354ac2187ebcf770e053 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a2767b8d5878ef73ac0fa8645b6d08aaed7c012f11d64487a9f4951a8ef6f6c8.wgsl @@ -0,0 +1,55 @@ +enable f16; +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 16u && col < 1024u) { value = f32(f32(b1[n_index * 1024u + col])); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 16u) { + let i = (batch * 64u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a3b7ba18c0aa6c84088bfae203f30b202cf1cedc --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0f992f99ce37f07be233993c8dabc7fe235ba666 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c0eaa7ea6d730c603c8ce3193ea9e00a3ec74433 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3ae9e0043808929344cd1e40bf60a2dc532aac06 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a6125fbd851cc7be9e1a40a7a532088ca64af29c1d030da8066cd3e88db7fd87.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a6125fbd851cc7be9e1a40a7a532088ca64af29c1d030da8066cd3e88db7fd87.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..67669b85177776c8dd3c3a56515d517bbc62b250 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a6125fbd851cc7be9e1a40a7a532088ca64af29c1d030da8066cd3e88db7fd87.wgsl @@ -0,0 +1,55 @@ +enable f16; +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; + +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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 16u && col < 1024u) { value = f32(f32(b1[n_index * 1024u + col])); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 16u) { + let i = (batch * 4u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a62f6b62277fe048d6bac44a25a2e61399e7e2eab103fccd3a23c29a3c827856.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..94caaa605cd85dfadbdb72f49366b2f40ac3ddcf --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a672c3e158716bde7444c8141f3df1da16da739ccdd2eb2ad60f9d42d0775157.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..aa456f658303b9267eb9faab7425cd740bbdc6f5 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a77f14c89662d2d3da8abd8f109667793dc662d307e5e1c61123be753e25437b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8f7e080e8cee8c2acabacf51697ca01fe402a237 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a7b50e8b6e4d56404b6261383f50b3eed4a2a59c3fadaaffcc974575c32a374f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58aa0b8cdce7083ab78ef1d07209c0fb7453bfd4 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a7e730aecc95fc97ac3d1d75720408dcb5a0cf1981e77f0857d532844cc4759f.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a7e730aecc95fc97ac3d1d75720408dcb5a0cf1981e77f0857d532844cc4759f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bc9df10c7315eff3c1e029a09595ffa942c446ca --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a7e730aecc95fc97ac3d1d75720408dcb5a0cf1981e77f0857d532844cc4759f.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 3584u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 3584u) { + let i = (batch * 4u + out_row) * 3584u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a87152b0fd2f78f60d7abb61c2f6c4a9bde8a9dd45d0275b58d760a3da9f71ce.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a411756a9239877ab739c80010eb78b97e1cc130 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a896c93b04922c0f78f1c77fbaabbc79eb71776223748bb32a6d5339e32029e8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a442553393b20f2c68a57efbb6d0eccae8d1c425 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a9f0eef095f015e2099adf81552a6727c45e70fc11f5e50b777d36b6370ab986.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..70a57f24ff695b932429f61024d4f9a7cf194254 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a9f6bc361f1ea31f79f0ef6164872eeb04896a45338871a2d779789b47b1920b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4bd4cd7da7a46d9f8234fcb621a58a1e37822d4c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/a9fa5db20fa8de1de429c6850c3e40ff8180bcdb59373919b84d2438b3b17352.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..44a1dd646db06ca3b9e95fa43d9ecf152f916a44 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/aa227ae49fab3f75d86e02e6f390be785eabfeafe70e77a5c7eb4ad51895e382.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2a2a259f750aef9c48507b8fa223d1c4de2f1364 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/aac6395f039e396767ee10d0ad95d3d6206ad4a5c1e5913dfd5c3cfeaf227510.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..197ac86366a010949ab6555925b7746073f2838b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/ab59825997b5445cdad2655bdde251b89e9844d51709062ea5d29463ae40f9b7.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ab59825997b5445cdad2655bdde251b89e9844d51709062ea5d29463ae40f9b7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..31feccfd028e92b66d0302b2b97965a10c94bdb3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ab59825997b5445cdad2655bdde251b89e9844d51709062ea5d29463ae40f9b7.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 16u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 16u) { + let i = (batch * 64u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0e63cebe9c685e72f2ef3807fe8a83b8853e6dd9 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..74186e66e6477562a7428f1d974871861d33807f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/acba0698721bf4bc71085dc6f7e29fbed08c7af4bc83a45ded7debb3cef930d1.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/acba0698721bf4bc71085dc6f7e29fbed08c7af4bc83a45ded7debb3cef930d1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0d232726b674e54ec446b307d7271888bb8918cb --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/acba0698721bf4bc71085dc6f7e29fbed08c7af4bc83a45ded7debb3cef930d1.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 65536u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 65536u) { + let i = (batch * 16u + out_row) * 65536u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4493ec84a6a3ecaad780645eb74fd1900795ba99 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f6c7872687b7bdd3f9a0ce5853f90ec21d96e2d3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..48686d13bb0682a3b49a3239768a42f4ae4217d8 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/af73c6fc2573e19b70562d3f12e2f20ff7d2e9e552f6fae2bfdd64d12f142e45.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/af73c6fc2573e19b70562d3f12e2f20ff7d2e9e552f6fae2bfdd64d12f142e45.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..eaeb669d6f204dfcb424e536e3ec635baa87eab2 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/af73c6fc2573e19b70562d3f12e2f20ff7d2e9e552f6fae2bfdd64d12f142e45.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 16u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 16u) { + let i = (batch * 4u + out_row) * 16u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/aff7944d5bfb08ba68464175aff84304add088a513c86b80cdbe4e74f36c4b7f.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/aff7944d5bfb08ba68464175aff84304add088a513c86b80cdbe4e74f36c4b7f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..db56da305c311a4aad9ee0083e81af7269035175 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/aff7944d5bfb08ba68464175aff84304add088a513c86b80cdbe4e74f36c4b7f.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 65536u; +if (i >= 65536u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 65536 || token >= 131072) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 65536) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..149a4ba7b993cd3c7a5ae3d437265ae0e1001e0e --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..59029583047b1c87c1e71eb358d7b73fbc8adba5 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..54526e84e0f57f0b27c2e0d57273b25cde83790f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b28ea4a8345a9c9abb2d74bfd620ba5de46616434dbaffdbabf022ea71800839.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9b18092deac8f9ecf759c438a10098e2899a4448 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b2ae1b161c8a6315f8863e47511607027dfe583aac1db4c1626371ddfa0c64e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..d7c92bd3f3a7e5b1883a4c8b38d5e18114b7fd53 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b2b16798cbe94c919025d76b0435afe47966ffdd1ea53ec74a791c03c4709a28.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4d8a5bb75deb878ba50367abeb2220352b270284 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b3bb2905555188f535b6b8bc1d050c142b5fea8222d9ef193466f80aa2c54dea.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6b99413ee370aa1076606344bd7a730d9634394d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a5d1a988399067b52e6658a8d39dcbfac3d81a20 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9977e082147cbcb3bb693d292b2bdfcee26bb38a --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..174ea30cc2482fd8884ac2284af35d964b934cbf --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/b71488c9b47fa85c9dcdbbf9185c31ab819169ab631e1aa901f65e2999c5d22f.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b71488c9b47fa85c9dcdbbf9185c31ab819169ab631e1aa901f65e2999c5d22f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..68cd0341550bad4178f3ef83426d09d045b7b659 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b71488c9b47fa85c9dcdbbf9185c31ab819169ab631e1aa901f65e2999c5d22f.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 1024u; + if (i >= 1024u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 2048u; p += 64u) { acc += f32(b0[(i / 1024u) * 2048u + p]) * unpack_bf16_1((i % 1024u) * 2048u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b75a05038c8d340aa61c4cdf617403ed9df75a05ecb9284c659b456ee9e120cd.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b75a05038c8d340aa61c4cdf617403ed9df75a05ecb9284c659b456ee9e120cd.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ad300da6f1af3bf2cdfbf4fc7fd7d4b5163052ee --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b75a05038c8d340aa61c4cdf617403ed9df75a05ecb9284c659b456ee9e120cd.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@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 >= 65536) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 0) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b935d2b02aa6108e43d19fb2d854577e7f5a552d023b9f8d723a2ae9c4c6251d.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b935d2b02aa6108e43d19fb2d854577e7f5a552d023b9f8d723a2ae9c4c6251d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..98457ff71ccd832f8aadd6d70e0a5271f4155505 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/b935d2b02aa6108e43d19fb2d854577e7f5a552d023b9f8d723a2ae9c4c6251d.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 / 64u; + let row = group.x % 64u; + let kv_head = head / 4u; + for (var d = lane; d < 256u; d += 64u) { q_row[d] = f32(b0[(head * 64u + row) * 256u + d]); } + workgroupBarrier(); + var running_max = -3.4028234663852886e38; + var running_sum = 0.0; + var acc: array; + for (var start = 0u; start < 8192u; start += 1024u) { + let count = min(1024u, 8192u - 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 * 8192u + j]) > -1000.0) { + var dot = 0.0; + for (var d = 0u; d < 256u; d++) { dot += q_row[d] * f32(b1[(((kv_head * 8192u + j) * 256u + d) / 256u) % 8192u * 512u + (((kv_head * 8192u + j) * 256u + d) / 2097152u) % 2u * 256u + (((kv_head * 8192u + j) * 256u + d) / 1u) % 256u * 1u]); } + score = dot * 0.0625 + f32(b3[row * 8192u + 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 * 8192u + j) * 256u + d) / 256u) % 8192u * 512u + (((kv_head * 8192u + j) * 256u + d) / 2097152u) % 2u * 256u + (((kv_head * 8192u + 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 * 64u + row) * 256u + d; + out[i] = f32(acc[c] / running_sum); + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e3d4966600c9fa703e8af8c55e751691948715a --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..70d42d4c763bcca299e524c1695c1ae352353cd9 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/bbe7cf742bbc4d053e33018f81ca9e71a5f66cf38db88df0fe1b4584b27641f0.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bbe7cf742bbc4d053e33018f81ca9e71a5f66cf38db88df0fe1b4584b27641f0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b65c3c5e7920f28a3c0ad4dafb598bd0112252df --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bbe7cf742bbc4d053e33018f81ca9e71a5f66cf38db88df0fe1b4584b27641f0.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 51712u; + if (i >= 51712u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 1024u; p += 64u) { acc += f32(b0[(i / 51712u) * 1024u + p]) * unpack_bf16_1((i % 51712u) * 1024u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bcb78b92dbbfeb212c190e064bc2f9d8e79c201398cf38c9aa62df6fdba94469.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7b4dd957fd1c7e8dcb9f85dae6fcf264becc9365 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bd70e4fc42ac55f0f52612841bcc3f9fe7df5bbb0fc76f94e56a131a92454658.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1eaf48755f6c89edfa173b16d7f022444d1cc0d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bd8a785d4fbf09918f149c7eb5f34bd25f9358bf3412e27799a7c65436c71759.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a6362c1ba2be5818f23846f039d679fea5bafbf3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bda7ebd3bcf25c31938fca1a582e82b972ab742f85f826f085417b0e6f651e60.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4d0f8a39c69d540e4ebe14901bb8411835e15afb --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/bdff377a7f25601150962d7c6dc66a63afe74f5b02fbf9e7b99510931f49593b.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bdff377a7f25601150962d7c6dc66a63afe74f5b02fbf9e7b99510931f49593b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..32628e0fd94f806d2417953add60544ff7db7fe1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/bdff377a7f25601150962d7c6dc66a63afe74f5b02fbf9e7b99510931f49593b.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 16384u; +if (i >= 16384u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 0 || token >= 65536) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 0) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c02ac02d110c0be5d0990d20ab0d8c7a081c74f4e147f083789a203f22fc3258.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cb1e79634a79e0cdf98a873e21b34a8285f58367 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c0b2947798baa198598d75ca0e5dcd31a9fa320499665e34f7bb81d27fc15fb0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bb8b3676ab0dfbc0c5c78d28f96387bc3a721046 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c1096000361a304457865401d6266a640469ca04c0bbfe2eaa657e656b2fca33.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0c6c020c365e592254d9a01952f5a009adc5a22f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c23bee3c3664172bf0a078a96acd2b3ad3136732234975f757d313e696c2c37a.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2d80755364a4fee024c589b10f9f00932c251576 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c24c7e6057a3ab4778def9751ec5123025ec0e36139db626eccc4a9151bc6cc3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ab5764fc85cf04731216d5178e63dfc02d07826a --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c2c806bbe93f09247867b4ace45489a5f2fe3ee67f265418eb7aa71a29880276.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa4df64a06b41dc3305ec748ea504d435a19aa23 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c2e7cdc03edb25ef7a160965c17c559b6ec7e139c145dc7390b73523bacba5bb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa9bac520b006ea9afd50beaa3b3f67aa0df0eef --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c342e2d29647509fe0f6ac1e2dbbe74032dbe9ecd6229c03557b86f160381d2e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e167ce6a7ce9917f434844c31163e81a8ec4800 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c3735f34cafbac42efa5928641cefdaf7277659cc2675a36756bba97240ba5ae.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..68bb70490bf5d2d463fb8fe40f5bec228d3c516f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c3b8a95df30cf49f5ba2a9aa459e227338c340989ea076b9cf7fc3d09ba103a4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22bcefa0ff08fd3a5375ea57e17ff7f0cda1d768 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c3ebed7ebe3d6e1b7b6a880c9f83a5daec2a8d5b56ca687e64b991ac2781ecbd.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c3ebed7ebe3d6e1b7b6a880c9f83a5daec2a8d5b56ca687e64b991ac2781ecbd.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a45fe878446ed9ad435818429a057b88940a3dfc --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c3ebed7ebe3d6e1b7b6a880c9f83a5daec2a8d5b56ca687e64b991ac2781ecbd.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 2048u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 16u && out_col < 2048u) { + let i = (batch * 16u + out_row) * 2048u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7e12c353c29523774d93254e8dc9f119ce04b4fb --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c63f2a23ef5fa1527a4392ae84767c390ca2f2becfa4b0e3da27472161cb508e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c63f2a23ef5fa1527a4392ae84767c390ca2f2becfa4b0e3da27472161cb508e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3292a2c8a38cb32bcd46ed00d176e46e4e914aac --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c63f2a23ef5fa1527a4392ae84767c390ca2f2becfa4b0e3da27472161cb508e.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 3584u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 3584u) { + let i = (batch * 64u + out_row) * 3584u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c83a2a6faf563ec3bbad43a3e108d58c09cd8aeed01b38e4e82d1c3c9b650c21.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..19ed701e6f3435af2e4cac80f2299fec71288328 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c90428425f6d220b441e97e3b894adfb090869c98b17f53afbd2f9fb202b4525.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6bbc472bea9c8d96ae70e94b1ca3e146cd081981 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/c93686edb422c5385c7a6f484e76be0aa5cfa478cc80bc900a707e19fa2de99c.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4dcc7277e51d99d41da8a357860b649d314d34d9 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ca9a3115f8f3881eee99e421cb4f259113b13bb4c107348279bb92c643a52197.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a23bfb9bcccaa79b5dac185105bff8ca820bb74d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f99a31a5530ee04c3f3573c324dd7c6471dc1049 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/cd46a38dce0fbd29ef19e18059f7cba1bb02f51d981552ce87956635c48c8a49.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/cd46a38dce0fbd29ef19e18059f7cba1bb02f51d981552ce87956635c48c8a49.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fb99d124d7179af9213fce1932d409610cdd1677 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/cd46a38dce0fbd29ef19e18059f7cba1bb02f51d981552ce87956635c48c8a49.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 512u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 512u) { + let i = (batch * 4u + out_row) * 512u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..09fcea174bf26710815b865219fd6f9b01ee9aa1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e1885827206d969e4d30ba0cbea1254ed34899aa --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2ed956d555ce10ac3e0cfb4ddb36ebd66e887258 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..a2aecdb17ed7acc593c2fb1336efc680b5b06fe2 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8dc4e37b9ab18460e2948a94be384c7507b4a40b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d4c80950a743190f3c54e4675a4fb139edf142a4737c55d803326c1a1cedcc2e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d4c80950a743190f3c54e4675a4fb139edf142a4737c55d803326c1a1cedcc2e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22592bb6be29c49767f5012f185f69bd03d17d7c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d4c80950a743190f3c54e4675a4fb139edf142a4737c55d803326c1a1cedcc2e.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@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 < 65536 || token >= 131072) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 65536) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..953be222dbeeda53732439dbfe62aa874ef12d4f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d881e662b64a4fcdda68b212a361c61be3e0460cb55b31fbe0c5ff603aafc222.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d881e662b64a4fcdda68b212a361c61be3e0460cb55b31fbe0c5ff603aafc222.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..40a35c66737d9c829694548a5f2f58ac8864fe13 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d881e662b64a4fcdda68b212a361c61be3e0460cb55b31fbe0c5ff603aafc222.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 * 2048u; + if (i >= 2048u) { return; } + let token = (i / 256u) % 4u; + let outer = i / 1024u; + let destination = outer * 2097152u + u32(b1[token]) * 256u + i % 256u; + out[((destination) / 256u) % 8192u * 512u + ((destination) / 2097152u) % 2u * 256u + ((destination) / 1u) % 256u * 1u] = f32(b0[i]); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2b2fd35974b2d0fe841a8a268a0226630737a60e --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b9628d2da46062848c07bc2e3b01760e87d55275 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..499822f6fd09e951de9b6f6961f497b337bb638b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..0e13dfcb4085c03a943bab386ba2afe5e2a6133c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/dd544e5a005b68617e9a3557e1d24dd6282a5a62f47cae4cc41b619d3a1cd603.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ea5b4f2a12f5be394f09aff8d9d7d412604cad2b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/de276eae1430ed164ae977ce4b005301ea0f2652bed1f879acb3a355e600ff5e.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..684e67f205ed8e5d2b379a1b312f0339ea744c07 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/de4b2b6e4d6c225d58c25261df5c8f73711c3bbbd04a31d1ea5c5bffc827c6e9.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4f2bf7e4c7efd7610ae86a151b04332e7a137cb4 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/de7efdc3cd555123c3f2c757ac2dcae8a7b0514faa5f6b4e36db201876cb7154.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/de7efdc3cd555123c3f2c757ac2dcae8a7b0514faa5f6b4e36db201876cb7154.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7eb992073d1653b705b5af0625c3b5e60b3421e1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/de7efdc3cd555123c3f2c757ac2dcae8a7b0514faa5f6b4e36db201876cb7154.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 64>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 64u; + var acc: array, 4>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 6144u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 4u; r++) { + let a_value = tile_a[local.y * 4u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 4u; r++) { + let out_row = tile_row + local.y * 4u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 64u && out_col < 6144u) { + let i = (batch * 64u + out_row) * 6144u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/deb451a300a279d0325fe3be090515d4daae6b3232d87b8e2c050991388ac00f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2373549cc794fa4438a3c1e3ac3320d217d2de1c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/deee894ecb86334ff82870260fc5edbc36439c1d3bce09fab5708c03d699b390.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..edaf6eca29e64fa2e4a563af4eaf9fe76bfb99b7 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e01dc46d731ca9d3358814482da28b4edb8496243937be85ddde86a02a215169.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5bc58ca8a83e46e3403c1f4ea7a6fd95358ac3d0 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e1866b6254f7909c12ae9d54062b0ecf0067d708abb37c1e051ef870bd2203d7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6e0d70a003b0ae9ebc255496a061f374428e3953 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e1f9d4a00c3f7503a07a007016c8d5c290b387b03f8fb7fbd65d5ac662a7b9dd.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e1f9d4a00c3f7503a07a007016c8d5c290b387b03f8fb7fbd65d5ac662a7b9dd.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7dd70825a2f741b63eb87099bba04bfffd19572b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e1f9d4a00c3f7503a07a007016c8d5c290b387b03f8fb7fbd65d5ac662a7b9dd.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; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 4096u; +if (i >= 4096u) { return; } +let token = i32(b0[i / 1024u]); +if (token < 0 || token >= 65536) { out[i] = f32(0.0); return; } +out[i] = f32(unpack_bf16_1(u32(token - 0) * 1024u + i % 1024u)); +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e23f8d0e93dd1cec22eea5c04988cc373462885008c37beb9e5f012773c6af1f.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e23f8d0e93dd1cec22eea5c04988cc373462885008c37beb9e5f012773c6af1f.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..5888b024d6312049693e552cd2cdaa1d267bf4ac --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e23f8d0e93dd1cec22eea5c04988cc373462885008c37beb9e5f012773c6af1f.wgsl @@ -0,0 +1,25 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var partial: array; +@compute @workgroup_size(64) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let i = group.x + group.y * 6144u; + if (i >= 6144u) { return; } + let lane = local.x; + var acc = 0.0; + for (var p = lane; p < 1024u; p += 64u) { acc += f32(b0[(i / 6144u) * 1024u + p]) * unpack_bf16_1((i % 6144u) * 1024u + p); } + partial[lane] = acc; + workgroupBarrier(); + for (var stride = 32u; stride > 0u; stride /= 2u) { + if (lane < stride) { partial[lane] += partial[lane + stride]; } + workgroupBarrier(); + } + if (lane == 0u) { out[i] = f32(partial[0] + 0.0); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..2eb119d2449221b9b8bace6cfb92a13e33a3c95c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3d2f9b253a6b9d0335cd3b020fa078163eb347a6 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e6335bafac0bd6898ec4705df8aa318a3c5e4ee0f6c306b40ebb8a727723ad08.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e6335bafac0bd6898ec4705df8aa318a3c5e4ee0f6c306b40ebb8a727723ad08.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..3d32e24c698b08be0f4fb385164cf83f724d3ac7 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e6335bafac0bd6898ec4705df8aa318a3c5e4ee0f6c306b40ebb8a727723ad08.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 51712u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 51712u) { + let i = (batch * 4u + out_row) * 51712u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1cca9e30814dd2231912899d446310b2c59b8009 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..46d7c7b355ee64e20cfeead625b246a385c60d9b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c061788bda0478004560218a522ad6db46d1c40e --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9737295d6a724ac96efb6c84473f524d0f8dcb5f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f47eaba34fc23b6975aa31bc0c00044a984a7861 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..22f89afc566d4ca07eaa1dbc2cd6483d7a06aa71 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..bb856b01379609571713742a1c1896a7bff7fa7a --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl @@ -0,0 +1,16 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var b2: array; +@group(0) @binding(3) var b3: array; +@group(0) @binding(4) var out: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) gid: vec3) { +let i = gid.x + gid.y * 3973120u; +if (i >= 3973120u) { return; } +let coord = (i / 1u) % 248320u; +if (coord >= 0u && coord < 65536u) { out[i] = f32(b0[(i / 248320u) * 65536u + (coord - 0u) * 1u + i % 1u]); } +if (coord >= 65536u && coord < 131072u) { out[i] = f32(b1[(i / 248320u) * 65536u + (coord - 65536u) * 1u + i % 1u]); } +if (coord >= 131072u && coord < 196608u) { out[i] = f32(b2[(i / 248320u) * 65536u + (coord - 131072u) * 1u + i % 1u]); } +if (coord >= 196608u && coord < 248320u) { out[i] = f32(b3[(i / 248320u) * 51712u + (coord - 196608u) * 1u + i % 1u]); } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ecc20df40ca1f8b1a94060bd2ee01b15b768dac8eace56333030fb9af03a01bd.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ecc20df40ca1f8b1a94060bd2ee01b15b768dac8eace56333030fb9af03a01bd.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..265cca8d2b15db1f15ed492cc237e07bf883ab74 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ecc20df40ca1f8b1a94060bd2ee01b15b768dac8eace56333030fb9af03a01bd.wgsl @@ -0,0 +1,59 @@ +@group(0) @binding(0) var b0: array; +@group(0) @binding(1) var b1: array; +@group(0) @binding(2) var out: array; +fn unpack_bf16_1(index: u32) -> f32 { + let pair = b1[index / 2u]; + let bits = (pair >> ((index % 2u) * 16u)) & 65535u; + return bitcast(bits << 16u); +} + +var tile_a: array, 16>; +var tile_b: array, 16>; +@compute @workgroup_size(16, 16) +fn main(@builtin(workgroup_id) group: vec3, @builtin(local_invocation_id) local: vec3) { + let lane = local.y * 16u + local.x; + let batch = group.z; + let tile_n = group.x * 64u; + let tile_row = group.y * 16u; + var acc: array, 1>; + for (var k0 = 0u; k0 < 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; + } + for (var e = 0u; e < 4u; e++) { + let n_local = lane / 4u; + let k_local = (lane % 4u) * 4u + e; + let n_index = tile_n + n_local; + let col = k0 + k_local; + var value = 0.0; + if (n_index < 65536u && col < 1024u) { value = f32(unpack_bf16_1(n_index * 1024u + col)); } + tile_b[k_local][n_local] = value; + } + workgroupBarrier(); + for (var kk = 0u; kk < 16u; kk++) { + var b_values: array; + for (var c = 0u; c < 4u; c++) { b_values[c] = tile_b[kk][local.x * 4u + c]; } + for (var r = 0u; r < 1u; r++) { + let a_value = tile_a[local.y * 1u + r][kk]; + for (var c = 0u; c < 4u; c++) { acc[r][c] += a_value * b_values[c]; } + } + } + workgroupBarrier(); + } + for (var r = 0u; r < 1u; r++) { + let out_row = tile_row + local.y * 1u + r; + for (var c = 0u; c < 4u; c++) { + let out_col = tile_n + local.x * 4u + c; + if (out_row < 4u && out_col < 65536u) { + let i = (batch * 4u + out_row) * 65536u + out_col; + out[i] = f32(acc[r][c] + 0.0); + } + } + } +} diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/edfa4ff396bf5cc3be28d9051639c4dda6fec1302d7a2bd34d89ec903af94af1.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..fa04fd0adecdb9f18898bad16cb516ccdf4bf468 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/eea033222d278c8aa8f4b0de36243adba4e5b6ce274d24a3dcd365ad42c19a38.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7dd035a2b7b4ce728303f33a2f815174cbedc865 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ef364f47cced448917d1b6842c708dee101d53d7a781014f9a822214cea72bf8.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..7b1a3f0dff8b91f244bd9f20ffde6873033a24df --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/ef9aa0463882f8482e3a4e9ee97d5101a06c94645292cfdcf2deeff81ee4a284.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..f3e0c0c3178577855935a47c94b1fbace824ff39 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/efcecdf33b6927a4add3f254d95cad6d18d755d65e3f4873e8b7f5c057646a9b.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..e7ff2c1c7d2a5c72bbf52908e3a4a89766434990 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f114c5cb9f1a7e377d9a3bcb28ab15b72807ece1796cf9c02fc74e7ce7318cc3.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..71fee4a974a4ef03d91dd3ce0680762c347a9577 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f233dea95d020538ac476af9846f67cba0d137fd562d5f652cb333f0b3273c76.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..63d1ffd2bc103e1a26f56ca1d5c9ff8519c692ac --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f23ccedb2e02f7ccd40a4171c0a1ced4c4e7eec4dc1ed9604f668f691baa68e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..8ea3a882fbad7969825ed46025244690e2dd7b52 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f276cf6656b999339df464b61934487f5c8eb7a0957cf6d902254ab1aa2ffcd0.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..15382fc197ef648b58ce80bf82efcabed936514c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f2ee90b3d949141c23610237d27d44a7b833aacae8cdbc2e42a595d5eb7b5537.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..514e64a95d7576a978b5e3abc375ffb22297bc66 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f43cdd9c75fc256957b1b144a0587e8c8ddea861f991e1cdb6c9098e8b5d6ed7.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..b2f14ad5c01e9efb2e5f7424d8124543f564a86d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f45156a1c571e56cf0730c88fcd58dbb5716b2cea086ebb9e0dfedfe5dcbf658.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..ce3525f2123ee5d4f25f699881ad39286c38f693 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f5b51b1e0e52bd87a70a0ca169186ebb5734cbdc2b8f375ba0241485b1df4e66.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..92790934326cbc014348566d54624e3d2d8a85c1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f5e16141122c02a1ec56f8155742fd5314ab581eac810352c06abea3f9c57690.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..011b9989a7cfd50ed05b4fbde19f90b64aa84b20 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f5f6f056866d42771d34664166a72300424224e9d6bd1d57de1805e7476a2050.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..4e61151db275d2deac9f983bd165d506d746f384 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f66b0b2ea4229895bb6599fb5d3528be17eb9020c19829b54dd0fbb4d4857039.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..1fe067e9574b327c21206e0e5535bc398f54ff1b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f84306aa81033babc4c37ecfb91a411dba2ccee17202615deefb2206add106e2.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..58968344810b5ec1eb718ef062079a8fd93b02a0 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f8460b61ea8ab5946764c8a8fa3a6aa4a51c4db1e30f5f1d3e3f0f2f1635a964.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..410788b08c259098da3f2a160cb88a04812a90f1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f95724b4a3d2dbafaccd23a45f68234bb49e4a39168942060ca628960993f33d.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..9e09a0405b65767fdf150265f0573fa5737b5356 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/f994142054bcb47d6a554524dd8de9c3054467a1d07011027c47f475d0909c19.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..cf15e04cdeba75c873e80fc764f945a9f56b3a48 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/fa7c163b443e5f494b83f24da518fcad3e353d6e85facc3e3478f6005f964bd6.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..c9ea63d0ef2a33525ebd5156d578b4ceaf2ede3f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/fa90a055381629df20c59052b5e44670510dd1666b9f2b06a554dfed9a002953.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..6f74d6d41b23067fa00cf713cb503945fad5fe53 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl b/qwen35-08b-fp32-8k-token-major-home-v4/kernels/fb200142bcbd435ed588a9fc45924edb21845ff3ab0ddb0271c5d5d03adf04bb.wgsl new file mode 100644 index 0000000000000000000000000000000000000000..247b70d7c24a44a2a389531aeedf176cc171389c --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/manifest.json b/qwen35-08b-fp32-8k-token-major-home-v4/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..7e170d32b675ad5730b98cdfd01925871cfd2a46 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/manifest.json @@ -0,0 +1,2161 @@ +{ + "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": [ + "shader-f16" + ], + "assets": [ + { + "path": "weights/00000.bin", + "byteLength": 67108864, + "sha256": "998effe0875f489e58eb9592d73a2a2ef51b627520bd119524651c8ffc886282" + }, + { + "path": "weights/00001.bin", + "byteLength": 67108864, + "sha256": "7b669e08c1c1103797bd533fad1d52fe36b3f1293db9d09065ec24c7c5f2db8d" + }, + { + "path": "weights/00002.bin", + "byteLength": 67108864, + "sha256": "a281c127a0a9bf7f5498534c1a350d922f251e19343c303e70663486d609260e" + }, + { + "path": "weights/00003.bin", + "byteLength": 67108864, + "sha256": "1b4b102afabd0edfc06a42c1c14f6cc459e9e1e2cf0b8193fc5aa3046c04cc76" + }, + { + "path": "weights/00004.bin", + "byteLength": 67108864, + "sha256": "6480b9ca38668264d75fbc1ecdd78870fe1a8b95835f485c5543d11e2abbbe1f" + }, + { + "path": "weights/00005.bin", + "byteLength": 67108864, + "sha256": "c8f2a7532918fb3acc76952b3e685030c001abdae0b74ab41fc84c64a4ab8c2e" + }, + { + "path": "weights/00006.bin", + "byteLength": 67108864, + "sha256": "54fa18728d34cb3f67db0c70064574e8f34b786d9bf5d92e61241472e1249aa4" + }, + { + "path": "weights/00007.bin", + "byteLength": 67108864, + "sha256": "89edafc7a5ed368e67498221df821521c36df98216fcf4e55efbd3d8e2925725" + }, + { + "path": "weights/00008.bin", + "byteLength": 67108864, + "sha256": "a3c121fb272ea2306e4f313d8d14d941acdc030c3dd1a0029656d1a531cb87de" + }, + { + "path": "weights/00009.bin", + "byteLength": 67108864, + "sha256": "3511e2b1256753a76c8dce0b301af2dc1071233dc694fd5fbb19bf37f2e992f5" + }, + { + "path": "weights/00010.bin", + "byteLength": 67108864, + "sha256": "518e9e81ea59d4ad6da3ad3b107b42b2c17c5c1935d33424073794de62847548" + }, + { + "path": "weights/00011.bin", + "byteLength": 67108864, + "sha256": "d9dcd32dedee1956567f92c12f4c9f0bff8b5d88e69cf2963e406707fcdde8f2" + }, + { + "path": "weights/00012.bin", + "byteLength": 67108864, + "sha256": "b248952306849f7b94d99efae7c6703ec48d4bab5717140bb864344be587c5ba" + }, + { + "path": "weights/00013.bin", + "byteLength": 67108864, + "sha256": "559f58d778fe79454327bb05db60f5911723e106175ab6b7b8214a0c9a401d10" + }, + { + "path": "weights/00014.bin", + "byteLength": 67108864, + "sha256": "a8265d03dcdf21a6040e933173abdbde052960b91fb834fd386782b7a71123dc" + }, + { + "path": "weights/00015.bin", + "byteLength": 67108864, + "sha256": "edac7465eb4dc1fb754e17a517328331fb76165d30e4925c5a345935361f33cf" + }, + { + "path": "weights/00016.bin", + "byteLength": 67108864, + "sha256": "815838a4b921976173d49ecec34dd995f68c9a8d62d86c90f635f482468f9fc7" + }, + { + "path": "weights/00017.bin", + "byteLength": 67108864, + "sha256": "9db5b7bcb57015e804c05f391e29ab599a10c0c8d9fd91a6f5b0e64f3f4695e8" + }, + { + "path": "weights/00018.bin", + "byteLength": 67108864, + "sha256": "57f31013804f939e60b1856f07265484e76a038b9b71728a08c2970566fabc02" + }, + { + "path": "weights/00019.bin", + "byteLength": 67108864, + "sha256": "985b56623a1989be873d6e3458f4cf7fb1cd21c00d319bce9afb54f77f787a6c" + }, + { + "path": "weights/00020.bin", + "byteLength": 67108864, + "sha256": "e5ddd4cbcc01765e6e6efd910e2da17e492930380311e1b48723f2f2414c8b41" + }, + { + "path": "weights/00021.bin", + "byteLength": 67108864, + "sha256": "e6621c8b4a8484c7cc9bd88ea284fade9b089924da845f7689068d23187c6154" + }, + { + "path": "weights/00022.bin", + "byteLength": 29388160, + "sha256": "290b5a723f4e7abd52ec22861f0e98b08a826f0be9c054184d419aca31d42602" + }, + { + "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": "entrypoints/prefill-16.json", + "byteLength": 8020698, + "sha256": "e4dd49e31d8c30d465dd5d091d1b0c16344df9a00ddc07152e769eba9fc92095" + }, + { + "path": "entrypoints/prefill-4.json", + "byteLength": 8017203, + "sha256": "27e05a85fc6843943f940218c476322808dbbac0eb346259f81b594a75e2685b" + }, + { + "path": "entrypoints/prefill-64.json", + "byteLength": 8022362, + "sha256": "4a988d4be3e295497cee0f36643843705c6000d75e3195284ac45695f980d95e" + }, + { + "path": "graph.json", + "byteLength": 10469557, + "sha256": "4f7ea71a1d7233e495aa99c71b55cbba9d7a7eb1a1aa903c02b1330dbb4aae41" + }, + { + "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/023819300ee6a01662b5df838f1d51e4b5a820f3f4401bb1ea433dd30a6b1ee8.wgsl", + "byteLength": 2404, + "sha256": "023819300ee6a01662b5df838f1d51e4b5a820f3f4401bb1ea433dd30a6b1ee8" + }, + { + "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/0554a443ecf6ead32fd2d58178b9ce3c592c89a09b3f63fa509ee947323bb497.wgsl", + "byteLength": 399, + "sha256": "0554a443ecf6ead32fd2d58178b9ce3c592c89a09b3f63fa509ee947323bb497" + }, + { + "path": "kernels/0680219da63feb9bb85653407739c5e5cc93ed6ca0971c1b03c512068d97f69f.wgsl", + "byteLength": 858, + "sha256": "0680219da63feb9bb85653407739c5e5cc93ed6ca0971c1b03c512068d97f69f" + }, + { + "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/0f466ed2664d77386f48afd19d8ab2734312bfd4f5f4d5b063d801a0b0a97cd9.wgsl", + "byteLength": 396, + "sha256": "0f466ed2664d77386f48afd19d8ab2734312bfd4f5f4d5b063d801a0b0a97cd9" + }, + { + "path": "kernels/0f943f386d2f37a8e56b4285b26e1c093c2f2fa2a5ce81cc43c44cc9bb0137f5.wgsl", + "byteLength": 386, + "sha256": "0f943f386d2f37a8e56b4285b26e1c093c2f2fa2a5ce81cc43c44cc9bb0137f5" + }, + { + "path": "kernels/0fbc9484ef8ca703ced4ffd123f1ae733c44556b6cb160ee803b820ff5ec867d.wgsl", + "byteLength": 411, + "sha256": "0fbc9484ef8ca703ced4ffd123f1ae733c44556b6cb160ee803b820ff5ec867d" + }, + { + "path": "kernels/0fd78c192784ba4e545091262cf1bac47ef69ca387b850f97b9de39dd0a2a741.wgsl", + "byteLength": 1017, + "sha256": "0fd78c192784ba4e545091262cf1bac47ef69ca387b850f97b9de39dd0a2a741" + }, + { + "path": "kernels/10feb208ed0549389f54419ff8985bee4778276913d4c6a613a8b120a809ab5e.wgsl", + "byteLength": 1025, + "sha256": "10feb208ed0549389f54419ff8985bee4778276913d4c6a613a8b120a809ab5e" + }, + { + "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/123232b7131301cfaa5ecccbaafc9f6c88fff84243969080a6fd194afd9c81d7.wgsl", + "byteLength": 663, + "sha256": "123232b7131301cfaa5ecccbaafc9f6c88fff84243969080a6fd194afd9c81d7" + }, + { + "path": "kernels/1255847146b31732939e573cdb26c483358c1ce07f987bd8c3d3d69ae8c7e141.wgsl", + "byteLength": 380, + "sha256": "1255847146b31732939e573cdb26c483358c1ce07f987bd8c3d3d69ae8c7e141" + }, + { + "path": "kernels/12cbaa151e326823e292ec43eff7eebe110ddd8c2c91b7a2a16e3fd5b04d0d44.wgsl", + "byteLength": 663, + "sha256": "12cbaa151e326823e292ec43eff7eebe110ddd8c2c91b7a2a16e3fd5b04d0d44" + }, + { + "path": "kernels/13237b557466d2fef5bfbc74e7ac77219b9821a53bc0843dbb5d14db8b04d414.wgsl", + "byteLength": 308, + "sha256": "13237b557466d2fef5bfbc74e7ac77219b9821a53bc0843dbb5d14db8b04d414" + }, + { + "path": "kernels/1326034f3abab37629cd88f869d1b0bafcde724f85c07904b54feaaf71d89c62.wgsl", + "byteLength": 2298, + "sha256": "1326034f3abab37629cd88f869d1b0bafcde724f85c07904b54feaaf71d89c62" + }, + { + "path": "kernels/13b21d545c5faeef63cf8abb9ed9e6fcf7570f89a2bafe37db25a1645d769f77.wgsl", + "byteLength": 2404, + "sha256": "13b21d545c5faeef63cf8abb9ed9e6fcf7570f89a2bafe37db25a1645d769f77" + }, + { + "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/15b4ee3a9b5df59d5213e59951d8874f4eb4b9132e04fc2febddad84b44277f5.wgsl", + "byteLength": 1021, + "sha256": "15b4ee3a9b5df59d5213e59951d8874f4eb4b9132e04fc2febddad84b44277f5" + }, + { + "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/19057cf6347aecb2d66310a8e0e32bfbff136fe20c3fd7cb7c5ff83648104e0b.wgsl", + "byteLength": 2407, + "sha256": "19057cf6347aecb2d66310a8e0e32bfbff136fe20c3fd7cb7c5ff83648104e0b" + }, + { + "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/1cf0f29174a8a5f710e24cd578f75526e7126049c1ca0453d6dd7d8436a8dbd8.wgsl", + "byteLength": 2407, + "sha256": "1cf0f29174a8a5f710e24cd578f75526e7126049c1ca0453d6dd7d8436a8dbd8" + }, + { + "path": "kernels/1d0cbb068fe17123e646934bfa1259f19e5db04e45d72a157d3ea4fa48c81aa0.wgsl", + "byteLength": 406, + "sha256": "1d0cbb068fe17123e646934bfa1259f19e5db04e45d72a157d3ea4fa48c81aa0" + }, + { + "path": "kernels/1d7df24388934e162899442d3cc6c6576791aac9f1a5dff86766d840f08fd46e.wgsl", + "byteLength": 417, + "sha256": "1d7df24388934e162899442d3cc6c6576791aac9f1a5dff86766d840f08fd46e" + }, + { + "path": "kernels/1de72cdc3e9b7d7fe7f668306ffb52288de99007d8d5c0104e8f9bff57e7b2bc.wgsl", + "byteLength": 2400, + "sha256": "1de72cdc3e9b7d7fe7f668306ffb52288de99007d8d5c0104e8f9bff57e7b2bc" + }, + { + "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/2193bd453e28cdc6c4ebdd1b1ba551dcca677f418d0db9b30f88dba6dd4d8266.wgsl", + "byteLength": 654, + "sha256": "2193bd453e28cdc6c4ebdd1b1ba551dcca677f418d0db9b30f88dba6dd4d8266" + }, + { + "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/257d14a50aa8bef603db8c5ed030f35b5e984a738e9c8b9e18374ba96c500581.wgsl", + "byteLength": 607, + "sha256": "257d14a50aa8bef603db8c5ed030f35b5e984a738e9c8b9e18374ba96c500581" + }, + { + "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/297d919a7f16e7a8f53ead59400ba9f7a182ab28ee45e5e8beb4b6554d97e541.wgsl", + "byteLength": 603, + "sha256": "297d919a7f16e7a8f53ead59400ba9f7a182ab28ee45e5e8beb4b6554d97e541" + }, + { + "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/2eeb54034621ff097879064a60fd4e0dd5d68201e48296ad234413a39579acc8.wgsl", + "byteLength": 409, + "sha256": "2eeb54034621ff097879064a60fd4e0dd5d68201e48296ad234413a39579acc8" + }, + { + "path": "kernels/303c6a6f705d1bec1fb4e5110375e8d71869409845867a24556b13b67d7d819e.wgsl", + "byteLength": 2404, + "sha256": "303c6a6f705d1bec1fb4e5110375e8d71869409845867a24556b13b67d7d819e" + }, + { + "path": "kernels/3087f59456d6581e7cdad1a14086af53281e39d2041a6a93387ba6e1daf5f9cb.wgsl", + "byteLength": 421, + "sha256": "3087f59456d6581e7cdad1a14086af53281e39d2041a6a93387ba6e1daf5f9cb" + }, + { + "path": "kernels/3203e08f2c99fa4848f553739b7115a7c677840344f17b1d4391d6130517f5a7.wgsl", + "byteLength": 285, + "sha256": "3203e08f2c99fa4848f553739b7115a7c677840344f17b1d4391d6130517f5a7" + }, + { + "path": "kernels/32a5027cac5dd969d63fe5d5c88d7c87abb600c43ad1d70e1c56615ea781eff3.wgsl", + "byteLength": 422, + "sha256": "32a5027cac5dd969d63fe5d5c88d7c87abb600c43ad1d70e1c56615ea781eff3" + }, + { + "path": "kernels/32cb7d055e8ecf035e10d05724e64544393bd3916079992a3d8dce427bb14181.wgsl", + "byteLength": 468, + "sha256": "32cb7d055e8ecf035e10d05724e64544393bd3916079992a3d8dce427bb14181" + }, + { + "path": "kernels/33e8ec04c66adb4988f562f0f9d3e92d29dfda91a56d0ed62be598c7c737f5ba.wgsl", + "byteLength": 411, + "sha256": "33e8ec04c66adb4988f562f0f9d3e92d29dfda91a56d0ed62be598c7c737f5ba" + }, + { + "path": "kernels/34d203bcb0ba5a9dd297ebd0605f8f6c91fa506d0f0e2a0d465322f1291828cc.wgsl", + "byteLength": 2398, + "sha256": "34d203bcb0ba5a9dd297ebd0605f8f6c91fa506d0f0e2a0d465322f1291828cc" + }, + { + "path": "kernels/3560fe2bb07bf6fb92598b9f9c006029892f16dcb55b418973ed89b2b5086b1b.wgsl", + "byteLength": 394, + "sha256": "3560fe2bb07bf6fb92598b9f9c006029892f16dcb55b418973ed89b2b5086b1b" + }, + { + "path": "kernels/359b156a7dd14477468fa345b5d5448d4b787cb92a1a165bf5d009d169cd3789.wgsl", + "byteLength": 665, + "sha256": "359b156a7dd14477468fa345b5d5448d4b787cb92a1a165bf5d009d169cd3789" + }, + { + "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/394270fab51925dcdf7ca12f6e279ebff72f3b74b3eab00835a912565a5f282a.wgsl", + "byteLength": 2404, + "sha256": "394270fab51925dcdf7ca12f6e279ebff72f3b74b3eab00835a912565a5f282a" + }, + { + "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/3daeb9cba5c07ed47ac55e1c2565aa82f7d8e8409037707e7339d1d96d122144.wgsl", + "byteLength": 553, + "sha256": "3daeb9cba5c07ed47ac55e1c2565aa82f7d8e8409037707e7339d1d96d122144" + }, + { + "path": "kernels/3e34409407100d4858c4c109cf62f3eaf2f4c6081166b0ec8679105e6dfbe7fe.wgsl", + "byteLength": 309, + "sha256": "3e34409407100d4858c4c109cf62f3eaf2f4c6081166b0ec8679105e6dfbe7fe" + }, + { + "path": "kernels/3ea275cc11d4d81274b1987190ff6d57c804ff9a5f7fed7dee8c61b19a4c100b.wgsl", + "byteLength": 853, + "sha256": "3ea275cc11d4d81274b1987190ff6d57c804ff9a5f7fed7dee8c61b19a4c100b" + }, + { + "path": "kernels/3f89d19bd6791657fa702ad00a0517b5f292dbf7d0c196bd5b21c949476d23fd.wgsl", + "byteLength": 497, + "sha256": "3f89d19bd6791657fa702ad00a0517b5f292dbf7d0c196bd5b21c949476d23fd" + }, + { + "path": "kernels/3fa1efae6d90015ba69cb40cef009f49ad7f7a960018fb92a962707deff4f09e.wgsl", + "byteLength": 286, + "sha256": "3fa1efae6d90015ba69cb40cef009f49ad7f7a960018fb92a962707deff4f09e" + }, + { + "path": "kernels/40f115c8647a238bfb3ccb0bb8446bccdc94a0dfadc89111c4920efb2259f41d.wgsl", + "byteLength": 410, + "sha256": "40f115c8647a238bfb3ccb0bb8446bccdc94a0dfadc89111c4920efb2259f41d" + }, + { + "path": "kernels/413a0717b830335decd89485fab5fbea4efeb71338961ba7a2d1221eaa45459a.wgsl", + "byteLength": 1025, + "sha256": "413a0717b830335decd89485fab5fbea4efeb71338961ba7a2d1221eaa45459a" + }, + { + "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/45a1fd3ed514f208718651026bf2ee30dda66b02cdd950dc71e88eb6bdac0b10.wgsl", + "byteLength": 365, + "sha256": "45a1fd3ed514f208718651026bf2ee30dda66b02cdd950dc71e88eb6bdac0b10" + }, + { + "path": "kernels/466959b3cf0d274924151bdd80808e8451f9d8c2aac1455a44f26fa6d8b44fd0.wgsl", + "byteLength": 421, + "sha256": "466959b3cf0d274924151bdd80808e8451f9d8c2aac1455a44f26fa6d8b44fd0" + }, + { + "path": "kernels/48608b2b7bfbe0b65d9e2d82a94a76683315421acb1bf168b4baf14a3c139f76.wgsl", + "byteLength": 288, + "sha256": "48608b2b7bfbe0b65d9e2d82a94a76683315421acb1bf168b4baf14a3c139f76" + }, + { + "path": "kernels/48993912a2c9fc9ef3de82e0d261a4c0c5ccf8db6173becb0eab6dfec79506d3.wgsl", + "byteLength": 3560, + "sha256": "48993912a2c9fc9ef3de82e0d261a4c0c5ccf8db6173becb0eab6dfec79506d3" + }, + { + "path": "kernels/498a174fffd6f832a174878f459b82a28c92b9171b6bf764dc1cee4bb8c70463.wgsl", + "byteLength": 2404, + "sha256": "498a174fffd6f832a174878f459b82a28c92b9171b6bf764dc1cee4bb8c70463" + }, + { + "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/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/50aef42c02669a8ac404ef0462cd579d12811e0d0d551eaf9b44d64540129ef3.wgsl", + "byteLength": 665, + "sha256": "50aef42c02669a8ac404ef0462cd579d12811e0d0d551eaf9b44d64540129ef3" + }, + { + "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/53d6eb0b5e6d49bfd3bb9fd1b781e13317adf528e047da2416e95f5a3a13b1b4.wgsl", + "byteLength": 381, + "sha256": "53d6eb0b5e6d49bfd3bb9fd1b781e13317adf528e047da2416e95f5a3a13b1b4" + }, + { + "path": "kernels/552c2f036a125363ca85fd7ea5b1a84465b562dc62ddfffdbaaebf6e3288d321.wgsl", + "byteLength": 663, + "sha256": "552c2f036a125363ca85fd7ea5b1a84465b562dc62ddfffdbaaebf6e3288d321" + }, + { + "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/573f3b2e5ee98d46aed64bc3cd0f54b067351c7ff583fe5bb2d2dffcdd5744c6.wgsl", + "byteLength": 610, + "sha256": "573f3b2e5ee98d46aed64bc3cd0f54b067351c7ff583fe5bb2d2dffcdd5744c6" + }, + { + "path": "kernels/579685c7f8ca260bd53d1677c43d5fc9a0133c81c7442ffb31daf0c3759267c4.wgsl", + "byteLength": 1025, + "sha256": "579685c7f8ca260bd53d1677c43d5fc9a0133c81c7442ffb31daf0c3759267c4" + }, + { + "path": "kernels/57c5796344c26b430493a3a63dc734d4206380ba89484294f50f67d615eefcf8.wgsl", + "byteLength": 663, + "sha256": "57c5796344c26b430493a3a63dc734d4206380ba89484294f50f67d615eefcf8" + }, + { + "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/5adf40822be73f2c85ed1c73c0bd106707e33fcb0e8d1e82a643474b8bfeceeb.wgsl", + "byteLength": 1029, + "sha256": "5adf40822be73f2c85ed1c73c0bd106707e33fcb0e8d1e82a643474b8bfeceeb" + }, + { + "path": "kernels/5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd.wgsl", + "byteLength": 397, + "sha256": "5c22e6f60217881c0351e38d19057626a6c2292771c1a83816995245777ac2fd" + }, + { + "path": "kernels/5c4b719d60faac93fd472b6215116171aca220a7e6b1485a40b837f2baa73ac0.wgsl", + "byteLength": 3560, + "sha256": "5c4b719d60faac93fd472b6215116171aca220a7e6b1485a40b837f2baa73ac0" + }, + { + "path": "kernels/5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4.wgsl", + "byteLength": 554, + "sha256": "5c9a5ae6121b3b10611e09e5f1bc563b70191f2506a2afc0f32de823a9d2dac4" + }, + { + "path": "kernels/5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51.wgsl", + "byteLength": 556, + "sha256": "5cf28cf1e0aa6d5f0ce563a179880681416b707a70113119e68f1d62dc368c51" + }, + { + "path": "kernels/5deb9fd7f32d4a79114945257126164c9a72f6193b6381828bcb2dc30097bcba.wgsl", + "byteLength": 2400, + "sha256": "5deb9fd7f32d4a79114945257126164c9a72f6193b6381828bcb2dc30097bcba" + }, + { + "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/68997a509e9f40d5bc3934af3d632fba866e606e9d17c6f9add1dc8a7fb82322.wgsl", + "byteLength": 665, + "sha256": "68997a509e9f40d5bc3934af3d632fba866e606e9d17c6f9add1dc8a7fb82322" + }, + { + "path": "kernels/691af757595593839af5e5e97ee656472f6e7c7406f57d1d9faae74816d9fc91.wgsl", + "byteLength": 503, + "sha256": "691af757595593839af5e5e97ee656472f6e7c7406f57d1d9faae74816d9fc91" + }, + { + "path": "kernels/69c960fc13daca7f9c1adfe59de570bbd9f993a99fcc7f96de4cfe5441cf8467.wgsl", + "byteLength": 950, + "sha256": "69c960fc13daca7f9c1adfe59de570bbd9f993a99fcc7f96de4cfe5441cf8467" + }, + { + "path": "kernels/6a045508377e47e95d411257071b7ed8f9097fd220c00de6a5167abb548ebe37.wgsl", + "byteLength": 750, + "sha256": "6a045508377e47e95d411257071b7ed8f9097fd220c00de6a5167abb548ebe37" + }, + { + "path": "kernels/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/6cac7d392e4575fd1f540df697b769405969007c6064068d726f4b9174255057.wgsl", + "byteLength": 663, + "sha256": "6cac7d392e4575fd1f540df697b769405969007c6064068d726f4b9174255057" + }, + { + "path": "kernels/6d82b7ed99a04f03fa0b9d241188d9613fa3ce9ff425cf8ee30a7f4ce6ded13d.wgsl", + "byteLength": 407, + "sha256": "6d82b7ed99a04f03fa0b9d241188d9613fa3ce9ff425cf8ee30a7f4ce6ded13d" + }, + { + "path": "kernels/6de6505af6ba3c1c020424d3a99773ff62d2308a2fbf2295ec2ea7e919e4cbb9.wgsl", + "byteLength": 417, + "sha256": "6de6505af6ba3c1c020424d3a99773ff62d2308a2fbf2295ec2ea7e919e4cbb9" + }, + { + "path": "kernels/7002f8fdf09f5124ce2875c3540bce3e77750260556fc1a00a8b13b6c1871c30.wgsl", + "byteLength": 383, + "sha256": "7002f8fdf09f5124ce2875c3540bce3e77750260556fc1a00a8b13b6c1871c30" + }, + { + "path": "kernels/7121b5c223da0b0f28991f55cfed3c3f3390caa0bf65a8e58ae380db281ceb6b.wgsl", + "byteLength": 368, + "sha256": "7121b5c223da0b0f28991f55cfed3c3f3390caa0bf65a8e58ae380db281ceb6b" + }, + { + "path": "kernels/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/72581c68e589d6a7b54cbf9d9ff3020baf9902a2b46d89802c32a8f441531892.wgsl", + "byteLength": 2400, + "sha256": "72581c68e589d6a7b54cbf9d9ff3020baf9902a2b46d89802c32a8f441531892" + }, + { + "path": "kernels/72a7d64b03a46abc91046d19a336ceaec4b96a2a3a100afafee479ee2bb42fb7.wgsl", + "byteLength": 2404, + "sha256": "72a7d64b03a46abc91046d19a336ceaec4b96a2a3a100afafee479ee2bb42fb7" + }, + { + "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/764403c33cd8994568e068810380cb57e9f2e326dfc09bed63eed1fbed044da1.wgsl", + "byteLength": 311, + "sha256": "764403c33cd8994568e068810380cb57e9f2e326dfc09bed63eed1fbed044da1" + }, + { + "path": "kernels/769f9e7b86689ad388a02072ded5ea73701fab42404ad105fcf8c58b5e7a28f0.wgsl", + "byteLength": 2404, + "sha256": "769f9e7b86689ad388a02072ded5ea73701fab42404ad105fcf8c58b5e7a28f0" + }, + { + "path": "kernels/76c34255aa8f547d387e06847a0d0ca213cb228bb6b3d7a507fcf3c14c9e4e9a.wgsl", + "byteLength": 2404, + "sha256": "76c34255aa8f547d387e06847a0d0ca213cb228bb6b3d7a507fcf3c14c9e4e9a" + }, + { + "path": "kernels/77f9becbd500abcaf6a8d278cbcb6c7031868ff5bf74f41284940d56894cf9fa.wgsl", + "byteLength": 389, + "sha256": "77f9becbd500abcaf6a8d278cbcb6c7031868ff5bf74f41284940d56894cf9fa" + }, + { + "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/7ea4a12734f1206e9c94a060bf6b24732f46685f0c46a78c3c5fbcd64489d8c3.wgsl", + "byteLength": 407, + "sha256": "7ea4a12734f1206e9c94a060bf6b24732f46685f0c46a78c3c5fbcd64489d8c3" + }, + { + "path": "kernels/7f684886a0c031e32c9cf7a4bff880ae692ddc08ddca971ee20d728b4736d0da.wgsl", + "byteLength": 418, + "sha256": "7f684886a0c031e32c9cf7a4bff880ae692ddc08ddca971ee20d728b4736d0da" + }, + { + "path": "kernels/7fe183583b43b627721ba6853b306288d7ceea4b42b630410f47ea9637220a4b.wgsl", + "byteLength": 290, + "sha256": "7fe183583b43b627721ba6853b306288d7ceea4b42b630410f47ea9637220a4b" + }, + { + "path": "kernels/7fed7072c20dc3e66c80b2ac1f737b0e7e70a695e5db34e057f729c945e60ba0.wgsl", + "byteLength": 752, + "sha256": "7fed7072c20dc3e66c80b2ac1f737b0e7e70a695e5db34e057f729c945e60ba0" + }, + { + "path": "kernels/80d22263b082805bc9d4499247f92b7a1a783a3e1cdd9c652d304492a1cfd425.wgsl", + "byteLength": 404, + "sha256": "80d22263b082805bc9d4499247f92b7a1a783a3e1cdd9c652d304492a1cfd425" + }, + { + "path": "kernels/816861e23c92e156c1ac01f21e4f6dd1cbfc14978b1be8a5994fb45b0f845cb8.wgsl", + "byteLength": 328, + "sha256": "816861e23c92e156c1ac01f21e4f6dd1cbfc14978b1be8a5994fb45b0f845cb8" + }, + { + "path": "kernels/8256ea6cdc3500306470c0bb2dcdb44ebdd454dafa218ad6a94dd953b9bbe125.wgsl", + "byteLength": 406, + "sha256": "8256ea6cdc3500306470c0bb2dcdb44ebdd454dafa218ad6a94dd953b9bbe125" + }, + { + "path": "kernels/827ffce28b59c5790739e7f9624b4ef6ebf876973f7ba942702dd8872f47fcd5.wgsl", + "byteLength": 328, + "sha256": "827ffce28b59c5790739e7f9624b4ef6ebf876973f7ba942702dd8872f47fcd5" + }, + { + "path": "kernels/82d700d77c249d637b7592f92c488497797a3961ea85b74ad2e50cccef3ef78f.wgsl", + "byteLength": 556, + "sha256": "82d700d77c249d637b7592f92c488497797a3961ea85b74ad2e50cccef3ef78f" + }, + { + "path": "kernels/84101fc314579b90d71da4cca3a2c2cdc2074d96d2861c4b8e38c22cc1903138.wgsl", + "byteLength": 394, + "sha256": "84101fc314579b90d71da4cca3a2c2cdc2074d96d2861c4b8e38c22cc1903138" + }, + { + "path": "kernels/84f24861effe9e2f3b05f98fe6d4e16f4f8204be40a7eeece0668e57060ecc7b.wgsl", + "byteLength": 401, + "sha256": "84f24861effe9e2f3b05f98fe6d4e16f4f8204be40a7eeece0668e57060ecc7b" + }, + { + "path": "kernels/84ff996d084cbc6b8dca21a8f3267cdb1f4c6b9664c24c3002252f05247c4212.wgsl", + "byteLength": 381, + "sha256": "84ff996d084cbc6b8dca21a8f3267cdb1f4c6b9664c24c3002252f05247c4212" + }, + { + "path": "kernels/85964f8bbe5a2e4d430930e1050ea76871f0f2453c3cd4ba020002c0562ca680.wgsl", + "byteLength": 558, + "sha256": "85964f8bbe5a2e4d430930e1050ea76871f0f2453c3cd4ba020002c0562ca680" + }, + { + "path": "kernels/86b1f1cab1648a963619188a6da4c128747b95d7248af09486ea1265f1061529.wgsl", + "byteLength": 2400, + "sha256": "86b1f1cab1648a963619188a6da4c128747b95d7248af09486ea1265f1061529" + }, + { + "path": "kernels/870f571c2825eaa5aa7203a42631ed44e533c50f236974cb4591aa3c73b231a6.wgsl", + "byteLength": 415, + "sha256": "870f571c2825eaa5aa7203a42631ed44e533c50f236974cb4591aa3c73b231a6" + }, + { + "path": "kernels/89346091cbb89beae2f92d40ca0dd3851ab1764043fbf470e4eace7fdee014fe.wgsl", + "byteLength": 2401, + "sha256": "89346091cbb89beae2f92d40ca0dd3851ab1764043fbf470e4eace7fdee014fe" + }, + { + "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/8b5e4c9b7889f2bccebf60987b6f5b8c23542c3475cd8d78656dc7ecffd81f8d.wgsl", + "byteLength": 405, + "sha256": "8b5e4c9b7889f2bccebf60987b6f5b8c23542c3475cd8d78656dc7ecffd81f8d" + }, + { + "path": "kernels/8c192616edb22fd957bb151eeda67b9f9c5a1808136cc4d5d0ba2ebc50b77fa6.wgsl", + "byteLength": 3564, + "sha256": "8c192616edb22fd957bb151eeda67b9f9c5a1808136cc4d5d0ba2ebc50b77fa6" + }, + { + "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/8de0fdfd28f176a9a9eb713f55b64813a3123c0f2fc505b403909049af1f94bd.wgsl", + "byteLength": 2239, + "sha256": "8de0fdfd28f176a9a9eb713f55b64813a3123c0f2fc505b403909049af1f94bd" + }, + { + "path": "kernels/8edd8a2bae8f26ae570c97da27c254da93d6b2df00784f505002f97830f806b3.wgsl", + "byteLength": 292, + "sha256": "8edd8a2bae8f26ae570c97da27c254da93d6b2df00784f505002f97830f806b3" + }, + { + "path": "kernels/8ee286e06c1271162bea74e14b4bd5b1d66890648217c79435e6b3f1d4181ec8.wgsl", + "byteLength": 403, + "sha256": "8ee286e06c1271162bea74e14b4bd5b1d66890648217c79435e6b3f1d4181ec8" + }, + { + "path": "kernels/90191f3796334008bd2d4eae2d00d4542647c3ad2478df5738b7315b1d548a04.wgsl", + "byteLength": 947, + "sha256": "90191f3796334008bd2d4eae2d00d4542647c3ad2478df5738b7315b1d548a04" + }, + { + "path": "kernels/9044193f1f4724f15ef5fb41040b7fbac5f62fcaea80594737214bf9cd6be41a.wgsl", + "byteLength": 419, + "sha256": "9044193f1f4724f15ef5fb41040b7fbac5f62fcaea80594737214bf9cd6be41a" + }, + { + "path": "kernels/9144d827dae4c52b80abb829178a9ed901ce5dbc6702ad94b0b355e8eaad5ea5.wgsl", + "byteLength": 548, + "sha256": "9144d827dae4c52b80abb829178a9ed901ce5dbc6702ad94b0b355e8eaad5ea5" + }, + { + "path": "kernels/924e1eec63947ccf41e2758eaa868211715921237f99829064b246ddb402fdf9.wgsl", + "byteLength": 2401, + "sha256": "924e1eec63947ccf41e2758eaa868211715921237f99829064b246ddb402fdf9" + }, + { + "path": "kernels/928e4759658bc5813ad5b82855d1a8c13e144cdfe50229dfc10b0624d7490858.wgsl", + "byteLength": 563, + "sha256": "928e4759658bc5813ad5b82855d1a8c13e144cdfe50229dfc10b0624d7490858" + }, + { + "path": "kernels/92d96e9c7fd228d99d89b4db14a742e99e230931d81fa6c3b7fa1caf8d4a1aa4.wgsl", + "byteLength": 417, + "sha256": "92d96e9c7fd228d99d89b4db14a742e99e230931d81fa6c3b7fa1caf8d4a1aa4" + }, + { + "path": "kernels/92eff2ae4eb605d106b939834fb7142f6ad493610f4d56409c4daaea0ff05939.wgsl", + "byteLength": 2400, + "sha256": "92eff2ae4eb605d106b939834fb7142f6ad493610f4d56409c4daaea0ff05939" + }, + { + "path": "kernels/93d02cadeb259e826a8d196998a25cbb09a7053b0fa50174dc6c0d9ec05f8d6d.wgsl", + "byteLength": 1025, + "sha256": "93d02cadeb259e826a8d196998a25cbb09a7053b0fa50174dc6c0d9ec05f8d6d" + }, + { + "path": "kernels/947f5cc8b3f87e1a0d4d322d9d9e71e2ed16ce6e1f7c91118678c164dc1c8752.wgsl", + "byteLength": 381, + "sha256": "947f5cc8b3f87e1a0d4d322d9d9e71e2ed16ce6e1f7c91118678c164dc1c8752" + }, + { + "path": "kernels/9500e6b37cb9619cf5ab90515704cfba581ebd3791fd165b1ab99530f1242347.wgsl", + "byteLength": 2407, + "sha256": "9500e6b37cb9619cf5ab90515704cfba581ebd3791fd165b1ab99530f1242347" + }, + { + "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/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/98be6b15c9649126fa3946261a44c493de5269e0c73845bb6538cafa79ad5be2.wgsl", + "byteLength": 2404, + "sha256": "98be6b15c9649126fa3946261a44c493de5269e0c73845bb6538cafa79ad5be2" + }, + { + "path": "kernels/99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b.wgsl", + "byteLength": 383, + "sha256": "99e423f03f9fdfee41f3dcaab73257064ffb2a64110066752208324724505a8b" + }, + { + "path": "kernels/9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42.wgsl", + "byteLength": 301, + "sha256": "9b7697d3e1de37277befbd725307f40a5143faae3dcf43182d4ad89d8572ed42" + }, + { + "path": "kernels/9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909.wgsl", + "byteLength": 665, + "sha256": "9c05e3201afdb3d36fbb52a495ed22e7d9342017dc0263acc3ab36a751b82909" + }, + { + "path": "kernels/9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3.wgsl", + "byteLength": 661, + "sha256": "9c3b5ac049cb77dc7101fce89a5c33e2c9e8c543d528d4a730cb489c02d2c7b3" + }, + { + "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/9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791.wgsl", + "byteLength": 947, + "sha256": "9f02cd7a8eb5e6d20c2b01559fc58db5b0447ae41a51e2cd479ed519fc284791" + }, + { + "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/a2767b8d5878ef73ac0fa8645b6d08aaed7c012f11d64487a9f4951a8ef6f6c8.wgsl", + "byteLength": 2239, + "sha256": "a2767b8d5878ef73ac0fa8645b6d08aaed7c012f11d64487a9f4951a8ef6f6c8" + }, + { + "path": "kernels/a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8.wgsl", + "byteLength": 286, + "sha256": "a2bd65fc2709e093644d6cbf0c292b4d71520009a87bedcf4bca8fcb5f5c15b8" + }, + { + "path": "kernels/a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007.wgsl", + "byteLength": 326, + "sha256": "a2e242b97ac8ec546c9f91b5af599c2231915bdabb57d55cdc21f61a49c21007" + }, + { + "path": "kernels/a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef.wgsl", + "byteLength": 285, + "sha256": "a37dac611b27158f19aa5bd70c43217286e610e733cbd602b91666b4af42d3ef" + }, + { + "path": "kernels/a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92.wgsl", + "byteLength": 326, + "sha256": "a53c1ce51ebaec593ad667efae9603efe3807db8f0ee060a620ac031cc4f2b92" + }, + { + "path": "kernels/a6125fbd851cc7be9e1a40a7a532088ca64af29c1d030da8066cd3e88db7fd87.wgsl", + "byteLength": 2235, + "sha256": "a6125fbd851cc7be9e1a40a7a532088ca64af29c1d030da8066cd3e88db7fd87" + }, + { + "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/a7e730aecc95fc97ac3d1d75720408dcb5a0cf1981e77f0857d532844cc4759f.wgsl", + "byteLength": 2400, + "sha256": "a7e730aecc95fc97ac3d1d75720408dcb5a0cf1981e77f0857d532844cc4759f" + }, + { + "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/ab59825997b5445cdad2655bdde251b89e9844d51709062ea5d29463ae40f9b7.wgsl", + "byteLength": 2398, + "sha256": "ab59825997b5445cdad2655bdde251b89e9844d51709062ea5d29463ae40f9b7" + }, + { + "path": "kernels/abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b.wgsl", + "byteLength": 326, + "sha256": "abdb17daf29310a7828a55a1efeebaa65b6553e236fc20702e8c712e0a46dd5b" + }, + { + "path": "kernels/ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c.wgsl", + "byteLength": 391, + "sha256": "ac173d038b5767711ad9f7cafbceb9ca3ec84aaeb3d07a3037e7cd0f83fead2c" + }, + { + "path": "kernels/acba0698721bf4bc71085dc6f7e29fbed08c7af4bc83a45ded7debb3cef930d1.wgsl", + "byteLength": 2407, + "sha256": "acba0698721bf4bc71085dc6f7e29fbed08c7af4bc83a45ded7debb3cef930d1" + }, + { + "path": "kernels/ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57.wgsl", + "byteLength": 402, + "sha256": "ad72f60d58133272228319f1c066e7cd43ac28573ddeeb7a6f69be01af341f57" + }, + { + "path": "kernels/adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c.wgsl", + "byteLength": 307, + "sha256": "adf1e58a124e1301625024ae142dca5fb1dd50799fa94b52eaeffb82ea99852c" + }, + { + "path": "kernels/ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c.wgsl", + "byteLength": 551, + "sha256": "ae69e698c92571766e36ad8c078b13e42bde56745d45698daaadaca587b7279c" + }, + { + "path": "kernels/af73c6fc2573e19b70562d3f12e2f20ff7d2e9e552f6fae2bfdd64d12f142e45.wgsl", + "byteLength": 2394, + "sha256": "af73c6fc2573e19b70562d3f12e2f20ff7d2e9e552f6fae2bfdd64d12f142e45" + }, + { + "path": "kernels/aff7944d5bfb08ba68464175aff84304add088a513c86b80cdbe4e74f36c4b7f.wgsl", + "byteLength": 663, + "sha256": "aff7944d5bfb08ba68464175aff84304add088a513c86b80cdbe4e74f36c4b7f" + }, + { + "path": "kernels/b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26.wgsl", + "byteLength": 415, + "sha256": "b02b0be460d581c720afd68c8b722e8da47e2ee432b5d61bbdf24b6084cb2f26" + }, + { + "path": "kernels/b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33.wgsl", + "byteLength": 390, + "sha256": "b12eae76f13225c0c5d35fc9309964aba3172712799ff3bd8538bb2c1b34aa33" + }, + { + "path": "kernels/b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e.wgsl", + "byteLength": 387, + "sha256": "b199d835db70f888c7b99a3ac6e9ec56f6c47d5bba4eaf352e0a8eabed56411e" + }, + { + "path": "kernels/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/b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab.wgsl", + "byteLength": 390, + "sha256": "b57928140994202536cd4f99d2e14f5dba9754f014843673790d5d48c9cbb9ab" + }, + { + "path": "kernels/b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857.wgsl", + "byteLength": 405, + "sha256": "b5984ff6eb9e56ef0f9930f775c1dc3c203eec15924e5fea4c2525b2ce180857" + }, + { + "path": "kernels/b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49.wgsl", + "byteLength": 326, + "sha256": "b6c3ce0defd66eef66dc3fd6eb9eab3fee12d179332698c3c764009988628b49" + }, + { + "path": "kernels/b71488c9b47fa85c9dcdbbf9185c31ab819169ab631e1aa901f65e2999c5d22f.wgsl", + "byteLength": 1025, + "sha256": "b71488c9b47fa85c9dcdbbf9185c31ab819169ab631e1aa901f65e2999c5d22f" + }, + { + "path": "kernels/b75a05038c8d340aa61c4cdf617403ed9df75a05ecb9284c659b456ee9e120cd.wgsl", + "byteLength": 652, + "sha256": "b75a05038c8d340aa61c4cdf617403ed9df75a05ecb9284c659b456ee9e120cd" + }, + { + "path": "kernels/b935d2b02aa6108e43d19fb2d854577e7f5a552d023b9f8d723a2ae9c4c6251d.wgsl", + "byteLength": 3564, + "sha256": "b935d2b02aa6108e43d19fb2d854577e7f5a552d023b9f8d723a2ae9c4c6251d" + }, + { + "path": "kernels/bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6.wgsl", + "byteLength": 421, + "sha256": "bb7f03e6a2277dc56084e9130086507be58871253867c0ce8ad60ee5ce4521b6" + }, + { + "path": "kernels/bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00.wgsl", + "byteLength": 373, + "sha256": "bb9029b667eeb13670d1f640cd677c6eabd7a7569686c599e3eeb9482d642b00" + }, + { + "path": "kernels/bbe7cf742bbc4d053e33018f81ca9e71a5f66cf38db88df0fe1b4584b27641f0.wgsl", + "byteLength": 1029, + "sha256": "bbe7cf742bbc4d053e33018f81ca9e71a5f66cf38db88df0fe1b4584b27641f0" + }, + { + "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/bdff377a7f25601150962d7c6dc66a63afe74f5b02fbf9e7b99510931f49593b.wgsl", + "byteLength": 654, + "sha256": "bdff377a7f25601150962d7c6dc66a63afe74f5b02fbf9e7b99510931f49593b" + }, + { + "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/c3ebed7ebe3d6e1b7b6a880c9f83a5daec2a8d5b56ca687e64b991ac2781ecbd.wgsl", + "byteLength": 2404, + "sha256": "c3ebed7ebe3d6e1b7b6a880c9f83a5daec2a8d5b56ca687e64b991ac2781ecbd" + }, + { + "path": "kernels/c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933.wgsl", + "byteLength": 385, + "sha256": "c4862be63d2532b6891da039edbef2f46737a34518f8a89602821e00447b5933" + }, + { + "path": "kernels/c63f2a23ef5fa1527a4392ae84767c390ca2f2becfa4b0e3da27472161cb508e.wgsl", + "byteLength": 2404, + "sha256": "c63f2a23ef5fa1527a4392ae84767c390ca2f2becfa4b0e3da27472161cb508e" + }, + { + "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/cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738.wgsl", + "byteLength": 573, + "sha256": "cc250879ffbf43ba05860b5a86f6a824e8ca7b4c9f820137a68e1ba633e09738" + }, + { + "path": "kernels/cd46a38dce0fbd29ef19e18059f7cba1bb02f51d981552ce87956635c48c8a49.wgsl", + "byteLength": 2397, + "sha256": "cd46a38dce0fbd29ef19e18059f7cba1bb02f51d981552ce87956635c48c8a49" + }, + { + "path": "kernels/cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37.wgsl", + "byteLength": 419, + "sha256": "cd74e23e4f4177562ffb4c00641720b63d154cea3600f6177e01985d74784f37" + }, + { + "path": "kernels/d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9.wgsl", + "byteLength": 408, + "sha256": "d0be84d22b9e3b0cf73729e9a6fad1c6cf7d03fa01b45b8765ed70158578f2a9" + }, + { + "path": "kernels/d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957.wgsl", + "byteLength": 390, + "sha256": "d155dd8abb0fe375aea320241d54486b2489a35ad76150cc77c4778bfbb9d957" + }, + { + "path": "kernels/d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96.wgsl", + "byteLength": 375, + "sha256": "d2866fd21f58839ea7d43bf83fde4243c38e4f1771034520abb020be5d819a96" + }, + { + "path": "kernels/d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8.wgsl", + "byteLength": 288, + "sha256": "d44354e74d5bfca2fb879607683c5d04cb30c4e1a694270584a01c0c6b3d9be8" + }, + { + "path": "kernels/d4c80950a743190f3c54e4675a4fb139edf142a4737c55d803326c1a1cedcc2e.wgsl", + "byteLength": 661, + "sha256": "d4c80950a743190f3c54e4675a4fb139edf142a4737c55d803326c1a1cedcc2e" + }, + { + "path": "kernels/d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e.wgsl", + "byteLength": 378, + "sha256": "d8757289e027d60366190dda56db53f6d6a3358fd813e84ca58f2076ddb0bf3e" + }, + { + "path": "kernels/d881e662b64a4fcdda68b212a361c61be3e0460cb55b31fbe0c5ff603aafc222.wgsl", + "byteLength": 606, + "sha256": "d881e662b64a4fcdda68b212a361c61be3e0460cb55b31fbe0c5ff603aafc222" + }, + { + "path": "kernels/d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3.wgsl", + "byteLength": 309, + "sha256": "d8c79a22e83e4a3b75b732bffa9ca673713bb57d580c5af4e59c805645ff1ca3" + }, + { + "path": "kernels/d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e.wgsl", + "byteLength": 853, + "sha256": "d94fb02f4ca58bdbd2252a764fcfb703abc5d216e13eee8742d7e9f40bd0276e" + }, + { + "path": "kernels/da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de.wgsl", + "byteLength": 288, + "sha256": "da7c63a84d7f2c46e8234a34c0905cfad6229740145070df00819509f8ab39de" + }, + { + "path": "kernels/dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291.wgsl", + "byteLength": 286, + "sha256": "dc4ee648b97b273931e31c95b910d66f11e34a1cb036589e9ae9cc250b6e6291" + }, + { + "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/de7efdc3cd555123c3f2c757ac2dcae8a7b0514faa5f6b4e36db201876cb7154.wgsl", + "byteLength": 2404, + "sha256": "de7efdc3cd555123c3f2c757ac2dcae8a7b0514faa5f6b4e36db201876cb7154" + }, + { + "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/e1f9d4a00c3f7503a07a007016c8d5c290b387b03f8fb7fbd65d5ac662a7b9dd.wgsl", + "byteLength": 652, + "sha256": "e1f9d4a00c3f7503a07a007016c8d5c290b387b03f8fb7fbd65d5ac662a7b9dd" + }, + { + "path": "kernels/e23f8d0e93dd1cec22eea5c04988cc373462885008c37beb9e5f012773c6af1f.wgsl", + "byteLength": 1025, + "sha256": "e23f8d0e93dd1cec22eea5c04988cc373462885008c37beb9e5f012773c6af1f" + }, + { + "path": "kernels/e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4.wgsl", + "byteLength": 408, + "sha256": "e38b21c1b50403e478d2d4956df390560aa740de2dcba8d69322d996c998adf4" + }, + { + "path": "kernels/e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d.wgsl", + "byteLength": 411, + "sha256": "e3c6a64e01b6ea79adf125ff00a6dcf00f0b65aee0f4a3d14fdbc20e5dfeb22d" + }, + { + "path": "kernels/e6335bafac0bd6898ec4705df8aa318a3c5e4ee0f6c306b40ebb8a727723ad08.wgsl", + "byteLength": 2403, + "sha256": "e6335bafac0bd6898ec4705df8aa318a3c5e4ee0f6c306b40ebb8a727723ad08" + }, + { + "path": "kernels/e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66.wgsl", + "byteLength": 385, + "sha256": "e6571e9ffa79d4f7888d606a5845a6fe7d39e3b7944eafb979c162a384245c66" + }, + { + "path": "kernels/e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130.wgsl", + "byteLength": 383, + "sha256": "e74eaedc2b731f96007caaea3db1518767845c24bc917b9c2b71553e22139130" + }, + { + "path": "kernels/e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20.wgsl", + "byteLength": 459, + "sha256": "e829b3bd2efe5b094dc36238e2a933a1e30c942efddfc80e79862a55c57e6e20" + }, + { + "path": "kernels/e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d.wgsl", + "byteLength": 299, + "sha256": "e84c817e08236e486418f6b0b81f5abd27756f82be67cfbc15736410ac3c7e5d" + }, + { + "path": "kernels/e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2.wgsl", + "byteLength": 286, + "sha256": "e867b978e7008207276fa1603c3c1c968a91d5b02e70daa63b1c9e462b6c36d2" + }, + { + "path": "kernels/e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d.wgsl", + "byteLength": 413, + "sha256": "e91fae5817b3b5e4b0025d4fa70d4cfa10b010d038a3f45c6348d25379df287d" + }, + { + "path": "kernels/eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553.wgsl", + "byteLength": 949, + "sha256": "eaa005df21903c16f68f2f40b2ae0ca8ad671caaa1db00e8f7c5c807f01b2553" + }, + { + "path": "kernels/ecc20df40ca1f8b1a94060bd2ee01b15b768dac8eace56333030fb9af03a01bd.wgsl", + "byteLength": 2403, + "sha256": "ecc20df40ca1f8b1a94060bd2ee01b15b768dac8eace56333030fb9af03a01bd" + }, + { + "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/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/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" + } + ], + "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", + "prefill": "queued-incremental", + "checkpointCertified": false, + "fusion": true, + "quantizationSelection": { + "include": [], + "exclude": [] + } + }, + "validation": { + "checkpointCertified": false, + "hardware": [] + }, + "generation": { + "contextLength": 8192, + "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-8k-token-major-home-v4/source/LICENSE b/qwen35-08b-fp32-8k-token-major-home-v4/source/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f938136e3adacfd92be087f6e113b5d6d97f678f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/source/config.json b/qwen35-08b-fp32-8k-token-major-home-v4/source/config.json new file mode 100644 index 0000000000000000000000000000000000000000..715f0448b9d38103211f0ad88bbb4d6e4f4be8c9 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/source/provenance.json b/qwen35-08b-fp32-8k-token-major-home-v4/source/provenance.json new file mode 100644 index 0000000000000000000000000000000000000000..6b5a8add65c7ba0efb165c5fe3f96c6ceaf7628d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/tokenizer/chat_template.jinja b/qwen35-08b-fp32-8k-token-major-home-v4/tokenizer/chat_template.jinja new file mode 100644 index 0000000000000000000000000000000000000000..0ef09f214eaa6d9bca297988afc1454b5827b2c7 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/tokenizer/tokenizer.json b/qwen35-08b-fp32-8k-token-major-home-v4/tokenizer/tokenizer.json new file mode 100644 index 0000000000000000000000000000000000000000..a73a846725794819aa6e1c9e97d8dc9671c2006d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/tokenizer/tokenizer_config.json b/qwen35-08b-fp32-8k-token-major-home-v4/tokenizer/tokenizer_config.json new file mode 100644 index 0000000000000000000000000000000000000000..fae3ce993e07c092ad024dde45e592379fde91bb --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-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-8k-token-major-home-v4/weights/00000.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00000.bin new file mode 100644 index 0000000000000000000000000000000000000000..5db2ecb6f26a1c25d7bb3a3cd3583301fe369a16 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00000.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998effe0875f489e58eb9592d73a2a2ef51b627520bd119524651c8ffc886282 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00001.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00001.bin new file mode 100644 index 0000000000000000000000000000000000000000..c66d6bf828e3954433fc9a1cbc977897111dcce8 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00001.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b669e08c1c1103797bd533fad1d52fe36b3f1293db9d09065ec24c7c5f2db8d +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00002.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00002.bin new file mode 100644 index 0000000000000000000000000000000000000000..31d767aba2f1556e144aca0f3836482a736e8d3b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00002.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a281c127a0a9bf7f5498534c1a350d922f251e19343c303e70663486d609260e +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00003.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00003.bin new file mode 100644 index 0000000000000000000000000000000000000000..852884880097dc1e1012ba199d1c8f1ae1bd7514 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00003.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b4b102afabd0edfc06a42c1c14f6cc459e9e1e2cf0b8193fc5aa3046c04cc76 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00004.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00004.bin new file mode 100644 index 0000000000000000000000000000000000000000..7dd39ed1515eb63706e647cef15a3ce06cffe4fa --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00004.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6480b9ca38668264d75fbc1ecdd78870fe1a8b95835f485c5543d11e2abbbe1f +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00005.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00005.bin new file mode 100644 index 0000000000000000000000000000000000000000..97f5a7d9e18d5485309c2582896c4e57de2cf0b7 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00005.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8f2a7532918fb3acc76952b3e685030c001abdae0b74ab41fc84c64a4ab8c2e +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00006.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00006.bin new file mode 100644 index 0000000000000000000000000000000000000000..d3c1d66bcc12f63cb4a37a3e212a3f508f46a415 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00006.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54fa18728d34cb3f67db0c70064574e8f34b786d9bf5d92e61241472e1249aa4 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00007.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00007.bin new file mode 100644 index 0000000000000000000000000000000000000000..40f67786390d40cf56257daf59a152249410eda6 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00007.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89edafc7a5ed368e67498221df821521c36df98216fcf4e55efbd3d8e2925725 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00008.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00008.bin new file mode 100644 index 0000000000000000000000000000000000000000..4da6fc1e68e790ded34202971223b6a774de95e1 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00008.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c121fb272ea2306e4f313d8d14d941acdc030c3dd1a0029656d1a531cb87de +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00009.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00009.bin new file mode 100644 index 0000000000000000000000000000000000000000..a67ae1f17c3e3beb38ab9f027ea4091fdabbe19f --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00009.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3511e2b1256753a76c8dce0b301af2dc1071233dc694fd5fbb19bf37f2e992f5 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00010.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00010.bin new file mode 100644 index 0000000000000000000000000000000000000000..bc9161071ff390beb48f3223c66198c17cf70c2d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00010.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:518e9e81ea59d4ad6da3ad3b107b42b2c17c5c1935d33424073794de62847548 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00011.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00011.bin new file mode 100644 index 0000000000000000000000000000000000000000..d0aea10d88d4a4f5a32969fb2ffe725fe3320cfa --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00011.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9dcd32dedee1956567f92c12f4c9f0bff8b5d88e69cf2963e406707fcdde8f2 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00012.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00012.bin new file mode 100644 index 0000000000000000000000000000000000000000..64792ad8820dd6f08b2c4254c25fcdffe2e85e7b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00012.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b248952306849f7b94d99efae7c6703ec48d4bab5717140bb864344be587c5ba +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00013.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00013.bin new file mode 100644 index 0000000000000000000000000000000000000000..746e7f981734f97dd453c8d2f6d5c68280109558 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00013.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:559f58d778fe79454327bb05db60f5911723e106175ab6b7b8214a0c9a401d10 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00014.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00014.bin new file mode 100644 index 0000000000000000000000000000000000000000..6d02b3a34c23378e3bb2821859b38028e1010b03 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00014.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8265d03dcdf21a6040e933173abdbde052960b91fb834fd386782b7a71123dc +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00015.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00015.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d548a8ea6b3fa459d7734182bb4fdc83f9c379d --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00015.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edac7465eb4dc1fb754e17a517328331fb76165d30e4925c5a345935361f33cf +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00016.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00016.bin new file mode 100644 index 0000000000000000000000000000000000000000..1c1d82b32d984fe6d9f0f93848655e632ab99c60 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00016.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:815838a4b921976173d49ecec34dd995f68c9a8d62d86c90f635f482468f9fc7 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00017.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00017.bin new file mode 100644 index 0000000000000000000000000000000000000000..688c9106d669f88ca582ed14a76dd60584816650 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00017.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9db5b7bcb57015e804c05f391e29ab599a10c0c8d9fd91a6f5b0e64f3f4695e8 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00018.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00018.bin new file mode 100644 index 0000000000000000000000000000000000000000..6cebc3c6e7c84fe34d6f1994d313cbe912f3f948 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00018.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f31013804f939e60b1856f07265484e76a038b9b71728a08c2970566fabc02 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00019.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00019.bin new file mode 100644 index 0000000000000000000000000000000000000000..b38921711e00c96143bb7e07712fefe0d8112048 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00019.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:985b56623a1989be873d6e3458f4cf7fb1cd21c00d319bce9afb54f77f787a6c +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00020.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00020.bin new file mode 100644 index 0000000000000000000000000000000000000000..b8fbd102fcefaf587df6bff1e16c478334e27ee3 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00020.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5ddd4cbcc01765e6e6efd910e2da17e492930380311e1b48723f2f2414c8b41 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00021.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00021.bin new file mode 100644 index 0000000000000000000000000000000000000000..c4f68959b96972fac4b707612c450a210f39b119 --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00021.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6621c8b4a8484c7cc9bd88ea284fade9b089924da845f7689068d23187c6154 +size 67108864 diff --git a/qwen35-08b-fp32-8k-token-major-home-v4/weights/00022.bin b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00022.bin new file mode 100644 index 0000000000000000000000000000000000000000..f413adc85a3e9f8b5a289cb6d7964d16d880373b --- /dev/null +++ b/qwen35-08b-fp32-8k-token-major-home-v4/weights/00022.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:290b5a723f4e7abd52ec22861f0e98b08a826f0be9c054184d419aca31d42602 +size 29388160