以下是使用AVX2实现矩阵相乘的代码。我使用的机器只支持AVX,因此我正在尝试使用AVX实现相同的配置。
然而,我很难解密出真正的区别,以及需要改变什么!在这个实现中,哪些是特定于AVX2的,在只能处理AVX的机器上无法工作?
这是一个包含AVX和AVX2所有命令的链接: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=AVX 非常感谢您提供的任何见解!
然而,我很难解密出真正的区别,以及需要改变什么!在这个实现中,哪些是特定于AVX2的,在只能处理AVX的机器上无法工作?
这是一个包含AVX和AVX2所有命令的链接: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=AVX 非常感谢您提供的任何见解!
for (uint64_t i = 0; i < M; i++)
{
for (uint64_t j = 0; j < N; j++)
{
__m256 X = _mm256_setzero_ps();
for (uint64_t k = 0; k < L; k+= 8) {
const __m256 AV = _mm256_load_ps(A+i*L+k);
const __m256 BV = _mm256_load_ps(B+j*L+k);
X = _mm256_fmadd_ps(AV,BV,X);
}
C[i*N+j] = hsum_avx(X);
}
}