环境:Win10,英特尔酷睿i7 5500U CPU,Visual Studio 2010 Ultimate
现在我想使用" _mm256_max_epu8"英特尔SIMD指令在AVX2中,但Visual Studio 2010告诉我:
1> .. \ svCore \ svGrayMorph.cpp(838):错误C3861:“_ mm256_max_epu8”:找不到标识符
我发现应该在文件中声明AVX2指令:
... \ Microsoft Visual Studio 10.0 \ VC \ include \ immintrin.h
但是,该文件只有AVX指令," _mm256_max_epu8"和其他说明不在该文件中。
虽然Visual Studio 2013的immintrin.h文件包含AVX2指令。
SomeOne是否知道我可以做什么来在Visual Studio 2010中编译此代码?
非常感谢你。
答案 0 :(得分:1)
如前所述,Visual Studio 2010不支持AVX2,您必须使用Visual Studio 2013.
但是如果你想使用可在两个版本的Visual Studio中编译的通用代码,你必须使用条件编译和宏。
有一个例子:
#if defined(_MSC_VER) && _MSC_VER >= 1700 //Visual Studio 2013
#define AVX2_ENABLE
#endif
#ifdef AVX2_ENABLE
void func()
{
//code with AVX2
}
#else
void func()
{
//code without AVX2
}
#endif
Here您可以在一个项目中找到更多如何使用不同SIMD扩展的示例。
答案 1 :(得分:0)
似乎符号_mm256_max_epu8
可以与Visual Studio 2013或Visual Studio 2012一起使用,就像在这两个内在列表中一样。
当然,它与VS2015
同样适用中不存在Visual Studio 2010支持:/arch:SSE|SSE2|AVX,
Visual Studio 2013支持:/arch:IA32|SSE|SSE2|AVX|AVX2