gpt4 book ai didi

c++ - 在 AVX 上使用 AVX2/AVX512 内在函数编译 C++ 代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:57 42 4
gpt4 key购买 nike

我的生产代码具有针对各种 SIMD 指令集(包括 AVX、AVX2 和 AVX512)实现的内核。代码可以在目标机器上为目标机器编译,类似./configure --enable-proc=AVX CXXFLAGS="-mavx"

这在公开 AVX 内在函数的 Travis CI 上也很有效。我想至少编译 AVX2 和 AVX512 版本,以查看是否所有文件都已 checkin 。但似乎为不同的 ISA 编译并不那么容易。

一个简单的AVX2测试程序:

#include <immintrin.h>

int main(int argc, char **argv) {
__m256d a;
__m256d b;
__m256d c;

_mm256_fnmadd_pd(a, b, c);
}

在我的 AVX 机器(Intel Core i5-2520M)上,它无法编译:

$ g++ -Wall -Wpedantic --std=c++11 cpp.cpp -mavx2
In file included from /usr/lib/gcc/x86_64-redhat-linux/6.3.1/include/immintrin.h:79:0,
from cpp.cpp:3:
/usr/lib/gcc/x86_64-redhat-linux/6.3.1/include/fmaintrin.h:143:1: error: inlining failed in call to always_inline '__m256d _mm256_fnmadd_pd(__m256d, __m256d, __m256d)': target specific option mismatch
_mm256_fnmadd_pd (__m256d __A, __m256d __B, __m256d __C)
^~~~~~~~~~~~~~~~

有什么方法可以编译代码吗?我不关心运行,我只想要一个冒烟测试。

最佳答案

提供 -march=sandybridge-march=haswell-march=knl 可启用翻译代码所需的所有功能。

关于c++ - 在 AVX 上使用 AVX2/AVX512 内在函数编译 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43613577/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com