Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[WebGPU] Implement
tir.dp4a
with WGSL built-in function `dot4I8Pack…
…ed` (#16976) * [WebGPU] Support `__dp4a(int8x4, int8x4)` as a pure extern method This patch adds the support of `__dp4a(int8x4, int8x4)` as a pure extern method of WebGPU target. In the generated WGSL shader, `int8x4` will be translated into `u32`, and `__dp4a(int8x4, int8x4)` will be translated into the WGSL built-in function `dot4I8Packed(u32, u32)`. Here is an example to use `__dp4a` in WebGPU target: ``` n = te.var("n") A = te.placeholder((n,), "int8x4", name="A") B = te.placeholder((n,), "int8x4", name="B") C = te.compute(A.shape, lambda i: tvm.tir.call_pure_extern("int32", "__dp4a", A[i], B[i]), name="C") s = te.create_schedule(C.op) bx, tx = s[C].split(C.op.axis[0], factor=64) s[C].bind(bx, te.thread_axis("blockIdx.x")) s[C].bind(tx, te.thread_axis("threadIdx.x")) mod = tvm.build(s, [A, B, C], tgt, name="dp4aTest") ``` Issue: #16627 * Add validation * Add `dot4I8Packed` to WebGPU lower intrinsic * Implement builtin `dp4a` with `dot4I8Packed` * Small fix * Add missing comment
- Loading branch information