Объявите simd, используя exp из math.h на TDM-GCC 4.92

Мне нужно векторизовать цикл с помощью вызова функции exp в math.h. Тем не менее, компиляция файла с этим

#include <math.h>
#include <omp.h>

#pragma omp declare simd
extern double __cdecl exp(double);

кажется невозможным, так как я получаю следующую ошибку

D:\Dropbox\OpenMP>gcc -O3 -fopenmp testSIMD.c
C:\Users\JEPPED~1\AppData\Local\Temp\ccfKxQRJ.o:testSIMD.c:(.text+0x198): undefi
ned reference to `_ZGVcN4v_exp'
C:\Users\JEPPED~1\AppData\Local\Temp\ccfKxQRJ.o:testSIMD.c:(.text+0x348): undefi
ned reference to `_ZGVdN4v_exp'
C:\Users\JEPPED~1\AppData\Local\Temp\ccfKxQRJ.o:testSIMD.c:(.text.startup+0x26f)
: undefined reference to `_ZGVbN2v_exp'
C:\Users\JEPPED~1\AppData\Local\Temp\ccfKxQRJ.o:testSIMD.c:(.text.startup+0x286)
: undefined reference to `_ZGVbN2v_exp'
C:\Users\JEPPED~1\AppData\Local\Temp\ccfKxQRJ.o:testSIMD.c:(.text.startup+0x3af)
: undefined reference to `_ZGVbN2v_exp'
C:\Users\JEPPED~1\AppData\Local\Temp\ccfKxQRJ.o:testSIMD.c:(.text.startup+0x3c6)
: undefined reference to `_ZGVbN2v_exp'
collect2.exe: error: ld returned 1 exit status

Я использую TDM-GCC 4.9.2 на компьютере с Windows 7.

В чем проблема? Какие-либо решения?

1 ответ

Вам нужно добавить математическую библиотеку в список библиотек, чтобы связать их с:

gcc -O3 -fopenmp testSIMD.c -lm

В отличие от других библиотек, это не добавлено по умолчанию.

Но я не думаю, что это поможет вам. #pragma omp declare simd применяется к новым объявлениям функций, а не к существующим библиотечным функциям. Возможно, вам придется написать свою собственную версию exp(),

Другие вопросы по тегам