【发布时间】:2019-09-05 12:33:14
【问题描述】:
我的编译器支持 avx2,我在 C++ 标志中添加了-mavx2,但是
__AVX2__ 宏未在我的代码中定义。
#ifdef __AVX2__
#include <immintrin.h>
#endif
似乎在代码中被禁用。
编辑:
我的编译器版本是:
g++ (Ubuntu 8.3.0-6ubuntu1) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
【问题讨论】:
-
-mavx2应该与 gcc-4.7 或更高版本一起使用:godbolt.org/z/aEZQez 你是在使用它还是-march=native?在后一种情况下,你确定你的 CPU 支持 AVX2 吗? -
谢谢,我正在使用
-mavx2。是的,做cat /proc/cpuinfo显示支持avx2。可悲的是,我必须手动检查 cpuinfo,然后定义这些宏。 -
你能显示
gcc --version(或g++ --version)的输出吗? -
完整的编译器命令行是什么?以及您是如何确定未定义
__AVX2__的? -
@FlorianWeimer 我正在使用 cmake 生成 make 文件和编译器命令。我知道
__AVX2__没有定义,因为我的编辑器 Eclipse CDT 使代码变灰。
标签: gcc g++ eclipse-cdt intrinsics avx2