## max 与 argmax,f32[8,128] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vand.8x128.u32×1、veq.8x128.s32×1、vlaneseq.8x128.u32×1、vmax.index.xlane.0.8x128.f32×1、vmax.xlane.2.8x128.f32×1、vpop.8x128×2 ## max 与 argmax,每行的最大值在 lane 15、31、…、127 并列 值与 CPU 结果一致:True;下标与 CPU 结果一致:False 第 0 行下标:[127];CPU:[15] 计算指令:vand.8x128.u32×1、veq.8x128.s32×1、vlaneseq.8x128.u32×1、vmax.index.xlane.0.8x128.f32×1、vmax.xlane.2.8x128.f32×1、vpop.8x128×2 ## lax.top_k(x, 1),f32[8,128]:编译失败:is_stable=True is not supported in Pallas top_k. For efficiency, only is_stable=False is supported ## lax.top_k(x, 1, is_stable=False),f32[8,128] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vand.8x128.u32×1、veq.8x128.s32×1、vlaneseq.8x128.u32×1、vmax.index.xlane.0.8x128.f32×1、vmax.xlane.2.8x128.f32×1、vpop.8x128×2 ## lax.top_k(x, 8, is_stable=False),f32[8,128] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vand.8x128.u32×1、veq.8x128.s32×8、vlaneseq.8x128.u32×1、vlt.8x128.s32×7、vmax.index.xlane.0.8x128.f32×2、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×2、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vpop.8x128×16、vsel.8x128×21 ## lax.top_k(x, 8, is_stable=False),f32[8,256] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.8x128.s32×1、vand.8x128.u32×1、veq.8x128.s32×15、vge.8x128.f32×8、vlaneseq.8x128.u32×1、vlt.8x128.s32×7、vmax.8x128.f32×8、vmax.index.xlane.0.8x128.f32×3、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×1、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vperm.0.8x128×3、vperm.1.8x128×3、vperm.2.8x128×1、vperm.3.8x128×1、vpop.8x128×24、vsel.8x128×44、vsetperm.0.all.u8×1、vsetperm.1.all.u8×1、vsetperm.2.all.u8×3、vsetperm.3.all.u8×3 ## max 与 argmax,f32[8,256],全部相等 值与 CPU 结果一致:True;下标与 CPU 结果一致:False 第 0 行下标:[127];CPU:[0] 计算指令:vadd.8x128.s32×1、vand.8x128.u32×1、veq.8x128.s32×1、vge.8x128.f32×1、vlaneseq.8x128.u32×1、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×1、vmax.xlane.2.8x128.f32×1、vperm.1.8x128×1、vpop.8x128×3、vsel.8x128×2、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1 ## max 与 argmax,f32[8,256],最大值在 lane 10、200 并列 值与 CPU 结果一致:True;下标与 CPU 结果一致:False 第 0 行下标:[200];CPU:[10] 计算指令:vadd.8x128.s32×1、vand.8x128.u32×1、veq.8x128.s32×1、vge.8x128.f32×1、vlaneseq.8x128.u32×1、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×1、vmax.xlane.2.8x128.f32×1、vperm.1.8x128×1、vpop.8x128×3、vsel.8x128×2、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1 ## max 与 argmax,f32[8,256],最大值在 lane 100、130 并列 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.8x128.s32×1、vand.8x128.u32×1、veq.8x128.s32×1、vge.8x128.f32×1、vlaneseq.8x128.u32×1、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×1、vmax.xlane.2.8x128.f32×1、vperm.1.8x128×1、vpop.8x128×3、vsel.8x128×2、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1 ## lax.top_k(x, 8, is_stable=False),bf16[8,128]:编译失败:bfloat16 top_k is not supported on TPUv5 or older ## lax.top_k(x, 8, is_stable=False),每行只有 3 个有限值,其余为 -inf 值与 CPU 结果一致:True;下标与 CPU 结果一致:False 第 0 行下标:[0, 2, 1, 127, 127, 127, 127, 127];CPU:[0, 2, 1, 3, 4, 5, 6, 7] 计算指令:vand.8x128.u32×1、veq.8x128.s32×8、vlaneseq.8x128.u32×1、vlt.8x128.s32×7、vmax.index.xlane.0.8x128.f32×2、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×2、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vpop.8x128×16、vsel.8x128×21 ## 手写 top-8,用掩码排除已选位置,f32[8,128] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vand.8x128.u32×1、vcvt.8x128.f32.s32×8、vcvt.8x128.s32.f32×1、veq.8x128.f32×15、veq.8x128.s32×3、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×10、vmax.xlane.0.8x128.f32×3、vmax.xlane.2.8x128.f32×4、vmax.xlane.3.8x128.f32×1、vmin.xlane.0.8x128.f32×1、vmin.xlane.1.8x128.f32×4、vmin.xlane.3.8x128.f32×3、vmor.8x128.u1×6、vmxor.8x128.u1×7、vpop.8x128×16、vsel.8x128×36 ## 手写 top-8,用掩码排除已选位置,每行只有 3 个有限值,其余为 -inf 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vand.8x128.u32×1、vcvt.8x128.f32.s32×8、vcvt.8x128.s32.f32×1、veq.8x128.f32×15、veq.8x128.s32×3、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×10、vmax.xlane.0.8x128.f32×3、vmax.xlane.2.8x128.f32×4、vmax.xlane.3.8x128.f32×1、vmin.xlane.0.8x128.f32×1、vmin.xlane.1.8x128.f32×4、vmin.xlane.3.8x128.f32×3、vmor.8x128.u1×6、vmxor.8x128.u1×7、vpop.8x128×16、vsel.8x128×36 ## 手写 top-8,用掩码排除已选位置,lane 7 为 NaN 值与 CPU 结果一致:False;下标与 CPU 结果一致:False 第 0 行下标:[128, 128, 128, 128, 128, 128, 128, 128];CPU:[7, 115, 95, 0, 21, 97, 91, 4] 计算指令:vand.8x128.u32×1、vcvt.8x128.f32.s32×8、vcvt.8x128.s32.f32×1、veq.8x128.f32×15、veq.8x128.s32×3、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×10、vmax.xlane.0.8x128.f32×3、vmax.xlane.2.8x128.f32×4、vmax.xlane.3.8x128.f32×1、vmin.xlane.0.8x128.f32×1、vmin.xlane.1.8x128.f32×4、vmin.xlane.3.8x128.f32×3、vmor.8x128.u1×6、vmxor.8x128.u1×7、vpop.8x128×16、vsel.8x128×36 ## 手写 top-8,抬高,f32[8,128] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.xlane.0.8x128.f32×1、vand.8x128.u32×1、veq.8x128.f32×8、veq.8x128.s32×8、vimm.8x128.s32×2、vlaneseq.8x128.u32×1、vle.8x128.f32×8、vlt.8x128.s32×9、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×2、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×2、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vpop.8x128×17、vsel.8x128×38 ## 手写 top-8,抬高,每行只有 3 个有限值,其余为 -inf 值与 CPU 结果一致:True;下标与 CPU 结果一致:False 第 0 行下标:[0, 2, 1, 127, 126, 125, 124, 123];CPU:[0, 2, 1, 3, 4, 5, 6, 7] 计算指令:vadd.xlane.0.8x128.f32×1、vand.8x128.u32×1、veq.8x128.f32×8、veq.8x128.s32×8、vimm.8x128.s32×2、vlaneseq.8x128.u32×1、vle.8x128.f32×8、vlt.8x128.s32×9、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×2、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×2、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vpop.8x128×17、vsel.8x128×38 ## 手写 top-8,抬高,全部为 -inf 值与 CPU 结果一致:True;下标与 CPU 结果一致:False 第 0 行下标:[127, 126, 125, 124, 123, 122, 121, 120];CPU:[0, 1, 2, 3, 4, 5, 6, 7] 计算指令:vadd.xlane.0.8x128.f32×1、vand.8x128.u32×1、veq.8x128.f32×8、veq.8x128.s32×8、vimm.8x128.s32×2、vlaneseq.8x128.u32×1、vle.8x128.f32×8、vlt.8x128.s32×9、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×2、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×2、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vpop.8x128×17、vsel.8x128×38 ## 手写 top-8,抬高,lane 7 为 NaN 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.xlane.0.8x128.f32×1、vand.8x128.u32×1、veq.8x128.f32×8、veq.8x128.s32×8、vimm.8x128.s32×2、vlaneseq.8x128.u32×1、vle.8x128.f32×8、vlt.8x128.s32×9、vmax.8x128.f32×1、vmax.index.xlane.0.8x128.f32×2、vmax.index.xlane.1.8x128.f32×2、vmax.index.xlane.2.8x128.f32×2、vmax.index.xlane.3.8x128.f32×2、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vpop.8x128×17、vsel.8x128×38 ## 手写 top-8,秩计数,f32[8,128] 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.8x128.s32×129、vand.8x128.u32×1、vcvt.8x128.f32.s32×1、vcvt.8x128.s32.f32×1、veq.8x128.s32×1、vge.8x128.s32×127、vgt.8x128.s32×127、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×9、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vne.8x128.s32×9、vperm.1.8x128×1、vpop.8x128×136、vrot.0.8x128×32、vrot.1.8x128×32、vrot.2.8x128×32、vrot.3.8x128×31、vsel.8x128×272、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1、vxor.8x128.u32×1 ## 手写 top-8,秩计数,每行只有 3 个有限值,其余为 -inf 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.8x128.s32×129、vand.8x128.u32×1、vcvt.8x128.f32.s32×1、vcvt.8x128.s32.f32×1、veq.8x128.s32×1、vge.8x128.s32×127、vgt.8x128.s32×127、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×9、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vne.8x128.s32×9、vperm.1.8x128×1、vpop.8x128×136、vrot.0.8x128×32、vrot.1.8x128×32、vrot.2.8x128×32、vrot.3.8x128×31、vsel.8x128×272、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1、vxor.8x128.u32×1 ## 手写 top-8,秩计数,最大值在 lane 15、31、…、127 并列 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.8x128.s32×129、vand.8x128.u32×1、vcvt.8x128.f32.s32×1、vcvt.8x128.s32.f32×1、veq.8x128.s32×1、vge.8x128.s32×127、vgt.8x128.s32×127、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×9、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vne.8x128.s32×9、vperm.1.8x128×1、vpop.8x128×136、vrot.0.8x128×32、vrot.1.8x128×32、vrot.2.8x128×32、vrot.3.8x128×31、vsel.8x128×272、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1、vxor.8x128.u32×1 ## 手写 top-8,秩计数,lane 7 为 NaN 值与 CPU 结果一致:True;下标与 CPU 结果一致:True 计算指令:vadd.8x128.s32×129、vand.8x128.u32×1、vcvt.8x128.f32.s32×1、vcvt.8x128.s32.f32×1、veq.8x128.s32×1、vge.8x128.s32×127、vgt.8x128.s32×127、vimm.8x128.s32×1、vlaneseq.8x128.u32×1、vlt.8x128.s32×9、vmax.xlane.0.8x128.f32×2、vmax.xlane.1.8x128.f32×2、vmax.xlane.2.8x128.f32×2、vmax.xlane.3.8x128.f32×2、vne.8x128.s32×9、vperm.1.8x128×1、vpop.8x128×136、vrot.0.8x128×32、vrot.1.8x128×32、vrot.2.8x128×32、vrot.3.8x128×31、vsel.8x128×272、vsetperm.0.all.u8×1、vsetperm.3.all.u8×1、vxor.8x128.u32×1