Неопределенная ссылка при использовании встроенного
Я хочу проверить SIMD, свойственную Xeon Phi. Поэтому я написал следующий код:
#pragma offload target(mic) in(a:length(N))
#pragma omp parallel for
for(int i=0;i<16;++i){
__m512i p ;
p = _mm512_loadunpackhi_epi64(p, &a[i*10]);
}
При компиляции, icpc
дал мне неопределенную ошибку ссылки
/tmp/icpc3kLMRg.o: In function `main':
./src/test.cc:(.text+0x2e8): undefined reference to `_mm512_extloadunpackhi_epi64'
make: *** [test.cc] Error 1
Есть ли какие-либо другие файлы заголовков, которые будут включены помимо immintrin.h
1 ответ
Решение
Компилятор компилируется как для хоста, так и для xeon phi. Хост не поддерживает функцию, которую вы пытаетесь вызвать, поэтому вам нужно сделать это:
#ifdef __MIC__
#pragma offload target(mic) in(a:length(N))
#pragma omp parallel for
for(int i=0;i<16;++i){
__m512i p ;
p = _mm512_loadunpackhi_epi64(p, &a[i*10]);
}
#else
<do something differnt on the host (or nothing)>
#endif