使用Neon aarch64优化gemm(矩阵乘法)

时间:2018-08-13 22:57:18

标签: arm simd neon arm64

我有一个矩阵乘法,如下所示:

void gemm_nn(int N, int K, float *A, float *B, float *C) {
    int j, k;
    for (k = 0; k < K; k++)
        for (j = 0; j < N; j++)
            C[j] += A[k] * B[k * N + j];
}

浮点数是单个4字节32位。

我想使用armv8-64位优化循环。

我可以在单个128位寄存器中加载4个连续的浮点数,并执行一次乘法累加运算吗?

您能指出我应该尝试实现的指示吗?

1 个答案:

答案 0 :(得分:1)

需要本地SIMD ld1 {v16.4s}和fmla指令。