2014-02-17 3 views
2

내가 수동으로수동 내장 함수 또는 지침

_k_mask = _mm512_int2mask(0x7ff); // 0000 0111 1111 1111 
_tempux2_512 = _mm512_mask_loadunpacklo_ps(_tempux2_512,_k_mask, &u_x[POSITION_INDEX_X(k,j,i-5)]); 
_tempux2_512 = _mm512_mask_loadunpackhi_ps(_tempux2_512,_k_mask, &u_x[POSITION_INDEX_X(k,j,i-5)]+16); 

그리고 컴파일러 ICPC 이러한 오류 메시지를 제공합니다 아래의 내장 함수를 내 코드는 MIC의 SIMD 연산의 관리 및 작성하고자으로 인텔 MIC SIMD 연산을 제어 할 수 있습니다.

test.cpp:574: undefined reference to `_mm512_mask_extloadunpacklo_ps' 
test.cpp:575: undefined reference to `_mm512_mask_extloadunpackhi_ps' 

내가 _mm512_mask_load_ps을 사용하는 경우 컴파일 할 괜찮을 것이다, 그러나 내 기억은 런타임 오류가 발생합니다 _mm512_mask_load_ps을 사용하므로 64 바이트 정렬 할 수 없습니다.

은 그럼 수동으로

MOV rax,0x7ff 
KMOV k1,rax 
VMOVAPS zmm1 {k1}, [data_512_1] 
VMOVAPS zmm2 {k1}, [data_512_2] 
VMULPS zmm3 {k1}, zmm2 zmm1 
VMOVAPS [data_512_3] {k1}, zmm3 

그리고 컴파일러 ICPC 쇼가 나는, 정말 감사 드리겠습니다 어셈블리 언어의 초보자 해요 다시

test_simd.cpp(30): (col. 10) error: Unknown opcode KMOV in asm instruction . 
test_simd.cpp(33): (col. 10) error: Syntax error ZMM1 in asm instruction vmulps. 

에러와 같은 인라인 ASM 블록을 작성하는 시도 누구든지 icpc에서 참조를 찾지 못했고 해결 방법을 말할 수 있거나 나에게 몇 가지 자료를 추천 할 수 있다면. (필자는 인텔 ® 제온 피 코 프로세서 명령어 세트 아키텍처 참조 설명서를 읽었지 만 아직 쓰는 방법을 모르겠습니다.)

고마워요.

+0

'-mmic' 옵션으로 컴파일해야합니다. –

답변

3

향후 데스크톱 프로세서 및 Xeon Phi 코 프로세서에 구현 될 명령어 세트를 대상으로하는 것으로 보입니다. 현재의 제온 피 (Xeon Phi)는 일반적으로 KNCNI 또는 K1OM이라고하는 다른 명령어 세트를 사용합니다.이 명령어 세트는 비슷하지만 AVX-512과 호환되지 않습니다 (특히 AVX-512은 정렬되지 않은로드 명령어를 지원하고 KNCNI은 load-unpack-lo + 동일한 목적을위한 load-unpack-hi 지침). KNCNI을 컴파일하려면 Intel 컴파일러에 -mmic 옵션을 사용해야합니다 (컴파일러 대상을 x86-64 ISA로 만드는 -m64 옵션의 대안으로 생각하십시오. 그 결과 코드는 일반 x86-64 프로세서에서 실행되지 않으며 그 반대의 경우도 마찬가지입니다). AFAIK AVX-512 세트는 인텔 컴파일러의 공개 릴리스에서 아직 지원되지 않지만 새로운 -x 옵션을 사용할 가능성이 큽니다.

+0

답장을 보내 주셔서 감사합니다. 마이크 오프로드 모듈을 사용하고 싶습니다. 프로그램은 CPU에서 실행되지만 일부는 보조 프로세서에서 실행됩니다. _mm512_mask_loadunpacklo_ps는 언급 한 명령어의 ntrinsics 여야합니다. 올바르게 컴파일하는 방법이 있습니까? 나는 프로그램이 CPU 중 하나에서 실행해야합니다 .... http://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/index.htm#GUID-21A7AB61-DE84- 410A-8211-ADE9533FACE1.htm – user3317622

+0

그렇다면'__MIC__'가 정의 된 경우에만 제온 피 내장 함수를 사용해야합니다 –

+0

고마워요! 나는 #ifndef __MIC__을 사용하고 싶지만, 내 파일에는 #ifdef __MIC__이 있습니다. 매우 감사합니다!! – user3317622