首页 > 解决方案 > gcc:在 AMD 上启用 AVX

问题描述

我一直试图让 AVX 正常运行,但我无法编译我的 c++ 项目。我是 C++ 和编译新手,所以我将 CMake 与 CLion 和 GCC 一起使用。

在此处输入图像描述

我知道我的处理器支持 AVX 和 AVX2,我写了一个简单的测试程序:


#include <immintrin.h>
...

    __m256 A{};
    __m256 B{};
    __m256 AB = _mm256_add_ps(A,B);
    
    for(int i = 0; i < 8; i++){
        std::cout << AB[i] << std::endl;
    }

可悲的是,当尝试运行它时,我收到以下错误:

warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
   91 |     __m256 AB = _mm256_add_ps(A,B);
      |                                  ^
In file included from C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/immintrin.h:51,
                 from A:\OneDrive\ProgrammSpeicher\CLionProjects\Koivisto\src_files\main.cpp:85:
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/include/avxintrin.h:147:1: error: inlining failed in call to 'always_inline' '__m256 _mm256_add_ps(__m256, __m256)': target specific option mismatch
  147 | _mm256_add_ps (__m256 __A, __m256 __B)


我假设我需要在我的 CmakeLists.txt 中设置一些标志,但我在网上没有找到任何相关内容。

如果有人可以帮助我,我会很高兴!

问候,芬恩

解决方案

我不得不添加

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")

它会很好地编译。

标签: c++gcccmakeclionavx

解决方案


推荐阅读