我该怎样才能调用到图中的2x2x4[x2]的MAC单元?有没有代码示例?求大佬解答
感谢您的回答,我根据链接中的文档写了如下代码:
size_t vmadot_gemm_2x2x4x2_avl128(const int8_t* A_copies, const int8_t* packedB, int32_t* raw_c) {
size_t configured_vl;
__asm__ volatile(
"vsetvli t0, zero, e32, m2 \n\t"
"vxor.vv v28, v28, v28 \n\t"
"vsetvli t0, zero, e8, m1 \n\t"
"vxor.vv v0, v0, v0 \n\t"
"vxor.vv v1, v1, v1 \n\t"
"vle8.v v0, (%[SRC_A]) \n\t"
"vle8.v v1, (%[SRC_B]) \n\t"
"li t0, 128 \n\t"
"vsetvli t0, t0, e8, m1, ta, ma \n\t"
"vmadot v28, v0, v1 \n\t"
"mv %[VL], t0 \n\t"
"vsetvli t0, zero, e32, m2 \n\t"
"vse32.v v28, (%[DST_C]) \n\t"
: [VL] "=&r"(configured_vl)
: [SRC_A] "r"(A_copies), [SRC_B] "r"(packedB),
[DST_C] "r"(raw_c)
: "cc", "t0", "v0", "v1", "v28", "v29", "memory"
);
return configured_vl;
}
但是得到的结果于文档中描述的不同,可能是没有调度到2x2x4[x2]的MAC单元,而是调用了4x4x8的MAC单元。
