【发布时间】:2016-12-04 09:01:12
【问题描述】:
我正在尝试测试一些 Intel Intrinsics,看看它们是如何工作的。所以,我创建了一个函数来为我做这件事,这就是代码:
void test_intel_256()
{
__m256 res,vec1,vec2;
__M256_MM_SET_PS(vec1, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0, 7.0);
__M256_MM_SET_PS(vec1, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0);
__M256_MM_ADD_PS(res,vec1,vec2);
if (res[0] ==9 && res[1] ==9 && res[2] ==9 && res[3] ==9
&& res[4] ==9 && res[5] ==9 && res[6] ==9 && res[7] ==9 )
printf("Addition : OK!\n");
else
printf("Addition : FAILED!\n");
}
但是我得到了这些错误:
error: unknown type name ‘__m256’
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
error: subscripted value is neither array nor pointer nor vector
意味着编译器无法识别 __m256 类型,因此他无法将 res 视为浮点数组。 我包括这些库 mmintrin.h、emmintrin.h、xmmintrin.h 我正在使用日食火星
所以我想知道问题是来自编译器还是硬件还是其他原因? 我该如何解决? 谢谢!
【问题讨论】:
-
您确定您的 CPU 支持 AVX 吗?你用的是哪个 CPU?
-
@DanielMargosian:即使他们的 CPU 不支持 AVX,编译器应该仍然能够编译它。 (存在交叉编译)。
-
我的 CPU 是 Intel® Core™ i7-4700MQ CPU @ 2.40GHz × 8,它支持 SSE4.1/4.2, AVX 2.0
-
你在使用 gcc 吗?我必须在命令行上指定 -mavx2 以“启用”它(并包括 immintrin.h)
-
C++ Intrinsic not declared 的可能重复项。该问题的答案涵盖了这两个部分:标题和
-mavx
标签: c++ c intel intrinsics avx