【发布时间】:2021-09-21 04:53:55
【问题描述】:
下面是 AVX2 中矩阵乘法的实现。我使用的机器只支持 AVX,所以我尝试用 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);
}
}
【问题讨论】:
标签: x86 matrix-multiplication simd avx avx2