현재 Intel Xeon Phi 코 프로세서에서 기본 모드로 실행중인 C 프로그램을 컴파일하는 데 icc (버전 13.1.0.146)을 사용하고 있습니다.인텔 C 컴파일러 (icc)를 기본 벡터로 벡터화하는 방법은 무엇입니까?
는 다음과 같은 두 가지 코드 조각을 고려
// fragment 1
array[pos] += 1;
array[pos + 1] += 1;
array[pos + 2] += 1;
array[pos + 3] += 1;
// fragment 2
for (int i = 0; i < 4; ++i)
array[i] += 1;
불행하게도, 단지 루프가 자동 벡터화됩니다. 그러나 x86 플랫폼 용으로 컴파일하면 icc는 "언 롤링"버전을 벡터 라이 제이션합니다.
Xeon Phi 용으로 컴파일 할 때 icc가 기본 블록을 벡터화하도록 지시하는 방법이 있습니까?
도움을 주시면 감사하겠습니다. 미리 감사드립니다!
컴파일러가 일반적으로 낮은 작업량으로 인해 위에 묘사 된 코드를 벡터화하지 않기로 결정했는지 완전히 이해할 것입니다. 그러나, 나는 언 롤링 된 버전이 그렇지 않은데 왜 루프가 ("언 롤링 된"버전과 똑같은 것을!) 벡터화되었는지 이해할 수 없습니다. 하지만, 지금까지 프로젝트가 완료되었습니다.) – pkreutzer