2017-04-26 18 views
2

gcc를 대신 사용하여 icpc 및 mkl 수학 라이브러리로 컴파일 된 큰 코드를 컴파일하려고합니다.gcc 헤더 오류 : '_mm256_set_m128d'가이 범위에서 선언되지 않았습니다.

다음은 AVX가 필요한 코드입니다.

#include <immintrin.h> 
#include <stdint.h> 
#include <math.h> 
. 
. 

_mm256_set_m128d( _mm256_extractf128_pd(t2, 0) + _mm256_extractf128_pd(t2, 1), 
             _mm256_extractf128_pd(t1, 0) + _mm256_extractf128_pd(t1, 1)); 

고급 벡터화를 사용하도록 설정 한 게시물과 같이 컴파일 할 때 -mavx 플래그를 사용할 수 있습니다. _mm256_set_m128d는 immintrin.h 또는 gcc 포함 파일 (버전 5.3)에 정의되어 있지 않습니다.

Intel 컴파일러와 함께 제공되는 immintrin.h 헤더에서 인텔 헤더에 사용할 수있는 것으로 나타났습니다.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? 감사합니다.

+1

이와 비슷한 것을 발견하면 gcc의 bugzilla에 버그 보고서를 보내주십시오. –

+1

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80582 –

답변

1

당신은 다음과 같이 자신의 매크로를 정의 할 수 있습니다 : 그것은 단지 과정의 GCC에 적합한 #ifdef/#endif 내부

#define _mm256_set_m128d(vh, vl) \ 
     _mm256_insertf128_pd(_mm256_castpd128_pd256(vl), (vh), 1) 

브라켓을 정의 그래서 것이다.