使用 Neon aarch64 优化 gemm(矩阵乘法)
Optimize gemm (matrix multiplication) with Neon aarch64
我有一个矩阵乘法,如下所示:
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-a 64 位优化循环。
我可以在单个 128 位寄存器中加载 4 个连续的浮点数并进行一次乘法累加运算吗?
你能指出我应该尝试实现这个的说明吗?
需要原生 SIMD ld1 {v16.4s} 和 fmla 指令。
我有一个矩阵乘法,如下所示:
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-a 64 位优化循环。
我可以在单个 128 位寄存器中加载 4 个连续的浮点数并进行一次乘法累加运算吗?
你能指出我应该尝试实现这个的说明吗?
需要原生 SIMD ld1 {v16.4s} 和 fmla 指令。