@jit_kernel(name, params)
def kernel(src_ptr: pto.ptr(dtype, "gm"), out_ptr: pto.ptr(dtype, "gm")):
src_ub = pto.castptr(pto.i64(0), pto.ptr(dtype, "ub"))
out_ub = pto.castptr(pto.i64(nbytes), pto.ptr(dtype, "ub"))
pto.mte_gm_ub(src_ptr, src_ub, 0, nbytes, nburst=(1, 0, 0))
pto.set_flag("MTE2", "V", event_id=0)
pto.wait_flag("MTE2", "V", event_id=0)
source = pto.vmi.vload(src_ub, pto.const(0, dtype=pto.index), size=vl)
if masked:
if mask_kind == "group_prefix":
predicate = pto.vmi.create_mask(active_lanes, size=vl, group=group)
else:
predicate = pto.vmi.create_mask(active_lanes, size=vl)
result = pto.vmi.vabs(source, predicate, pmode=pmode)
else:
result = pto.vmi.vabs(source)
pto.vmi.vstore(result, out_ub, pto.const(0, dtype=pto.index))
pto.set_flag("V", "MTE3", event_id=0)
pto.wait_flag("V", "MTE3", event_id=0)
pto.mte_ub_gm(out_ub, out_ptr, nbytes, nburst=(1, 0, 0))
参数信息如下:
- `vl = 256`
- `group = 1`
- `mask_kind = "prefix"`
- `active_lanes = 128`
- `masked = true`
- `pmode = "merge"`
Changing only the data type changes the diagnostic:
- `dtype = bf16`: mask granularity mismatch
- `dtype = f32`: residual VMI operation
Component
PTO Dialect / ODS (include/PTO/IR)
Description
在 A5 平台上,使用:
result = pto.vmi.vabs(
source,
mask,
pmode="merge",
)
时,VABS 无法正常完成编译。
当前不同数据类型出现了不同的错误信息:
Reproduction (minimal)
@jit_kernel(name, params) def kernel(src_ptr: pto.ptr(dtype, "gm"), out_ptr: pto.ptr(dtype, "gm")): src_ub = pto.castptr(pto.i64(0), pto.ptr(dtype, "ub")) out_ub = pto.castptr(pto.i64(nbytes), pto.ptr(dtype, "ub")) pto.mte_gm_ub(src_ptr, src_ub, 0, nbytes, nburst=(1, 0, 0)) pto.set_flag("MTE2", "V", event_id=0) pto.wait_flag("MTE2", "V", event_id=0) source = pto.vmi.vload(src_ub, pto.const(0, dtype=pto.index), size=vl) if masked: if mask_kind == "group_prefix": predicate = pto.vmi.create_mask(active_lanes, size=vl, group=group) else: predicate = pto.vmi.create_mask(active_lanes, size=vl) result = pto.vmi.vabs(source, predicate, pmode=pmode) else: result = pto.vmi.vabs(source) pto.vmi.vstore(result, out_ub, pto.const(0, dtype=pto.index)) pto.set_flag("V", "MTE3", event_id=0) pto.wait_flag("V", "MTE3", event_id=0) pto.mte_ub_gm(out_ub, out_ptr, nbytes, nburst=(1, 0, 0)) 参数信息如下: - `vl = 256` - `group = 1` - `mask_kind = "prefix"` - `active_lanes = 128` - `masked = true` - `pmode = "merge"` Changing only the data type changes the diagnostic: - `dtype = bf16`: mask granularity mismatch - `dtype = f32`: residual VMI operationExpected behavior
编译成功
Actual behavior / error logs
Git commit
e32488c
Host platform
Linux (aarch64)
Target Ascend arch (if relevant)
a5
PTOAS build level (if relevant)
None