使用AVX Intrinsic实现C语言矩阵乘法时遇编译类型不兼容错误
解决AVX Intrinsic矩阵乘法编译错误
错误原因
你声明的是双精度浮点向量类型__m256d,但调用的是单精度浮点的置零指令_mm256_setzero_ps(),两者类型完全不兼容:
__m256d对应AVX的双精度向量,每个向量包含4个double元素_mm256_setzero_ps()返回__m256类型,对应单精度向量,包含8个float元素
修复方案
根据你的实际需求二选一:
- 若需要双精度向量,将置零指令替换为双精度版本:
__m256d c0 = _mm256_setzero_pd(); - 若实际需要单精度向量,修改变量类型匹配指令:
__m256 c0 = _mm256_setzero_ps();
额外提示
编译时必须添加AVX指令集支持选项:GCC/Clang用-mavx,MSVC用/arch:AVX,否则会出现更多指令集相关错误。
内容的提问来源于stack exchange,提问作者PerfToolsPlus
相关产品推荐
相关产品推荐

