_mm512_exp_pd 使用 GNU 编译器

_mm512_exp_pd with GNU compiler

以下代码适用于 Intel 编译器(版本:18.0.2),但不适用于 GNU 编译器(版本:6.1.0):

#include <immintrin.h>

double ALIGN array1[8] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};

__m512d a1AVX = _mm512_load_pd(array1);
__m512d exp = _mm512_exp_pd(a1AVX);

错误消息说明如下:error: ‘_mm512_exp_pd’ was not declared in this scope。它来自 SVML library.

我正在使用以下编译器标志:-std=c++11 -march=knl -mtune=knl -fpic -O3 -DNDDEBUG

我在这里错过了编译器标志吗?

gcc 支持英特尔内部函数。但是,_mm512_exp_pd 不是内部函数,而是来自 SVML 库的函数,专用于英特尔编译器。您可以查看英特尔内在函数和 SVML 函数的完整列表 here.