如何使用 gcc 检测 AVX2 支持
How to detect AVX2 support using gcc
我需要在我的代码中检测 AVX2 支持并做出相应的决定。
我知道两种方法 - __builtin_cpu_supports("avx2")
和 #if defined(__AVX2__)
。现在的问题是一个 returns 正确,另一个错误。
测试代码如下-
int main(){
if(__builtin_cpu_supports("avx2")){
std::cout<< "Builtin methods supports" << std::endl;
}
#if defined(__AVX2__)
std::cout<<"Builtin symbol present"<<std::endl;
#endif
return 0;
}
并且输出如下-
Builtin methods supports
我是 运行 i7 - 9750h。我的处理器确实支持 AVX2
指令集。
正确的鉴别方法是什么。我的 GCC 版本是 9.3.1
我认为你弄错了。您可以在编译时使用宏检查您是否已将 gcc
配置为使用 AVX2 支持进行编译。内置函数可以在 运行 时检查 CPU 当前 运行 是否支持 AVX2 扩展。
我需要在我的代码中检测 AVX2 支持并做出相应的决定。
我知道两种方法 - __builtin_cpu_supports("avx2")
和 #if defined(__AVX2__)
。现在的问题是一个 returns 正确,另一个错误。
测试代码如下-
int main(){
if(__builtin_cpu_supports("avx2")){
std::cout<< "Builtin methods supports" << std::endl;
}
#if defined(__AVX2__)
std::cout<<"Builtin symbol present"<<std::endl;
#endif
return 0;
}
并且输出如下-
Builtin methods supports
我是 运行 i7 - 9750h。我的处理器确实支持 AVX2
指令集。
正确的鉴别方法是什么。我的 GCC 版本是 9.3.1
我认为你弄错了。您可以在编译时使用宏检查您是否已将 gcc
配置为使用 AVX2 支持进行编译。内置函数可以在 运行 时检查 CPU 当前 运行 是否支持 AVX2 扩展。